123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730 |
- // Copyright 2021 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.cloud.orchestration.airflow.service.v1;
- import "google/api/annotations.proto";
- import "google/api/client.proto";
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- import "google/longrunning/operations.proto";
- import "google/protobuf/field_mask.proto";
- import "google/protobuf/timestamp.proto";
- option go_package = "google.golang.org/genproto/googleapis/cloud/orchestration/airflow/service/v1;service";
- option java_multiple_files = true;
- option java_package = "com.google.cloud.orchestration.airflow.service.v1";
- // Managed Apache Airflow Environments.
- service Environments {
- option (google.api.default_host) = "composer.googleapis.com";
- option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
- // Create a new environment.
- rpc CreateEnvironment(CreateEnvironmentRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*}/environments"
- body: "environment"
- };
- option (google.api.method_signature) = "parent,environment";
- option (google.longrunning.operation_info) = {
- response_type: "Environment"
- metadata_type: "google.cloud.orchestration.airflow.service.v1.OperationMetadata"
- };
- }
- // Get an existing environment.
- rpc GetEnvironment(GetEnvironmentRequest) returns (Environment) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/environments/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // List environments.
- rpc ListEnvironments(ListEnvironmentsRequest) returns (ListEnvironmentsResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*}/environments"
- };
- option (google.api.method_signature) = "parent";
- }
- // Update an environment.
- rpc UpdateEnvironment(UpdateEnvironmentRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{name=projects/*/locations/*/environments/*}"
- body: "environment"
- };
- option (google.api.method_signature) = "name,environment,update_mask";
- option (google.longrunning.operation_info) = {
- response_type: "Environment"
- metadata_type: "google.cloud.orchestration.airflow.service.v1.OperationMetadata"
- };
- }
- // Delete an environment.
- rpc DeleteEnvironment(DeleteEnvironmentRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1/{name=projects/*/locations/*/environments/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "google.protobuf.Empty"
- metadata_type: "google.cloud.orchestration.airflow.service.v1.OperationMetadata"
- };
- }
- }
- // Create a new environment.
- message CreateEnvironmentRequest {
- // The parent must be of the form
- // "projects/{projectId}/locations/{locationId}".
- string parent = 1;
- // The environment to create.
- Environment environment = 2;
- }
- // Get an environment.
- message GetEnvironmentRequest {
- // The resource name of the environment to get, in the form:
- // "projects/{projectId}/locations/{locationId}/environments/{environmentId}"
- string name = 1;
- }
- // List environments in a project and location.
- message ListEnvironmentsRequest {
- // List environments in the given project and location, in the form:
- // "projects/{projectId}/locations/{locationId}"
- string parent = 1;
- // The maximum number of environments to return.
- int32 page_size = 2;
- // The next_page_token value returned from a previous List request, if any.
- string page_token = 3;
- }
- // The environments in a project and location.
- message ListEnvironmentsResponse {
- // The list of environments returned by a ListEnvironmentsRequest.
- repeated Environment environments = 1;
- // The page token used to query for the next page if one exists.
- string next_page_token = 2;
- }
- // Delete an environment.
- message DeleteEnvironmentRequest {
- // The environment to delete, in the form:
- // "projects/{projectId}/locations/{locationId}/environments/{environmentId}"
- string name = 1;
- }
- // Update an environment.
- message UpdateEnvironmentRequest {
- // The relative resource name of the environment to update, in the form:
- // "projects/{projectId}/locations/{locationId}/environments/{environmentId}"
- string name = 2;
- // A patch environment. Fields specified by the `updateMask` will be copied
- // from the patch environment into the environment under update.
- Environment environment = 1;
- // Required. A comma-separated list of paths, relative to `Environment`, of
- // fields to update.
- // For example, to set the version of scikit-learn to install in the
- // environment to 0.19.0 and to remove an existing installation of
- // numpy, the `updateMask` parameter would include the following two
- // `paths` values: "config.softwareConfig.pypiPackages.scikit-learn" and
- // "config.softwareConfig.pypiPackages.numpy". The included patch
- // environment would specify the scikit-learn version as follows:
- //
- // {
- // "config":{
- // "softwareConfig":{
- // "pypiPackages":{
- // "scikit-learn":"==0.19.0"
- // }
- // }
- // }
- // }
- //
- // Note that in the above example, any existing PyPI packages
- // other than scikit-learn and numpy will be unaffected.
- //
- // Only one update type may be included in a single request's `updateMask`.
- // For example, one cannot update both the PyPI packages and
- // labels in the same request. However, it is possible to update multiple
- // members of a map field simultaneously in the same request. For example,
- // to set the labels "label1" and "label2" while clearing "label3" (assuming
- // it already exists), one can
- // provide the paths "labels.label1", "labels.label2", and "labels.label3"
- // and populate the patch environment as follows:
- //
- // {
- // "labels":{
- // "label1":"new-label1-value"
- // "label2":"new-label2-value"
- // }
- // }
- //
- // Note that in the above example, any existing labels that are not
- // included in the `updateMask` will be unaffected.
- //
- // It is also possible to replace an entire map field by providing the
- // map field's path in the `updateMask`. The new value of the field will
- // be that which is provided in the patch environment. For example, to
- // delete all pre-existing user-specified PyPI packages and
- // install botocore at version 1.7.14, the `updateMask` would contain
- // the path "config.softwareConfig.pypiPackages", and
- // the patch environment would be the following:
- //
- // {
- // "config":{
- // "softwareConfig":{
- // "pypiPackages":{
- // "botocore":"==1.7.14"
- // }
- // }
- // }
- // }
- //
- // **Note:** Only the following fields can be updated:
- //
- // * `config.softwareConfig.pypiPackages`
- // * Replace all custom custom PyPI packages. If a replacement
- // package map is not included in `environment`, all custom
- // PyPI packages are cleared. It is an error to provide both
- // this mask and a mask specifying an individual package.
- // * `config.softwareConfig.pypiPackages.`packagename
- // * Update the custom PyPI package *packagename*,
- // preserving other packages. To delete the package, include it in
- // `updateMask`, and omit the mapping for it in
- // `environment.config.softwareConfig.pypiPackages`. It is an error
- // to provide both a mask of this form and the
- // `config.softwareConfig.pypiPackages` mask.
- // * `labels`
- // * Replace all environment labels. If a replacement labels map is not
- // included in `environment`, all labels are cleared. It is an error to
- // provide both this mask and a mask specifying one or more individual
- // labels.
- // * `labels.`labelName
- // * Set the label named *labelName*, while preserving other
- // labels. To delete the label, include it in `updateMask` and omit its
- // mapping in `environment.labels`. It is an error to provide both a
- // mask of this form and the `labels` mask.
- // * `config.nodeCount`
- // * Horizontally scale the number of nodes in the environment. An integer
- // greater than or equal to 3 must be provided in the `config.nodeCount`
- // field.
- // * `config.webServerNetworkAccessControl`
- // * Replace the environment's current `WebServerNetworkAccessControl`.
- // * `config.databaseConfig`
- // * Replace the environment's current `DatabaseConfig`.
- // * `config.webServerConfig`
- // * Replace the environment's current `WebServerConfig`.
- // * `config.softwareConfig.airflowConfigOverrides`
- // * Replace all Apache Airflow config overrides. If a replacement config
- // overrides map is not included in `environment`, all config overrides
- // are cleared.
- // It is an error to provide both this mask and a mask specifying one or
- // more individual config overrides.
- // * `config.softwareConfig.airflowConfigOverrides.`section-name
- // * Override the Apache Airflow config property *name* in the
- // section named *section*, preserving other properties. To
- // delete the property override, include it in `updateMask` and omit its
- // mapping in
- // `environment.config.softwareConfig.airflowConfigOverrides`.
- // It is an error to provide both a mask of this form and the
- // `config.softwareConfig.airflowConfigOverrides` mask.
- // * `config.softwareConfig.envVariables`
- // * Replace all environment variables. If a replacement environment
- // variable map is not included in `environment`, all custom environment
- // variables are cleared.
- // It is an error to provide both this mask and a mask specifying one or
- // more individual environment variables.
- google.protobuf.FieldMask update_mask = 3;
- }
- // Configuration information for an environment.
- message EnvironmentConfig {
- // Output only. The Kubernetes Engine cluster used to run this environment.
- string gke_cluster = 1;
- // Output only. The Cloud Storage prefix of the DAGs for this environment. Although Cloud
- // Storage objects reside in a flat namespace, a hierarchical file tree
- // can be simulated using "/"-delimited object name prefixes. DAG objects for
- // this environment reside in a simulated directory with the given prefix.
- string dag_gcs_prefix = 2;
- // The number of nodes in the Kubernetes Engine cluster that will be
- // used to run this environment.
- int32 node_count = 3;
- // The configuration settings for software inside the environment.
- SoftwareConfig software_config = 4;
- // The configuration used for the Kubernetes Engine cluster.
- NodeConfig node_config = 5;
- // The configuration used for the Private IP Cloud Composer environment.
- PrivateEnvironmentConfig private_environment_config = 7;
- // Optional. The network-level access control policy for the Airflow web server. If
- // unspecified, no network-level access restrictions will be applied.
- WebServerNetworkAccessControl web_server_network_access_control = 8 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The configuration settings for Cloud SQL instance used internally by Apache
- // Airflow software.
- DatabaseConfig database_config = 9 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The configuration settings for the Airflow web server App Engine instance.
- WebServerConfig web_server_config = 10 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The encryption options for the Cloud Composer environment
- // and its dependencies. Cannot be updated.
- EncryptionConfig encryption_config = 11 [(google.api.field_behavior) = OPTIONAL];
- // Output only. The URI of the Apache Airflow Web UI hosted within this environment (see
- // [Airflow web
- // interface](/composer/docs/how-to/accessing/airflow-web-interface)).
- string airflow_uri = 6;
- }
- // Network-level access control policy for the Airflow web server.
- message WebServerNetworkAccessControl {
- // Allowed IP range with user-provided description.
- message AllowedIpRange {
- // IP address or range, defined using CIDR notation, of requests that this
- // rule applies to.
- // Examples: `192.168.1.1` or `192.168.0.0/16` or `2001:db8::/32`
- // or `2001:0db8:0000:0042:0000:8a2e:0370:7334`.
- //
- // IP range prefixes should be properly truncated. For example,
- // `1.2.3.4/24` should be truncated to `1.2.3.0/24`. Similarly, for IPv6,
- // `2001:db8::1/32` should be truncated to `2001:db8::/32`.
- string value = 1;
- // Optional. User-provided description. It must contain at most 300 characters.
- string description = 2 [(google.api.field_behavior) = OPTIONAL];
- }
- // A collection of allowed IP ranges with descriptions.
- repeated AllowedIpRange allowed_ip_ranges = 1;
- }
- // The configuration of Cloud SQL instance that is used by the Apache Airflow
- // software.
- message DatabaseConfig {
- // Optional. Cloud SQL machine type used by Airflow database.
- // It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8
- // or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.
- string machine_type = 1 [(google.api.field_behavior) = OPTIONAL];
- }
- // The configuration settings for the Airflow web server App Engine instance.
- message WebServerConfig {
- // Optional. Machine type on which Airflow web server is running.
- // It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or
- // composer-n1-webserver-8.
- // If not specified, composer-n1-webserver-2 will be used.
- // Value custom is returned only in response, if Airflow web server parameters
- // were manually changed to a non-standard values.
- string machine_type = 1 [(google.api.field_behavior) = OPTIONAL];
- }
- // The encryption options for the Cloud Composer environment
- // and its dependencies.
- message EncryptionConfig {
- // Optional. Customer-managed Encryption Key available through Google's Key Management
- // Service. Cannot be updated.
- // If not specified, Google-managed key will be used.
- string kms_key_name = 1 [(google.api.field_behavior) = OPTIONAL];
- }
- // Specifies the selection and configuration of software inside the environment.
- message SoftwareConfig {
- // The version of the software running in the environment.
- // This encapsulates both the version of Cloud Composer functionality and the
- // version of Apache Airflow. It must match the regular expression
- // `composer-([0-9]+\.[0-9]+\.[0-9]+|latest)-airflow-[0-9]+\.[0-9]+(\.[0-9]+.*)?`.
- // When used as input, the server also checks if the provided version is
- // supported and denies the request for an unsupported version.
- //
- // The Cloud Composer portion of the version is a
- // [semantic version](https://semver.org) or `latest`. When the patch version
- // is omitted, the current Cloud Composer patch version is selected.
- // When `latest` is provided instead of an explicit version number,
- // the server replaces `latest` with the current Cloud Composer version
- // and stores that version number in the same field.
- //
- // The portion of the image version that follows *airflow-* is an
- // official Apache Airflow repository
- // [release name](https://github.com/apache/incubator-airflow/releases).
- //
- // See also [Version
- // List](/composer/docs/concepts/versioning/composer-versions).
- string image_version = 1;
- // Optional. Apache Airflow configuration properties to override.
- //
- // Property keys contain the section and property names, separated by a
- // hyphen, for example "core-dags_are_paused_at_creation". Section names must
- // not contain hyphens ("-"), opening square brackets ("["), or closing
- // square brackets ("]"). The property name must not be empty and must not
- // contain an equals sign ("=") or semicolon (";"). Section and property names
- // must not contain a period ("."). Apache Airflow configuration property
- // names must be written in
- // [snake_case](https://en.wikipedia.org/wiki/Snake_case). Property values can
- // contain any character, and can be written in any lower/upper case format.
- //
- // Certain Apache Airflow configuration property values are
- // [blocked](/composer/docs/concepts/airflow-configurations),
- // and cannot be overridden.
- map<string, string> airflow_config_overrides = 2;
- // Optional. Custom Python Package Index (PyPI) packages to be installed in
- // the environment.
- //
- // Keys refer to the lowercase package name such as "numpy"
- // and values are the lowercase extras and version specifier such as
- // "==1.12.0", "[devel,gcp_api]", or "[devel]>=1.8.2, <1.9.2". To specify a
- // package without pinning it to a version specifier, use the empty string as
- // the value.
- map<string, string> pypi_packages = 3;
- // Optional. Additional environment variables to provide to the Apache Airflow
- // scheduler, worker, and webserver processes.
- //
- // Environment variable names must match the regular expression
- // `[a-zA-Z_][a-zA-Z0-9_]*`. They cannot specify Apache Airflow
- // software configuration overrides (they cannot match the regular expression
- // `AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+`), and they cannot match any of the
- // following reserved names:
- //
- // * `AIRFLOW_HOME`
- // * `C_FORCE_ROOT`
- // * `CONTAINER_NAME`
- // * `DAGS_FOLDER`
- // * `GCP_PROJECT`
- // * `GCS_BUCKET`
- // * `GKE_CLUSTER_NAME`
- // * `SQL_DATABASE`
- // * `SQL_INSTANCE`
- // * `SQL_PASSWORD`
- // * `SQL_PROJECT`
- // * `SQL_REGION`
- // * `SQL_USER`
- map<string, string> env_variables = 4;
- // Optional. The major version of Python used to run the Apache Airflow
- // scheduler, worker, and webserver processes.
- //
- // Can be set to '2' or '3'. If not specified, the default is '3'. Cannot be
- // updated.
- string python_version = 6;
- }
- // Configuration for controlling how IPs are allocated in the
- // GKE cluster running the Apache Airflow software.
- message IPAllocationPolicy {
- // Optional. Whether or not to enable Alias IPs in the GKE cluster.
- // If `true`, a VPC-native cluster is created.
- bool use_ip_aliases = 1 [(google.api.field_behavior) = OPTIONAL];
- // Configuration of allocating IP addresses for pods in the GKE cluster.
- oneof cluster_ip_allocation {
- // Optional. The name of the GKE cluster's secondary range used to allocate
- // IP addresses to pods.
- //
- // This field is applicable only when `use_ip_aliases` is true.
- string cluster_secondary_range_name = 2 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The IP address range used to allocate IP addresses to pods in
- // the GKE cluster.
- //
- // This field is applicable only when `use_ip_aliases` is true.
- //
- // Set to blank to have GKE choose a range with the default size.
- //
- // Set to /netmask (e.g. `/14`) to have GKE choose a range with a specific
- // netmask.
- //
- // Set to a
- // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
- // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
- // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
- // to use.
- string cluster_ipv4_cidr_block = 4 [(google.api.field_behavior) = OPTIONAL];
- }
- // Configuration of allocating IP addresses for services in the GKE cluster.
- oneof services_ip_allocation {
- // Optional. The name of the services' secondary range used to allocate
- // IP addresses to the GKE cluster.
- //
- // This field is applicable only when `use_ip_aliases` is true.
- string services_secondary_range_name = 3 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The IP address range of the services IP addresses in this
- // GKE cluster.
- //
- // This field is applicable only when `use_ip_aliases` is true.
- //
- // Set to blank to have GKE choose a range with the default size.
- //
- // Set to /netmask (e.g. `/14`) to have GKE choose a range with a specific
- // netmask.
- //
- // Set to a
- // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
- // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
- // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
- // to use.
- string services_ipv4_cidr_block = 5 [(google.api.field_behavior) = OPTIONAL];
- }
- }
- // The configuration information for the Kubernetes Engine nodes running
- // the Apache Airflow software.
- message NodeConfig {
- // Optional. The Compute Engine [zone](/compute/docs/regions-zones) in which
- // to deploy the VMs used to run the Apache Airflow software, specified as a
- // [relative resource
- // name](/apis/design/resource_names#relative_resource_name). For example:
- // "projects/{projectId}/zones/{zoneId}".
- //
- // This `location` must belong to the enclosing environment's project and
- // location. If both this field and `nodeConfig.machineType` are specified,
- // `nodeConfig.machineType` must belong to this `location`; if both are
- // unspecified, the service will pick a zone in the Compute Engine region
- // corresponding to the Cloud Composer location, and propagate that choice to
- // both fields. If only one field (`location` or `nodeConfig.machineType`) is
- // specified, the location information from the specified field will be
- // propagated to the unspecified field.
- string location = 1;
- // Optional. The Compute Engine
- // [machine type](/compute/docs/machine-types) used for cluster instances,
- // specified as a
- // [relative resource
- // name](/apis/design/resource_names#relative_resource_name). For example:
- // "projects/{projectId}/zones/{zoneId}/machineTypes/{machineTypeId}".
- //
- // The `machineType` must belong to the enclosing environment's project and
- // location. If both this field and `nodeConfig.location` are specified,
- // this `machineType` must belong to the `nodeConfig.location`; if both are
- // unspecified, the service will pick a zone in the Compute Engine region
- // corresponding to the Cloud Composer location, and propagate that choice to
- // both fields. If exactly one of this field and `nodeConfig.location` is
- // specified, the location information from the specified field will be
- // propagated to the unspecified field.
- //
- // The `machineTypeId` must not be a [shared-core machine
- // type](/compute/docs/machine-types#sharedcore).
- //
- // If this field is unspecified, the `machineTypeId` defaults
- // to "n1-standard-1".
- string machine_type = 2;
- // Optional. The Compute Engine network to be used for machine
- // communications, specified as a
- // [relative resource
- // name](/apis/design/resource_names#relative_resource_name). For example:
- // "projects/{projectId}/global/networks/{networkId}".
- //
- // If unspecified, the "default" network ID in the environment's project is
- // used. If a [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets)
- // is provided, `nodeConfig.subnetwork` must also be provided. For
- // [Shared VPC](/vpc/docs/shared-vpc) subnetwork requirements, see
- // `nodeConfig.subnetwork`.
- string network = 3;
- // Optional. The Compute Engine subnetwork to be used for machine
- // communications, specified as a
- // [relative resource
- // name](/apis/design/resource_names#relative_resource_name). For example:
- // "projects/{projectId}/regions/{regionId}/subnetworks/{subnetworkId}"
- //
- // If a subnetwork is provided, `nodeConfig.network` must also be provided,
- // and the subnetwork must belong to the enclosing environment's project and
- // location.
- string subnetwork = 4;
- // Optional. The disk size in GB used for node VMs. Minimum size is 20GB.
- // If unspecified, defaults to 100GB. Cannot be updated.
- int32 disk_size_gb = 5;
- // Optional. The set of Google API scopes to be made available on all
- // node VMs. If `oauth_scopes` is empty, defaults to
- // ["https://www.googleapis.com/auth/cloud-platform"]. Cannot be updated.
- repeated string oauth_scopes = 6;
- // Optional. The Google Cloud Platform Service Account to be used by the node
- // VMs. If a service account is not specified, the "default" Compute Engine
- // service account is used. Cannot be updated.
- string service_account = 7;
- // Optional. The list of instance tags applied to all node VMs. Tags are used
- // to identify valid sources or targets for network firewalls. Each tag within
- // the list must comply with [RFC1035](https://www.ietf.org/rfc/rfc1035.txt).
- // Cannot be updated.
- repeated string tags = 8;
- // Optional. The configuration for controlling how IPs are allocated in the GKE cluster.
- IPAllocationPolicy ip_allocation_policy = 9 [(google.api.field_behavior) = OPTIONAL];
- }
- // Configuration options for the private GKE cluster in a Cloud Composer
- // environment.
- message PrivateClusterConfig {
- // Optional. If `true`, access to the public endpoint of the GKE cluster is
- // denied.
- bool enable_private_endpoint = 1 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The CIDR block from which IPv4 range for GKE master will be reserved. If
- // left blank, the default value of '172.16.0.0/23' is used.
- string master_ipv4_cidr_block = 2 [(google.api.field_behavior) = OPTIONAL];
- // Output only. The IP range in CIDR notation to use for the hosted master network. This
- // range is used for assigning internal IP addresses to the GKE cluster
- // master or set of masters and to the internal load balancer virtual IP.
- // This range must not overlap with any other ranges in use
- // within the cluster's network.
- string master_ipv4_reserved_range = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
- }
- // The configuration information for configuring a Private IP Cloud Composer
- // environment.
- message PrivateEnvironmentConfig {
- // Optional. If `true`, a Private IP Cloud Composer environment is created.
- // If this field is set to true, `IPAllocationPolicy.use_ip_aliases` must be
- // set to true.
- bool enable_private_environment = 1 [(google.api.field_behavior) = OPTIONAL];
- // Optional. Configuration for the private GKE cluster for a Private IP
- // Cloud Composer environment.
- PrivateClusterConfig private_cluster_config = 2 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The CIDR block from which IP range for web server will be reserved. Needs
- // to be disjoint from `private_cluster_config.master_ipv4_cidr_block` and
- // `cloud_sql_ipv4_cidr_block`.
- string web_server_ipv4_cidr_block = 3 [(google.api.field_behavior) = OPTIONAL];
- // Optional. The CIDR block from which IP range in tenant project will be reserved for
- // Cloud SQL. Needs to be disjoint from `web_server_ipv4_cidr_block`.
- string cloud_sql_ipv4_cidr_block = 4 [(google.api.field_behavior) = OPTIONAL];
- // Output only. The IP range reserved for the tenant project's App Engine VMs.
- string web_server_ipv4_reserved_range = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
- }
- // An environment for running orchestration tasks.
- message Environment {
- option (google.api.resource) = {
- type: "composer.googleapis.com/Environment"
- pattern: "projects/{project}/locations/{location}/environments/{environment}"
- };
- // State of the environment.
- enum State {
- // The state of the environment is unknown.
- STATE_UNSPECIFIED = 0;
- // The environment is in the process of being created.
- CREATING = 1;
- // The environment is currently running and healthy. It is ready for use.
- RUNNING = 2;
- // The environment is being updated. It remains usable but cannot receive
- // additional update requests or be deleted at this time.
- UPDATING = 3;
- // The environment is undergoing deletion. It cannot be used.
- DELETING = 4;
- // The environment has encountered an error and cannot be used.
- ERROR = 5;
- }
- // The resource name of the environment, in the form:
- // "projects/{projectId}/locations/{locationId}/environments/{environmentId}"
- //
- // EnvironmentId must start with a lowercase letter followed by up to 63
- // lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
- string name = 1;
- // Configuration parameters for this environment.
- EnvironmentConfig config = 2;
- // Output only. The UUID (Universally Unique IDentifier) associated with this environment.
- // This value is generated when the environment is created.
- string uuid = 3;
- // The current state of the environment.
- State state = 4;
- // Output only. The time at which this environment was created.
- google.protobuf.Timestamp create_time = 5;
- // Output only. The time at which this environment was last modified.
- google.protobuf.Timestamp update_time = 6;
- // Optional. User-defined labels for this environment.
- // The labels map can contain no more than 64 entries. Entries of the labels
- // map are UTF8 strings that comply with the following restrictions:
- //
- // * Keys must conform to regexp: [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}
- // * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63}
- // * Both keys and values are additionally constrained to be <= 128 bytes in
- // size.
- map<string, string> labels = 7;
- }
- // Message containing information about the result of an upgrade check
- // operation.
- message CheckUpgradeResponse {
- // Whether there were python modules conflict during image build.
- enum ConflictResult {
- // It is unknown whether build had conflicts or not.
- CONFLICT_RESULT_UNSPECIFIED = 0;
- // There were python packages conflicts.
- CONFLICT = 1;
- // There were no python packages conflicts.
- NO_CONFLICT = 2;
- }
- // Output only. Url for a docker build log of an upgraded image.
- string build_log_uri = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Output only. Whether build has succeeded or failed on modules conflicts.
- ConflictResult contains_pypi_modules_conflict = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Output only. Extract from a docker image build log containing information about pypi
- // modules conflicts.
- string pypi_conflict_build_log_extract = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Composer image for which the build was happening.
- string image_version = 5;
- // Pypi dependencies specified in the environment configuration, at the time
- // when the build was triggered.
- map<string, string> pypi_dependencies = 6;
- }
|