diff --git a/README.md b/README.md index 831fb284e..14d9686aa 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ to help you get it set up. To get started, you'll need: -* Ruby 2.6.0 +* Ruby 3.1.0 * You can use `rbenv` to manage your Ruby version(s) * [`Bundler`](https://github.com/bundler/bundler) * This can be installed with `gem install bundler` diff --git a/mmv1/.ruby-version b/mmv1/.ruby-version index e70b4523a..fd2a01863 100644 --- a/mmv1/.ruby-version +++ b/mmv1/.ruby-version @@ -1 +1 @@ -2.6.0 +3.1.0 diff --git a/mmv1/Gemfile.lock b/mmv1/Gemfile.lock index 845263715..04919df01 100644 --- a/mmv1/Gemfile.lock +++ b/mmv1/Gemfile.lock @@ -1,66 +1,90 @@ GEM remote: https://rubygems.org/ specs: - activesupport (6.1.7.5) + activesupport (7.1.2) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) - ast (2.4.0) - binding_of_caller (0.8.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + base64 (0.2.0) + bigdecimal (3.1.4) + binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) concurrent-ruby (1.2.2) - debug_inspector (0.0.3) - diff-lcs (1.3) - faraday (0.15.4) - multipart-post (>= 1.2, < 3) + connection_pool (2.4.1) + debug_inspector (1.1.0) + diff-lcs (1.5.0) + drb (2.2.0) + ruby2_keywords + faraday (2.7.12) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) i18n (1.14.1) concurrent-ruby (~> 1.0) - jaro_winkler (1.5.4) + json (2.7.1) + language_server-protocol (3.17.0.3) metaclass (0.0.4) - minitest (5.19.0) + minitest (5.20.0) mocha (1.3.0) metaclass (~> 0.0.1) - multipart-post (2.0.0) - octokit (4.13.0) - sawyer (~> 0.8.0, >= 0.5.3) - parallel (1.19.1) - parser (2.6.5.0) - ast (~> 2.4.0) - public_suffix (3.0.3) - rainbow (3.0.0) - rake (12.3.3) - rspec (3.8.0) - rspec-core (~> 3.8.0) - rspec-expectations (~> 3.8.0) - rspec-mocks (~> 3.8.0) - rspec-core (3.8.0) - rspec-support (~> 3.8.0) - rspec-expectations (3.8.1) + mutex_m (0.2.0) + octokit (8.0.0) + faraday (>= 1, < 3) + sawyer (~> 0.9) + parallel (1.23.0) + parser (3.2.2.4) + ast (~> 2.4.1) + racc + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + regexp_parser (2.8.3) + rexml (3.2.6) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-core (3.12.2) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-mocks (3.8.0) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-support (3.8.0) - rubocop (0.77.0) - jaro_winkler (~> 1.5.1) + rspec-support (~> 3.12.0) + rspec-support (3.12.1) + rubocop (1.58.0) + json (~> 2.3) + language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 2.6) + parser (>= 3.2.2.4) rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.30.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 1.7) - ruby-progressbar (1.10.1) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (1.6.0) - zeitwerk (2.6.11) + unicode-display_width (2.5.0) PLATFORMS ruby @@ -75,5 +99,4 @@ DEPENDENCIES rubocop (>= 0.77.0) BUNDLED WITH - 1.17.2 - + 2.4.13 diff --git a/mmv1/compiler.rb b/mmv1/compiler.rb index bdb7f6d4d..1c9c71f77 100755 --- a/mmv1/compiler.rb +++ b/mmv1/compiler.rb @@ -23,6 +23,7 @@ # generation. ENV['TZ'] = 'UTC' +require 'active_support' require 'active_support/inflector' require 'active_support/core_ext/array/conversions' require 'api/compiler' diff --git a/mmv1/google/yaml_validator.rb b/mmv1/google/yaml_validator.rb index b50bcfba5..0ea04e327 100644 --- a/mmv1/google/yaml_validator.rb +++ b/mmv1/google/yaml_validator.rb @@ -22,7 +22,7 @@ def parse(content) # TODO(nelsonjr): Allow specifying which symbols to restrict it further. # But it requires inspecting all configuration files for symbol sources, # such as Enum values. Leaving it as a nice-to-have for the future. - YAML.safe_load(content, allowed_classes) + YAML.safe_load(content, permitted_classes: allowed_classes) end def allowed_classes diff --git a/mmv1/products/apigee/api.yaml b/mmv1/products/apigee/api.yaml index 42c7fd6e7..e5a7980fa 100644 --- a/mmv1/products/apigee/api.yaml +++ b/mmv1/products/apigee/api.yaml @@ -500,7 +500,549 @@ objects: api: 'https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.endpointAttachments/create' - + + - !ruby/object:Api::Resource + name: Organization + base_url: '{{parent}}' + self_link: '{{name}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/apigee/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + No description + properties: + + - !ruby/object:Api::Type::String + name: 'apiConsumerDataEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*` + - !ruby/object:Api::Type::String + name: 'runtimeDatabaseEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: "projects/foo/locations/us/keyRings/bar/cryptoKeys/baz". **Note:** Not supported for Apigee hybrid. + - !ruby/object:Api::Type::Array + name: 'environments' + description: | + Output only. List of environments in the Apigee organization. + item_type: Api::Type::String + - !ruby/object:Api::Type::Enum + name: 'runtimeType' + description: | + Required. Runtime type of the Apigee organization based on the Apigee subscription purchased. + values: + - :RUNTIME_TYPE_UNSPECIFIED + - :CLOUD + - :HYBRID + - !ruby/object:Api::Type::Enum + name: 'type' + description: | + Not used by Apigee. + values: + - :TYPE_UNSPECIFIED + - :TYPE_TRIAL + - :TYPE_PAID + - :TYPE_INTERNAL + - !ruby/object:Api::Type::Boolean + name: 'portalDisabled' + description: | + Configuration for the Portals settings. + - !ruby/object:Api::Type::String + name: 'authorizedNetwork' + description: | + Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid. + - !ruby/object:Api::Type::String + name: 'projectId' + description: | + Output only. Project ID associated with the Apigee organization. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Description of the Apigee organization. + - !ruby/object:Api::Type::String + name: 'caCertificate' + description: | + Output only. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`. + - !ruby/object:Api::Type::Enum + name: 'subscriptionType' + description: | + Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/). + values: + - :SUBSCRIPTION_TYPE_UNSPECIFIED + - :PAID + - :TRIAL + - !ruby/object:Api::Type::NestedObject + name: 'addonsConfig' + description: | + Add-on configurations for the Apigee organization. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'integrationConfig' + description: | + Configuration for the Integration add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Integration add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'apiSecurityConfig' + description: | + Configurations of the API Security add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the API security add-on is enabled. + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time at which the API Security add-on expires in in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::NestedObject + name: 'monetizationConfig' + description: | + Configuration for the Monetization add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Monetization add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'connectorsPlatformConfig' + description: | + Configuration for the Connectors Platform add-on. + properties: + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time at which the Connectors Platform add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Connectors Platform add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'analyticsConfig' + description: | + Configuration for the Analytics add-on. + properties: + - !ruby/object:Api::Type::String + name: 'expireTimeMillis' + description: | + Output only. Time at which the Analytics add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + Output only. The state of the Analytics add-on. + values: + - :ADDON_STATE_UNSPECIFIED + - :ENABLING + - :ENABLED + - :DISABLING + - :DISABLED + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether the Analytics add-on is enabled. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The latest update time. + - !ruby/object:Api::Type::NestedObject + name: 'advancedApiOpsConfig' + description: | + Configuration for the Advanced API Ops add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Advanced API Ops add-on is enabled. + - !ruby/object:Api::Type::String + name: 'customerName' + description: | + Not used by Apigee. + - !ruby/object:Api::Type::String + name: 'createdAt' + description: | + Output only. Time that the Apigee organization was created in milliseconds since epoch. + - !ruby/object:Api::Type::String + name: 'lastModifiedAt' + description: | + Output only. Time that the Apigee organization was last modified in milliseconds since epoch. + - !ruby/object:Api::Type::Enum + name: 'subscriptionPlan' + description: | + Output only. Subscription plan that the customer has purchased. Output only. + values: + - :SUBSCRIPTION_PLAN_UNSPECIFIED + - :SUBSCRIPTION_2021 + - :SUBSCRIPTION_2024 + - !ruby/object:Api::Type::NestedObject + name: 'properties' + description: | + Message for compatibility with legacy Edge specification for Java Properties object in JSON. + properties: + - !ruby/object:Api::Type::Array + name: 'property' + description: | + List of all properties in the object + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + The property value + - !ruby/object:Api::Type::String + name: 'name' + description: | + The property key + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + Output only. State of the organization. Values other than ACTIVE means the resource is not ready to use. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :ACTIVE + - :DELETING + - :UPDATING + - !ruby/object:Api::Type::String + name: 'name' + description: | + Output only. Name of the Apigee organization. + - !ruby/object:Api::Type::Boolean + name: 'disableVpcPeering' + description: | + Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid. + - !ruby/object:Api::Type::String + name: 'controlPlaneEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*` + - !ruby/object:Api::Type::String + name: 'analyticsRegion' + description: | + Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + - !ruby/object:Api::Type::String + name: 'apiConsumerDataLocation' + description: | + This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: "us-west1" when control plane is in US or "europe-west2" when control plane is in EU. + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + Display name for the Apigee organization. Unused, but reserved for future use. + - !ruby/object:Api::Type::String + name: 'apigeeProjectId' + description: | + Output only. Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee. + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time that the Apigee organization is scheduled for deletion. + - !ruby/object:Api::Type::Array + name: 'attributes' + description: | + Not used by Apigee. + item_type: Api::Type::String + - !ruby/object:Api::Type::Enum + name: 'billingType' + description: | + Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). + values: + - :BILLING_TYPE_UNSPECIFIED + - :SUBSCRIPTION + - :EVALUATION + - :PAYG + + + + + - !ruby/object:Api::Resource + name: Organization + base_url: '{{parent}}' + self_link: '{{name}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/apigee/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + No description + properties: + + - !ruby/object:Api::Type::String + name: 'apiConsumerDataEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*` + - !ruby/object:Api::Type::String + name: 'runtimeDatabaseEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: "projects/foo/locations/us/keyRings/bar/cryptoKeys/baz". **Note:** Not supported for Apigee hybrid. + - !ruby/object:Api::Type::Array + name: 'environments' + description: | + Output only. List of environments in the Apigee organization. + item_type: Api::Type::String + - !ruby/object:Api::Type::Enum + name: 'runtimeType' + description: | + Required. Runtime type of the Apigee organization based on the Apigee subscription purchased. + values: + - :RUNTIME_TYPE_UNSPECIFIED + - :CLOUD + - :HYBRID + - !ruby/object:Api::Type::Enum + name: 'type' + description: | + Not used by Apigee. + values: + - :TYPE_UNSPECIFIED + - :TYPE_TRIAL + - :TYPE_PAID + - :TYPE_INTERNAL + - !ruby/object:Api::Type::Boolean + name: 'portalDisabled' + description: | + Configuration for the Portals settings. + - !ruby/object:Api::Type::String + name: 'authorizedNetwork' + description: | + Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid. + - !ruby/object:Api::Type::String + name: 'projectId' + description: | + Output only. Project ID associated with the Apigee organization. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Description of the Apigee organization. + - !ruby/object:Api::Type::String + name: 'caCertificate' + description: | + Output only. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`. + - !ruby/object:Api::Type::Enum + name: 'subscriptionType' + description: | + Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/). + values: + - :SUBSCRIPTION_TYPE_UNSPECIFIED + - :PAID + - :TRIAL + - !ruby/object:Api::Type::NestedObject + name: 'addonsConfig' + description: | + Add-on configurations for the Apigee organization. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'integrationConfig' + description: | + Configuration for the Integration add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Integration add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'apiSecurityConfig' + description: | + Configurations of the API Security add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the API security add-on is enabled. + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time at which the API Security add-on expires in in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::NestedObject + name: 'monetizationConfig' + description: | + Configuration for the Monetization add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Monetization add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'connectorsPlatformConfig' + description: | + Configuration for the Connectors Platform add-on. + properties: + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time at which the Connectors Platform add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Connectors Platform add-on is enabled. + - !ruby/object:Api::Type::NestedObject + name: 'analyticsConfig' + description: | + Configuration for the Analytics add-on. + properties: + - !ruby/object:Api::Type::String + name: 'expireTimeMillis' + description: | + Output only. Time at which the Analytics add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + Output only. The state of the Analytics add-on. + values: + - :ADDON_STATE_UNSPECIFIED + - :ENABLING + - :ENABLED + - :DISABLING + - :DISABLED + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether the Analytics add-on is enabled. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The latest update time. + - !ruby/object:Api::Type::NestedObject + name: 'advancedApiOpsConfig' + description: | + Configuration for the Advanced API Ops add-on. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Flag that specifies whether the Advanced API Ops add-on is enabled. + - !ruby/object:Api::Type::String + name: 'customerName' + description: | + Not used by Apigee. + - !ruby/object:Api::Type::String + name: 'createdAt' + description: | + Output only. Time that the Apigee organization was created in milliseconds since epoch. + - !ruby/object:Api::Type::String + name: 'lastModifiedAt' + description: | + Output only. Time that the Apigee organization was last modified in milliseconds since epoch. + - !ruby/object:Api::Type::Enum + name: 'subscriptionPlan' + description: | + Output only. Subscription plan that the customer has purchased. Output only. + values: + - :SUBSCRIPTION_PLAN_UNSPECIFIED + - :SUBSCRIPTION_2021 + - :SUBSCRIPTION_2024 + - !ruby/object:Api::Type::NestedObject + name: 'properties' + description: | + Message for compatibility with legacy Edge specification for Java Properties object in JSON. + properties: + - !ruby/object:Api::Type::Array + name: 'property' + description: | + List of all properties in the object + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + The property value + - !ruby/object:Api::Type::String + name: 'name' + description: | + The property key + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + Output only. State of the organization. Values other than ACTIVE means the resource is not ready to use. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :ACTIVE + - :DELETING + - :UPDATING + - !ruby/object:Api::Type::String + name: 'name' + description: | + Output only. Name of the Apigee organization. + - !ruby/object:Api::Type::Boolean + name: 'disableVpcPeering' + description: | + Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid. + - !ruby/object:Api::Type::String + name: 'controlPlaneEncryptionKeyName' + description: | + Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*` + - !ruby/object:Api::Type::String + name: 'analyticsRegion' + description: | + Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + - !ruby/object:Api::Type::String + name: 'apiConsumerDataLocation' + description: | + This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: "us-west1" when control plane is in US or "europe-west2" when control plane is in EU. + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + Display name for the Apigee organization. Unused, but reserved for future use. + - !ruby/object:Api::Type::String + name: 'apigeeProjectId' + description: | + Output only. Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee. + - !ruby/object:Api::Type::String + name: 'expiresAt' + description: | + Output only. Time that the Apigee organization is scheduled for deletion. + - !ruby/object:Api::Type::Array + name: 'attributes' + description: | + Not used by Apigee. + item_type: Api::Type::String + - !ruby/object:Api::Type::Enum + name: 'billingType' + description: | + Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). + values: + - :BILLING_TYPE_UNSPECIFIED + - :SUBSCRIPTION + - :EVALUATION + - :PAYG + + + + - !ruby/object:Api::Resource name: OrganizationEnvgroup base_url: '{{parent}}/envgroups' @@ -529,7 +1071,7 @@ objects: description: |- EnvironmentGroup configuration. An environment group is used to group one or more Apigee environments under a single host name. properties: - + - !ruby/object:Api::Type::String name: 'name' description: | @@ -560,7 +1102,7 @@ objects: - + - !ruby/object:Api::Resource name: OrganizationEnvgroup base_url: '{{parent}}/envgroups' @@ -589,7 +1131,7 @@ objects: description: |- EnvironmentGroup configuration. An environment group is used to group one or more Apigee environments under a single host name. properties: - + - !ruby/object:Api::Type::String name: 'name' description: | diff --git a/mmv1/products/artifactregistry/api.yaml b/mmv1/products/artifactregistry/api.yaml index 65e7ecd4a..218315414 100644 --- a/mmv1/products/artifactregistry/api.yaml +++ b/mmv1/products/artifactregistry/api.yaml @@ -12,14 +12,14 @@ # limitations under the License. --- !ruby/object:Api::Product -name: ArtifactRegistry +name: Artifactregistry display_name: Artifact Registry scopes: - https://www.googleapis.com/auth/cloud-platform versions: - !ruby/object:Api::Product::Version - name: beta - base_url: https://artifactregistry.googleapis.com/v1beta2/ + name: ga + base_url: https://artifactregistry.googleapis.com/v1beta1/ apis_required: - !ruby/object:Api::Product::ApiReference name: Artifact Registry API @@ -56,7 +56,7 @@ objects: guides: 'Official Documentation': 'https://cloud.google.com/artifact-registry/docs/overview' - api: 'https://cloud.google.com/artifact-registry/docs/reference/rest/v1beta2/projects.locations.repositories' + api: 'https://cloud.google.com/artifact-registry/docs/reference/rest/v1beta1/projects.locations.repositories' iam_policy: !ruby/object:Api::Resource::IamPolicy exclude: false method_name_separator: ':' diff --git a/mmv1/products/composer/api.yaml b/mmv1/products/composer/api.yaml index 5a28fc5f6..82be9467c 100644 --- a/mmv1/products/composer/api.yaml +++ b/mmv1/products/composer/api.yaml @@ -1,4 +1,3 @@ - --- !ruby/object:Api::Product name: composer display_name: composer @@ -51,26 +50,516 @@ objects: name: 'nextPageToken' description: | The page token used to query for the next page if one exists. + + + + - !ruby/object:Api::Resource + name: ProjectLocationEnvironment + base_url: '{{parent}}/environments' + self_link: '{{name}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/composer/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + An environment for running orchestration tasks. + properties: + + - !ruby/object:Api::Type::String + name: 'name' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'config' + description: | + Configuration information for an environment. + properties: + - !ruby/object:Api::Type::String + name: 'gkeCluster' + description: | + Output only. The Kubernetes Engine cluster used to run this environment. + - !ruby/object:Api::Type::String + name: 'dagGcsPrefix' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'nodeCount' + description: | + The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'softwareConfig' + description: | + Specifies the selection and configuration of software inside the environment. + properties: + - !ruby/object:Api::Type::String + name: 'imageVersion' + description: | + 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]+(-preview\.[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 image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview). + - !ruby/object:Api::Type::NestedObject + name: 'airflowConfigOverrides' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'pypiPackages' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'envVariables' + description: | + 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_*`. 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` + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'pythonVersion' + description: | + 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. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3. + - !ruby/object:Api::Type::Integer + name: 'schedulerCount' + description: | + Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'nodeConfig' + description: | + The configuration information for the Kubernetes Engine nodes running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'location' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'network' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'subnetwork' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'diskSizeGb' + description: | + Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::Array + name: 'oauthScopes' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'serviceAccount' + description: | + 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. + - !ruby/object:Api::Type::Array + name: 'tags' + description: | + 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. + item_type: Api::Type::String + - !ruby/object:Api::Type::NestedObject + name: 'ipAllocationPolicy' + description: | + Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::Boolean + name: 'useIpAliases' + description: | + Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters. + - !ruby/object:Api::Type::String + name: 'clusterSecondaryRangeName' + description: | + Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'clusterIpv4CidrBlock' + description: | + Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::String + name: 'servicesSecondaryRangeName' + description: | + Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'servicesIpv4CidrBlock' + description: | + Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::Boolean + name: 'enableIpMasqAgent' + description: | + Optional. Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent + - !ruby/object:Api::Type::NestedObject + name: 'privateEnvironmentConfig' + description: | + The configuration information for configuring a Private IP Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEnvironment' + description: | + 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 for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'privateClusterConfig' + description: | + Configuration options for the private GKE cluster in a Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEndpoint' + description: | + Optional. If `true`, access to the public endpoint of the GKE cluster is denied. + - !ruby/object:Api::Type::String + name: 'masterIpv4CidrBlock' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'masterIpv4ReservedRange' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'webServerIpv4CidrBlock' + description: | + 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`. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudSqlIpv4CidrBlock' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'webServerIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4CidrBlock' + description: | + Optional. The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::Boolean + name: 'enablePrivatelyUsedPublicIps' + description: | + Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`. + - !ruby/object:Api::Type::String + name: 'cloudComposerConnectionSubnetwork' + description: | + Optional. When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. + - !ruby/object:Api::Type::NestedObject + name: 'networkingConfig' + description: | + Configuration options for networking connections in the Composer 2 environment. + properties: + - !ruby/object:Api::Type::Enum + name: 'connectionType' + description: | + Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment. + values: + - :CONNECTION_TYPE_UNSPECIFIED + - :VPC_PEERING + - :PRIVATE_SERVICE_CONNECT + - !ruby/object:Api::Type::NestedObject + name: 'webServerNetworkAccessControl' + description: | + Network-level access control policy for the Airflow web server. + properties: + - !ruby/object:Api::Type::Array + name: 'allowedIpRanges' + description: | + A collection of allowed IP ranges with descriptions. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Optional. User-provided description. It must contain at most 300 characters. + - !ruby/object:Api::Type::NestedObject + name: 'databaseConfig' + description: | + The configuration of Cloud SQL instance that is used by the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'zone' + description: | + Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'webServerConfig' + description: | + The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.* + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'encryptionConfig' + description: | + The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + properties: + - !ruby/object:Api::Type::String + name: 'kmsKeyName' + description: | + Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used. + - !ruby/object:Api::Type::NestedObject + name: 'maintenanceWindow' + description: | + The configuration settings for Cloud Composer maintenance window. The following example: ``` { "startTime":"2019-08-01T01:00:00Z" "endTime":"2019-08-01T07:00:00Z" "recurrence":"FREQ=WEEKLY;BYDAY=TU,WE" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday. + properties: + - !ruby/object:Api::Type::String + name: 'startTime' + description: | + Required. Start time of the first recurrence of the maintenance window. + - !ruby/object:Api::Type::String + name: 'endTime' + description: | + Required. Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to `start_time`. + - !ruby/object:Api::Type::String + name: 'recurrence' + description: | + Required. Maintenance window recurrence. Format is a subset of [RFC-5545](https://tools.ietf.org/html/rfc5545) `RRULE`. The only allowed values for `FREQ` field are `FREQ=DAILY` and `FREQ=WEEKLY;BYDAY=...` Example values: `FREQ=WEEKLY;BYDAY=TU,WE`, `FREQ=DAILY`. + - !ruby/object:Api::Type::NestedObject + name: 'workloadsConfig' + description: | + The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduler' + description: | + Configuration for resources used by Airflow schedulers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of schedulers. + - !ruby/object:Api::Type::NestedObject + name: 'webServer' + description: | + Configuration for resources used by Airflow web server. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::NestedObject + name: 'worker' + description: | + Configuration for resources used by Airflow workers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'minCount' + description: | + Optional. Minimum number of workers for autoscaling. + - !ruby/object:Api::Type::Integer + name: 'maxCount' + description: | + Optional. Maximum number of workers for autoscaling. + - !ruby/object:Api::Type::NestedObject + name: 'triggerer' + description: | + Configuration for resources used by Airflow triggerers. + properties: + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of triggerers. + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Enum + name: 'environmentSize' + description: | + Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + values: + - :ENVIRONMENT_SIZE_UNSPECIFIED + - :ENVIRONMENT_SIZE_SMALL + - :ENVIRONMENT_SIZE_MEDIUM + - :ENVIRONMENT_SIZE_LARGE + - !ruby/object:Api::Type::String + name: 'airflowUri' + description: | + 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)). + - !ruby/object:Api::Type::String + name: 'airflowByoidUri' + description: | + Output only. The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation)). + - !ruby/object:Api::Type::NestedObject + name: 'masterAuthorizedNetworksConfig' + description: | + Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether or not master authorized networks feature is enabled. + - !ruby/object:Api::Type::Array + name: 'cidrBlocks' + description: | + Up to 50 external networks that could access Kubernetes master through HTTPS. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + User-defined name that identifies the CIDR block. + - !ruby/object:Api::Type::String + name: 'cidrBlock' + description: | + CIDR block that must be specified in CIDR notation. + - !ruby/object:Api::Type::NestedObject + name: 'recoveryConfig' + description: | + The Recovery settings of an environment. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduledSnapshotsConfig' + description: | + The configuration for scheduled snapshot creation mechanism. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Optional. Whether scheduled snapshots creation is enabled. + - !ruby/object:Api::Type::String + name: 'snapshotLocation' + description: | + Optional. The Cloud Storage location for storing automatically created snapshots. + - !ruby/object:Api::Type::String + name: 'snapshotCreationSchedule' + description: | + Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution. + - !ruby/object:Api::Type::String + name: 'timeZone' + description: | + Optional. Time zone that sets the context to interpret snapshot_creation_schedule. + - !ruby/object:Api::Type::Enum + name: 'resilienceMode' + description: | + Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer. + values: + - :RESILIENCE_MODE_UNSPECIFIED + - :HIGH_RESILIENCE + - !ruby/object:Api::Type::String + name: 'uuid' + description: | + Output only. The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + The current state of the environment. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :RUNNING + - :UPDATING + - :DELETING + - :ERROR + - !ruby/object:Api::Type::String + name: 'createTime' + description: | + Output only. The time at which this environment was created. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The time at which this environment was last modified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + 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}{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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::Boolean + name: 'satisfiesPzs' + description: | + Output only. Reserved for future use. + - !ruby/object:Api::Type::NestedObject + name: 'storageConfig' + description: | + The configuration for data storage in the environment. + properties: + - !ruby/object:Api::Type::String + name: 'bucket' + description: | + Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix. ---- !ruby/object:Api::Product -name: composer -display_name: composer -versions: - - !ruby/object:Api::Product::Version - name: ga - base_url: https://composer.googleapis.com//V1/ -scopes: - - https://composer.googleapis.com//auth/cloud-platform -apis_required: - - !ruby/object:Api::Product::ApiReference - name: https://composer.googleapis.com/ - url: https://console.cloud.google.com/apis/library/composer.googleapis.com/ -objects: + - !ruby/object:Api::Resource - name: ProjectLocationImageVersion - base_url: '{{parent}}/imageVersions' + name: ProjectLocationEnvironment + base_url: '{{parent}}/environments' + self_link: '{{name}}' references: !ruby/object:Api::Resource::ReferenceLinks guides: 'Official Documentation': @@ -93,16 +582,1483 @@ objects: path: 'error' message: 'message' description: |- - The ImageVersions in a project and location. + An environment for running orchestration tasks. properties: - - !ruby/object:Api::Type::Array - name: 'imageVersions' + - !ruby/object:Api::Type::String + name: 'name' description: | - The list of supported ImageVersions in a location. - item_type: Api::Type::String + 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. + - !ruby/object:Api::Type::NestedObject + name: 'config' + description: | + Configuration information for an environment. + properties: + - !ruby/object:Api::Type::String + name: 'gkeCluster' + description: | + Output only. The Kubernetes Engine cluster used to run this environment. + - !ruby/object:Api::Type::String + name: 'dagGcsPrefix' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'nodeCount' + description: | + The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'softwareConfig' + description: | + Specifies the selection and configuration of software inside the environment. + properties: + - !ruby/object:Api::Type::String + name: 'imageVersion' + description: | + 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]+(-preview\.[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 image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview). + - !ruby/object:Api::Type::NestedObject + name: 'airflowConfigOverrides' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'pypiPackages' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'envVariables' + description: | + 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_*`. 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` + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'pythonVersion' + description: | + 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. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3. + - !ruby/object:Api::Type::Integer + name: 'schedulerCount' + description: | + Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'nodeConfig' + description: | + The configuration information for the Kubernetes Engine nodes running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'location' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'network' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'subnetwork' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'diskSizeGb' + description: | + Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::Array + name: 'oauthScopes' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'serviceAccount' + description: | + 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. + - !ruby/object:Api::Type::Array + name: 'tags' + description: | + 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. + item_type: Api::Type::String + - !ruby/object:Api::Type::NestedObject + name: 'ipAllocationPolicy' + description: | + Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::Boolean + name: 'useIpAliases' + description: | + Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters. + - !ruby/object:Api::Type::String + name: 'clusterSecondaryRangeName' + description: | + Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'clusterIpv4CidrBlock' + description: | + Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::String + name: 'servicesSecondaryRangeName' + description: | + Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'servicesIpv4CidrBlock' + description: | + Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::Boolean + name: 'enableIpMasqAgent' + description: | + Optional. Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent + - !ruby/object:Api::Type::NestedObject + name: 'privateEnvironmentConfig' + description: | + The configuration information for configuring a Private IP Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEnvironment' + description: | + 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 for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'privateClusterConfig' + description: | + Configuration options for the private GKE cluster in a Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEndpoint' + description: | + Optional. If `true`, access to the public endpoint of the GKE cluster is denied. + - !ruby/object:Api::Type::String + name: 'masterIpv4CidrBlock' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'masterIpv4ReservedRange' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'webServerIpv4CidrBlock' + description: | + 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`. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudSqlIpv4CidrBlock' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'webServerIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4CidrBlock' + description: | + Optional. The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::Boolean + name: 'enablePrivatelyUsedPublicIps' + description: | + Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`. + - !ruby/object:Api::Type::String + name: 'cloudComposerConnectionSubnetwork' + description: | + Optional. When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. + - !ruby/object:Api::Type::NestedObject + name: 'networkingConfig' + description: | + Configuration options for networking connections in the Composer 2 environment. + properties: + - !ruby/object:Api::Type::Enum + name: 'connectionType' + description: | + Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment. + values: + - :CONNECTION_TYPE_UNSPECIFIED + - :VPC_PEERING + - :PRIVATE_SERVICE_CONNECT + - !ruby/object:Api::Type::NestedObject + name: 'webServerNetworkAccessControl' + description: | + Network-level access control policy for the Airflow web server. + properties: + - !ruby/object:Api::Type::Array + name: 'allowedIpRanges' + description: | + A collection of allowed IP ranges with descriptions. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Optional. User-provided description. It must contain at most 300 characters. + - !ruby/object:Api::Type::NestedObject + name: 'databaseConfig' + description: | + The configuration of Cloud SQL instance that is used by the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'zone' + description: | + Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'webServerConfig' + description: | + The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.* + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'encryptionConfig' + description: | + The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + properties: + - !ruby/object:Api::Type::String + name: 'kmsKeyName' + description: | + Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used. + - !ruby/object:Api::Type::NestedObject + name: 'maintenanceWindow' + description: | + The configuration settings for Cloud Composer maintenance window. The following example: ``` { "startTime":"2019-08-01T01:00:00Z" "endTime":"2019-08-01T07:00:00Z" "recurrence":"FREQ=WEEKLY;BYDAY=TU,WE" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday. + properties: + - !ruby/object:Api::Type::String + name: 'startTime' + description: | + Required. Start time of the first recurrence of the maintenance window. + - !ruby/object:Api::Type::String + name: 'endTime' + description: | + Required. Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to `start_time`. + - !ruby/object:Api::Type::String + name: 'recurrence' + description: | + Required. Maintenance window recurrence. Format is a subset of [RFC-5545](https://tools.ietf.org/html/rfc5545) `RRULE`. The only allowed values for `FREQ` field are `FREQ=DAILY` and `FREQ=WEEKLY;BYDAY=...` Example values: `FREQ=WEEKLY;BYDAY=TU,WE`, `FREQ=DAILY`. + - !ruby/object:Api::Type::NestedObject + name: 'workloadsConfig' + description: | + The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduler' + description: | + Configuration for resources used by Airflow schedulers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of schedulers. + - !ruby/object:Api::Type::NestedObject + name: 'webServer' + description: | + Configuration for resources used by Airflow web server. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::NestedObject + name: 'worker' + description: | + Configuration for resources used by Airflow workers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'minCount' + description: | + Optional. Minimum number of workers for autoscaling. + - !ruby/object:Api::Type::Integer + name: 'maxCount' + description: | + Optional. Maximum number of workers for autoscaling. + - !ruby/object:Api::Type::NestedObject + name: 'triggerer' + description: | + Configuration for resources used by Airflow triggerers. + properties: + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of triggerers. + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Enum + name: 'environmentSize' + description: | + Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + values: + - :ENVIRONMENT_SIZE_UNSPECIFIED + - :ENVIRONMENT_SIZE_SMALL + - :ENVIRONMENT_SIZE_MEDIUM + - :ENVIRONMENT_SIZE_LARGE + - !ruby/object:Api::Type::String + name: 'airflowUri' + description: | + 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)). + - !ruby/object:Api::Type::String + name: 'airflowByoidUri' + description: | + Output only. The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation)). + - !ruby/object:Api::Type::NestedObject + name: 'masterAuthorizedNetworksConfig' + description: | + Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether or not master authorized networks feature is enabled. + - !ruby/object:Api::Type::Array + name: 'cidrBlocks' + description: | + Up to 50 external networks that could access Kubernetes master through HTTPS. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + User-defined name that identifies the CIDR block. + - !ruby/object:Api::Type::String + name: 'cidrBlock' + description: | + CIDR block that must be specified in CIDR notation. + - !ruby/object:Api::Type::NestedObject + name: 'recoveryConfig' + description: | + The Recovery settings of an environment. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduledSnapshotsConfig' + description: | + The configuration for scheduled snapshot creation mechanism. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Optional. Whether scheduled snapshots creation is enabled. + - !ruby/object:Api::Type::String + name: 'snapshotLocation' + description: | + Optional. The Cloud Storage location for storing automatically created snapshots. + - !ruby/object:Api::Type::String + name: 'snapshotCreationSchedule' + description: | + Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution. + - !ruby/object:Api::Type::String + name: 'timeZone' + description: | + Optional. Time zone that sets the context to interpret snapshot_creation_schedule. + - !ruby/object:Api::Type::Enum + name: 'resilienceMode' + description: | + Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer. + values: + - :RESILIENCE_MODE_UNSPECIFIED + - :HIGH_RESILIENCE - !ruby/object:Api::Type::String - name: 'nextPageToken' + name: 'uuid' description: | - The page token used to query for the next page if one exists. + Output only. The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + The current state of the environment. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :RUNNING + - :UPDATING + - :DELETING + - :ERROR + - !ruby/object:Api::Type::String + name: 'createTime' + description: | + Output only. The time at which this environment was created. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The time at which this environment was last modified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + 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}{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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::Boolean + name: 'satisfiesPzs' + description: | + Output only. Reserved for future use. + - !ruby/object:Api::Type::NestedObject + name: 'storageConfig' + description: | + The configuration for data storage in the environment. + properties: + - !ruby/object:Api::Type::String + name: 'bucket' + description: | + Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix. + + + + + - !ruby/object:Api::Resource + name: ProjectLocationEnvironment + base_url: '{{parent}}/environments' + self_link: '{{name}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/composer/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + An environment for running orchestration tasks. + properties: + + - !ruby/object:Api::Type::String + name: 'name' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'config' + description: | + Configuration information for an environment. + properties: + - !ruby/object:Api::Type::String + name: 'gkeCluster' + description: | + Output only. The Kubernetes Engine cluster used to run this environment. + - !ruby/object:Api::Type::String + name: 'dagGcsPrefix' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'nodeCount' + description: | + The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'softwareConfig' + description: | + Specifies the selection and configuration of software inside the environment. + properties: + - !ruby/object:Api::Type::String + name: 'imageVersion' + description: | + 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]+(-preview\.[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 image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview). + - !ruby/object:Api::Type::NestedObject + name: 'airflowConfigOverrides' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'pypiPackages' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'envVariables' + description: | + 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_*`. 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` + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'pythonVersion' + description: | + 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. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3. + - !ruby/object:Api::Type::Integer + name: 'schedulerCount' + description: | + Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'nodeConfig' + description: | + The configuration information for the Kubernetes Engine nodes running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'location' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'network' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'subnetwork' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'diskSizeGb' + description: | + Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::Array + name: 'oauthScopes' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'serviceAccount' + description: | + 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. + - !ruby/object:Api::Type::Array + name: 'tags' + description: | + 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. + item_type: Api::Type::String + - !ruby/object:Api::Type::NestedObject + name: 'ipAllocationPolicy' + description: | + Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::Boolean + name: 'useIpAliases' + description: | + Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters. + - !ruby/object:Api::Type::String + name: 'clusterSecondaryRangeName' + description: | + Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'clusterIpv4CidrBlock' + description: | + Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::String + name: 'servicesSecondaryRangeName' + description: | + Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'servicesIpv4CidrBlock' + description: | + Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::Boolean + name: 'enableIpMasqAgent' + description: | + Optional. Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent + - !ruby/object:Api::Type::NestedObject + name: 'privateEnvironmentConfig' + description: | + The configuration information for configuring a Private IP Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEnvironment' + description: | + 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 for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'privateClusterConfig' + description: | + Configuration options for the private GKE cluster in a Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEndpoint' + description: | + Optional. If `true`, access to the public endpoint of the GKE cluster is denied. + - !ruby/object:Api::Type::String + name: 'masterIpv4CidrBlock' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'masterIpv4ReservedRange' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'webServerIpv4CidrBlock' + description: | + 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`. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudSqlIpv4CidrBlock' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'webServerIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4CidrBlock' + description: | + Optional. The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::Boolean + name: 'enablePrivatelyUsedPublicIps' + description: | + Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`. + - !ruby/object:Api::Type::String + name: 'cloudComposerConnectionSubnetwork' + description: | + Optional. When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. + - !ruby/object:Api::Type::NestedObject + name: 'networkingConfig' + description: | + Configuration options for networking connections in the Composer 2 environment. + properties: + - !ruby/object:Api::Type::Enum + name: 'connectionType' + description: | + Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment. + values: + - :CONNECTION_TYPE_UNSPECIFIED + - :VPC_PEERING + - :PRIVATE_SERVICE_CONNECT + - !ruby/object:Api::Type::NestedObject + name: 'webServerNetworkAccessControl' + description: | + Network-level access control policy for the Airflow web server. + properties: + - !ruby/object:Api::Type::Array + name: 'allowedIpRanges' + description: | + A collection of allowed IP ranges with descriptions. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Optional. User-provided description. It must contain at most 300 characters. + - !ruby/object:Api::Type::NestedObject + name: 'databaseConfig' + description: | + The configuration of Cloud SQL instance that is used by the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'zone' + description: | + Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'webServerConfig' + description: | + The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.* + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'encryptionConfig' + description: | + The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + properties: + - !ruby/object:Api::Type::String + name: 'kmsKeyName' + description: | + Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used. + - !ruby/object:Api::Type::NestedObject + name: 'maintenanceWindow' + description: | + The configuration settings for Cloud Composer maintenance window. The following example: ``` { "startTime":"2019-08-01T01:00:00Z" "endTime":"2019-08-01T07:00:00Z" "recurrence":"FREQ=WEEKLY;BYDAY=TU,WE" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday. + properties: + - !ruby/object:Api::Type::String + name: 'startTime' + description: | + Required. Start time of the first recurrence of the maintenance window. + - !ruby/object:Api::Type::String + name: 'endTime' + description: | + Required. Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to `start_time`. + - !ruby/object:Api::Type::String + name: 'recurrence' + description: | + Required. Maintenance window recurrence. Format is a subset of [RFC-5545](https://tools.ietf.org/html/rfc5545) `RRULE`. The only allowed values for `FREQ` field are `FREQ=DAILY` and `FREQ=WEEKLY;BYDAY=...` Example values: `FREQ=WEEKLY;BYDAY=TU,WE`, `FREQ=DAILY`. + - !ruby/object:Api::Type::NestedObject + name: 'workloadsConfig' + description: | + The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduler' + description: | + Configuration for resources used by Airflow schedulers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of schedulers. + - !ruby/object:Api::Type::NestedObject + name: 'webServer' + description: | + Configuration for resources used by Airflow web server. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::NestedObject + name: 'worker' + description: | + Configuration for resources used by Airflow workers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'minCount' + description: | + Optional. Minimum number of workers for autoscaling. + - !ruby/object:Api::Type::Integer + name: 'maxCount' + description: | + Optional. Maximum number of workers for autoscaling. + - !ruby/object:Api::Type::NestedObject + name: 'triggerer' + description: | + Configuration for resources used by Airflow triggerers. + properties: + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of triggerers. + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Enum + name: 'environmentSize' + description: | + Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + values: + - :ENVIRONMENT_SIZE_UNSPECIFIED + - :ENVIRONMENT_SIZE_SMALL + - :ENVIRONMENT_SIZE_MEDIUM + - :ENVIRONMENT_SIZE_LARGE + - !ruby/object:Api::Type::String + name: 'airflowUri' + description: | + 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)). + - !ruby/object:Api::Type::String + name: 'airflowByoidUri' + description: | + Output only. The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation)). + - !ruby/object:Api::Type::NestedObject + name: 'masterAuthorizedNetworksConfig' + description: | + Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether or not master authorized networks feature is enabled. + - !ruby/object:Api::Type::Array + name: 'cidrBlocks' + description: | + Up to 50 external networks that could access Kubernetes master through HTTPS. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + User-defined name that identifies the CIDR block. + - !ruby/object:Api::Type::String + name: 'cidrBlock' + description: | + CIDR block that must be specified in CIDR notation. + - !ruby/object:Api::Type::NestedObject + name: 'recoveryConfig' + description: | + The Recovery settings of an environment. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduledSnapshotsConfig' + description: | + The configuration for scheduled snapshot creation mechanism. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Optional. Whether scheduled snapshots creation is enabled. + - !ruby/object:Api::Type::String + name: 'snapshotLocation' + description: | + Optional. The Cloud Storage location for storing automatically created snapshots. + - !ruby/object:Api::Type::String + name: 'snapshotCreationSchedule' + description: | + Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution. + - !ruby/object:Api::Type::String + name: 'timeZone' + description: | + Optional. Time zone that sets the context to interpret snapshot_creation_schedule. + - !ruby/object:Api::Type::Enum + name: 'resilienceMode' + description: | + Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer. + values: + - :RESILIENCE_MODE_UNSPECIFIED + - :HIGH_RESILIENCE + - !ruby/object:Api::Type::String + name: 'uuid' + description: | + Output only. The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + The current state of the environment. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :RUNNING + - :UPDATING + - :DELETING + - :ERROR + - !ruby/object:Api::Type::String + name: 'createTime' + description: | + Output only. The time at which this environment was created. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The time at which this environment was last modified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + 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}{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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::Boolean + name: 'satisfiesPzs' + description: | + Output only. Reserved for future use. + - !ruby/object:Api::Type::NestedObject + name: 'storageConfig' + description: | + The configuration for data storage in the environment. + properties: + - !ruby/object:Api::Type::String + name: 'bucket' + description: | + Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix. + + + + + - !ruby/object:Api::Resource + name: ProjectLocationEnvironment + base_url: '{{parent}}/environments' + self_link: '{{name}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/composer/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + An environment for running orchestration tasks. + properties: + + - !ruby/object:Api::Type::String + name: 'name' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'config' + description: | + Configuration information for an environment. + properties: + - !ruby/object:Api::Type::String + name: 'gkeCluster' + description: | + Output only. The Kubernetes Engine cluster used to run this environment. + - !ruby/object:Api::Type::String + name: 'dagGcsPrefix' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'nodeCount' + description: | + The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'softwareConfig' + description: | + Specifies the selection and configuration of software inside the environment. + properties: + - !ruby/object:Api::Type::String + name: 'imageVersion' + description: | + 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]+(-preview\.[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 image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview). + - !ruby/object:Api::Type::NestedObject + name: 'airflowConfigOverrides' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'pypiPackages' + description: | + 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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::NestedObject + name: 'envVariables' + description: | + 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_*`. 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` + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'pythonVersion' + description: | + 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. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3. + - !ruby/object:Api::Type::Integer + name: 'schedulerCount' + description: | + Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'nodeConfig' + description: | + The configuration information for the Kubernetes Engine nodes running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'location' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'network' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'subnetwork' + description: | + 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. + - !ruby/object:Api::Type::Integer + name: 'diskSizeGb' + description: | + Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::Array + name: 'oauthScopes' + description: | + 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. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'serviceAccount' + description: | + 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. + - !ruby/object:Api::Type::Array + name: 'tags' + description: | + 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. + item_type: Api::Type::String + - !ruby/object:Api::Type::NestedObject + name: 'ipAllocationPolicy' + description: | + Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software. + properties: + - !ruby/object:Api::Type::Boolean + name: 'useIpAliases' + description: | + Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters. + - !ruby/object:Api::Type::String + name: 'clusterSecondaryRangeName' + description: | + Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'clusterIpv4CidrBlock' + description: | + Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::String + name: 'servicesSecondaryRangeName' + description: | + Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true. + - !ruby/object:Api::Type::String + name: 'servicesIpv4CidrBlock' + description: | + Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, 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](https://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. + - !ruby/object:Api::Type::Boolean + name: 'enableIpMasqAgent' + description: | + Optional. Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent + - !ruby/object:Api::Type::NestedObject + name: 'privateEnvironmentConfig' + description: | + The configuration information for configuring a Private IP Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEnvironment' + description: | + 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 for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'privateClusterConfig' + description: | + Configuration options for the private GKE cluster in a Cloud Composer environment. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enablePrivateEndpoint' + description: | + Optional. If `true`, access to the public endpoint of the GKE cluster is denied. + - !ruby/object:Api::Type::String + name: 'masterIpv4CidrBlock' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'masterIpv4ReservedRange' + description: | + 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. + - !ruby/object:Api::Type::String + name: 'webServerIpv4CidrBlock' + description: | + 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`. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudSqlIpv4CidrBlock' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'webServerIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4CidrBlock' + description: | + Optional. The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::String + name: 'cloudComposerNetworkIpv4ReservedRange' + description: | + Output only. The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + - !ruby/object:Api::Type::Boolean + name: 'enablePrivatelyUsedPublicIps' + description: | + Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`. + - !ruby/object:Api::Type::String + name: 'cloudComposerConnectionSubnetwork' + description: | + Optional. When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. + - !ruby/object:Api::Type::NestedObject + name: 'networkingConfig' + description: | + Configuration options for networking connections in the Composer 2 environment. + properties: + - !ruby/object:Api::Type::Enum + name: 'connectionType' + description: | + Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment. + values: + - :CONNECTION_TYPE_UNSPECIFIED + - :VPC_PEERING + - :PRIVATE_SERVICE_CONNECT + - !ruby/object:Api::Type::NestedObject + name: 'webServerNetworkAccessControl' + description: | + Network-level access control policy for the Airflow web server. + properties: + - !ruby/object:Api::Type::Array + name: 'allowedIpRanges' + description: | + A collection of allowed IP ranges with descriptions. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'value' + description: | + 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`. + - !ruby/object:Api::Type::String + name: 'description' + description: | + Optional. User-provided description. It must contain at most 300 characters. + - !ruby/object:Api::Type::NestedObject + name: 'databaseConfig' + description: | + The configuration of Cloud SQL instance that is used by the Apache Airflow software. + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::String + name: 'zone' + description: | + Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*. + - !ruby/object:Api::Type::NestedObject + name: 'webServerConfig' + description: | + The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.* + properties: + - !ruby/object:Api::Type::String + name: 'machineType' + description: | + 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. + - !ruby/object:Api::Type::NestedObject + name: 'encryptionConfig' + description: | + The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. + properties: + - !ruby/object:Api::Type::String + name: 'kmsKeyName' + description: | + Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used. + - !ruby/object:Api::Type::NestedObject + name: 'maintenanceWindow' + description: | + The configuration settings for Cloud Composer maintenance window. The following example: ``` { "startTime":"2019-08-01T01:00:00Z" "endTime":"2019-08-01T07:00:00Z" "recurrence":"FREQ=WEEKLY;BYDAY=TU,WE" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday. + properties: + - !ruby/object:Api::Type::String + name: 'startTime' + description: | + Required. Start time of the first recurrence of the maintenance window. + - !ruby/object:Api::Type::String + name: 'endTime' + description: | + Required. Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to `start_time`. + - !ruby/object:Api::Type::String + name: 'recurrence' + description: | + Required. Maintenance window recurrence. Format is a subset of [RFC-5545](https://tools.ietf.org/html/rfc5545) `RRULE`. The only allowed values for `FREQ` field are `FREQ=DAILY` and `FREQ=WEEKLY;BYDAY=...` Example values: `FREQ=WEEKLY;BYDAY=TU,WE`, `FREQ=DAILY`. + - !ruby/object:Api::Type::NestedObject + name: 'workloadsConfig' + description: | + The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduler' + description: | + Configuration for resources used by Airflow schedulers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow scheduler replica. + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of schedulers. + - !ruby/object:Api::Type::NestedObject + name: 'webServer' + description: | + Configuration for resources used by Airflow web server. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for Airflow web server. + - !ruby/object:Api::Type::NestedObject + name: 'worker' + description: | + Configuration for resources used by Airflow workers. + properties: + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'storageGb' + description: | + Optional. Storage (GB) request and limit for a single Airflow worker replica. + - !ruby/object:Api::Type::Integer + name: 'minCount' + description: | + Optional. Minimum number of workers for autoscaling. + - !ruby/object:Api::Type::Integer + name: 'maxCount' + description: | + Optional. Maximum number of workers for autoscaling. + - !ruby/object:Api::Type::NestedObject + name: 'triggerer' + description: | + Configuration for resources used by Airflow triggerers. + properties: + - !ruby/object:Api::Type::Integer + name: 'count' + description: | + Optional. The number of triggerers. + - !ruby/object:Api::Type::Integer + name: 'cpu' + description: | + Optional. CPU request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Integer + name: 'memoryGb' + description: | + Optional. Memory (GB) request and limit for a single Airflow triggerer replica. + - !ruby/object:Api::Type::Enum + name: 'environmentSize' + description: | + Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer. + values: + - :ENVIRONMENT_SIZE_UNSPECIFIED + - :ENVIRONMENT_SIZE_SMALL + - :ENVIRONMENT_SIZE_MEDIUM + - :ENVIRONMENT_SIZE_LARGE + - !ruby/object:Api::Type::String + name: 'airflowUri' + description: | + 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)). + - !ruby/object:Api::Type::String + name: 'airflowByoidUri' + description: | + Output only. The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation)). + - !ruby/object:Api::Type::NestedObject + name: 'masterAuthorizedNetworksConfig' + description: | + Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Whether or not master authorized networks feature is enabled. + - !ruby/object:Api::Type::Array + name: 'cidrBlocks' + description: | + Up to 50 external networks that could access Kubernetes master through HTTPS. + item_type: !ruby/object:Api::Type::NestedObject + properties: + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + User-defined name that identifies the CIDR block. + - !ruby/object:Api::Type::String + name: 'cidrBlock' + description: | + CIDR block that must be specified in CIDR notation. + - !ruby/object:Api::Type::NestedObject + name: 'recoveryConfig' + description: | + The Recovery settings of an environment. + properties: + - !ruby/object:Api::Type::NestedObject + name: 'scheduledSnapshotsConfig' + description: | + The configuration for scheduled snapshot creation mechanism. + properties: + - !ruby/object:Api::Type::Boolean + name: 'enabled' + description: | + Optional. Whether scheduled snapshots creation is enabled. + - !ruby/object:Api::Type::String + name: 'snapshotLocation' + description: | + Optional. The Cloud Storage location for storing automatically created snapshots. + - !ruby/object:Api::Type::String + name: 'snapshotCreationSchedule' + description: | + Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution. + - !ruby/object:Api::Type::String + name: 'timeZone' + description: | + Optional. Time zone that sets the context to interpret snapshot_creation_schedule. + - !ruby/object:Api::Type::Enum + name: 'resilienceMode' + description: | + Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer. + values: + - :RESILIENCE_MODE_UNSPECIFIED + - :HIGH_RESILIENCE + - !ruby/object:Api::Type::String + name: 'uuid' + description: | + Output only. The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created. + - !ruby/object:Api::Type::Enum + name: 'state' + description: | + The current state of the environment. + values: + - :STATE_UNSPECIFIED + - :CREATING + - :RUNNING + - :UPDATING + - :DELETING + - :ERROR + - !ruby/object:Api::Type::String + name: 'createTime' + description: | + Output only. The time at which this environment was created. + - !ruby/object:Api::Type::String + name: 'updateTime' + description: | + Output only. The time at which this environment was last modified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + 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}{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. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::Boolean + name: 'satisfiesPzs' + description: | + Output only. Reserved for future use. + - !ruby/object:Api::Type::NestedObject + name: 'storageConfig' + description: | + The configuration for data storage in the environment. + properties: + - !ruby/object:Api::Type::String + name: 'bucket' + description: | + Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix. diff --git a/mmv1/products/dataproc/api.yaml b/mmv1/products/dataproc/api.yaml index ed575636e..c794c2dcf 100644 --- a/mmv1/products/dataproc/api.yaml +++ b/mmv1/products/dataproc/api.yaml @@ -615,3 +615,153 @@ objects: name: 'realm' description: | The name of the on-cluster Kerberos realm. + + + + - !ruby/object:Api::Resource + name: ProjectRegionCluster + base_url: 'projects/{{projectId}}/regions/{{region}}/clusters' + self_link: 'projects/{{projectId}}/regions/{{region}}/clusters/{{clusterName}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/dataproc/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + Describes the identifying information, config, and status of a Dataproc cluster + properties: + + - !ruby/object:Api::Type::String + name: 'projectId' + description: | + Required. The Google Cloud Platform project ID that the cluster belongs to. + - !ruby/object:Api::Type::String + name: 'clusterName' + description: | + Required. The cluster name, which must be unique within a project. The name must start with a lowercase letter, and can contain up to 51 lowercase letters, numbers, and hyphens. It cannot end with a hyphen. The name of a deleted cluster can be reused. + - !ruby/object:Api::Type::String + name: 'config' + description: | + Optional. The cluster config for a cluster of Compute Engine Instances. Note that Dataproc may set default values, and values may change when clusters are updated.Exactly one of ClusterConfig or VirtualClusterConfig must be specified. + - !ruby/object:Api::Type::String + name: 'virtualClusterConfig' + description: | + Optional. The virtual cluster config is used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview). Dataproc may set default values, and values may change when clusters are updated. Exactly one of config or virtual_cluster_config must be specified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'status' + description: | + Output only. Cluster status. + - !ruby/object:Api::Type::Array + name: 'statusHistory' + description: | + Output only. The previous cluster status. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'clusterUuid' + description: | + Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster. + - !ruby/object:Api::Type::String + name: 'metrics' + description: | + Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. + + + + + - !ruby/object:Api::Resource + name: ProjectRegionCluster + base_url: 'projects/{{projectId}}/regions/{{region}}/clusters' + self_link: 'projects/{{projectId}}/regions/{{region}}/clusters/{{clusterName}}' + references: !ruby/object:Api::Resource::ReferenceLinks + guides: + 'Official Documentation': + api: 'https://cloud.google.com/dataproc/docs' + async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: 'name' + base_url: '{op_id}' + wait_ms: 1000 + result: !ruby/object:Api::OpAsync::Result + path: 'response' + resource_inside_response: true + status: !ruby/object:Api::OpAsync::Status + path: 'done' + complete: True + allowed: + - True + - False + error: !ruby/object:Api::OpAsync::Error + path: 'error' + message: 'message' + description: |- + Describes the identifying information, config, and status of a Dataproc cluster + properties: + + - !ruby/object:Api::Type::String + name: 'projectId' + description: | + Required. The Google Cloud Platform project ID that the cluster belongs to. + - !ruby/object:Api::Type::String + name: 'clusterName' + description: | + Required. The cluster name, which must be unique within a project. The name must start with a lowercase letter, and can contain up to 51 lowercase letters, numbers, and hyphens. It cannot end with a hyphen. The name of a deleted cluster can be reused. + - !ruby/object:Api::Type::String + name: 'config' + description: | + Optional. The cluster config for a cluster of Compute Engine Instances. Note that Dataproc may set default values, and values may change when clusters are updated.Exactly one of ClusterConfig or VirtualClusterConfig must be specified. + - !ruby/object:Api::Type::String + name: 'virtualClusterConfig' + description: | + Optional. The virtual cluster config is used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview). Dataproc may set default values, and values may change when clusters are updated. Exactly one of config or virtual_cluster_config must be specified. + - !ruby/object:Api::Type::NestedObject + name: 'labels' + description: | + Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster. + properties: + - !ruby/object:Api::Type::String + name: 'additionalProperties' + description: | + + - !ruby/object:Api::Type::String + name: 'status' + description: | + Output only. Cluster status. + - !ruby/object:Api::Type::Array + name: 'statusHistory' + description: | + Output only. The previous cluster status. + item_type: Api::Type::String + - !ruby/object:Api::Type::String + name: 'clusterUuid' + description: | + Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster. + - !ruby/object:Api::Type::String + name: 'metrics' + description: | + Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. + diff --git a/mmv1/provider/file_template.rb b/mmv1/provider/file_template.rb index 8e837006a..277ed5f70 100644 --- a/mmv1/provider/file_template.rb +++ b/mmv1/provider/file_template.rb @@ -62,6 +62,10 @@ def generate(pwd, template, path, provider) Google::LOGGER.debug "Generating #{path}" path = pwd + '/' +path + + # create the directory if it doesn't exist + FileUtils.mkdir_p(File.dirname(path)) unless File.exist?(File.dirname(path)) + File.open(path, 'w') { |f| f.puts compile_file(ctx, pwd + '/' + template) } # Files are often generated in parallel. diff --git a/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization.erb b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization.erb new file mode 100644 index 000000000..be008cc81 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization.erb @@ -0,0 +1,32 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> +<% organization = grab_attributes(pwd)['organization'] -%> +describe google_apigee_organization(name: <%= doc_generation ? "' #{organization['name']}'":"organization['name']" -%>) do + it { should exist } + its('api_consumer_data_encryption_key_name') { should cmp <%= doc_generation ? "'#{organization['api_consumer_data_encryption_key_name']}'" : "organization['api_consumer_data_encryption_key_name']" -%> } + its('runtime_database_encryption_key_name') { should cmp <%= doc_generation ? "'#{organization['runtime_database_encryption_key_name']}'" : "organization['runtime_database_encryption_key_name']" -%> } + its('runtime_type') { should cmp <%= doc_generation ? "'#{organization['runtime_type']}'" : "organization['runtime_type']" -%> } + its('type') { should cmp <%= doc_generation ? "'#{organization['type']}'" : "organization['type']" -%> } + its('authorized_network') { should cmp <%= doc_generation ? "'#{organization['authorized_network']}'" : "organization['authorized_network']" -%> } + its('project_id') { should cmp <%= doc_generation ? "'#{organization['project_id']}'" : "organization['project_id']" -%> } + its('description') { should cmp <%= doc_generation ? "'#{organization['description']}'" : "organization['description']" -%> } + its('ca_certificate') { should cmp <%= doc_generation ? "'#{organization['ca_certificate']}'" : "organization['ca_certificate']" -%> } + its('subscription_type') { should cmp <%= doc_generation ? "'#{organization['subscription_type']}'" : "organization['subscription_type']" -%> } + its('customer_name') { should cmp <%= doc_generation ? "'#{organization['customer_name']}'" : "organization['customer_name']" -%> } + its('created_at') { should cmp <%= doc_generation ? "'#{organization['created_at']}'" : "organization['created_at']" -%> } + its('last_modified_at') { should cmp <%= doc_generation ? "'#{organization['last_modified_at']}'" : "organization['last_modified_at']" -%> } + its('subscription_plan') { should cmp <%= doc_generation ? "'#{organization['subscription_plan']}'" : "organization['subscription_plan']" -%> } + its('state') { should cmp <%= doc_generation ? "'#{organization['state']}'" : "organization['state']" -%> } + its('name') { should cmp <%= doc_generation ? "'#{organization['name']}'" : "organization['name']" -%> } + its('control_plane_encryption_key_name') { should cmp <%= doc_generation ? "'#{organization['control_plane_encryption_key_name']}'" : "organization['control_plane_encryption_key_name']" -%> } + its('analytics_region') { should cmp <%= doc_generation ? "'#{organization['analytics_region']}'" : "organization['analytics_region']" -%> } + its('api_consumer_data_location') { should cmp <%= doc_generation ? "'#{organization['api_consumer_data_location']}'" : "organization['api_consumer_data_location']" -%> } + its('display_name') { should cmp <%= doc_generation ? "'#{organization['display_name']}'" : "organization['display_name']" -%> } + its('apigee_project_id') { should cmp <%= doc_generation ? "'#{organization['apigee_project_id']}'" : "organization['apigee_project_id']" -%> } + its('expires_at') { should cmp <%= doc_generation ? "'#{organization['expires_at']}'" : "organization['expires_at']" -%> } + its('billing_type') { should cmp <%= doc_generation ? "'#{organization['billing_type']}'" : "organization['billing_type']" -%> } + +end + +describe google_apigee_organization(name: "does_not_exit") do + it { should_not exist } +end \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization_attributes.erb b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization_attributes.erb new file mode 100644 index 000000000..c727f9dd1 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organization_attributes.erb @@ -0,0 +1,3 @@ +gcp_project_id = input(:gcp_project_id, value: '<%= external_attribute(pwd, 'gcp_project_id') -%>', description: 'The GCP project identifier.') + + organization = input('organization', value: <%= JSON.pretty_generate(grab_attributes(pwd)['organization']) -%>, description: 'organization description') \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organizations.erb b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organizations.erb new file mode 100644 index 000000000..409733b51 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_apigee_organization/google_apigee_organizations.erb @@ -0,0 +1,5 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> + <% organization = grab_attributes(pwd)['organization'] -%> + describe google_apigee_organizations(parent: <%= doc_generation ? "' #{organization['parent']}'":"organization['parent']" -%>) do + it { should exist } + end \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment.erb b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment.erb new file mode 100644 index 000000000..4a6bd1c78 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment.erb @@ -0,0 +1,15 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> +<% project_location_environment = grab_attributes(pwd)['project_location_environment'] -%> +describe google_composer_project_location_environment(name: <%= doc_generation ? "' #{project_location_environment['name']}'":"project_location_environment['name']" -%>) do + it { should exist } + its('name') { should cmp <%= doc_generation ? "'#{project_location_environment['name']}'" : "project_location_environment['name']" -%> } + its('uuid') { should cmp <%= doc_generation ? "'#{project_location_environment['uuid']}'" : "project_location_environment['uuid']" -%> } + its('state') { should cmp <%= doc_generation ? "'#{project_location_environment['state']}'" : "project_location_environment['state']" -%> } + its('create_time') { should cmp <%= doc_generation ? "'#{project_location_environment['create_time']}'" : "project_location_environment['create_time']" -%> } + its('update_time') { should cmp <%= doc_generation ? "'#{project_location_environment['update_time']}'" : "project_location_environment['update_time']" -%> } + +end + +describe google_composer_project_location_environment(name: "does_not_exit") do + it { should_not exist } +end \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment_attributes.erb b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment_attributes.erb new file mode 100644 index 000000000..ca852318f --- /dev/null +++ b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environment_attributes.erb @@ -0,0 +1,3 @@ +gcp_project_id = input(:gcp_project_id, value: '<%= external_attribute(pwd, 'gcp_project_id') -%>', description: 'The GCP project identifier.') + + project_location_environment = input('project_location_environment', value: <%= JSON.pretty_generate(grab_attributes(pwd)['project_location_environment']) -%>, description: 'project_location_environment description') \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environments.erb b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environments.erb new file mode 100644 index 000000000..4f2ce2b58 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_composer_project_location_environment/google_composer_project_location_environments.erb @@ -0,0 +1,5 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> + <% project_location_environment = grab_attributes(pwd)['project_location_environment'] -%> + describe google_composer_project_location_environments(parent: <%= doc_generation ? "' #{project_location_environment['parent']}'":"project_location_environment['parent']" -%>) do + it { should exist } + end \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster.erb b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster.erb new file mode 100644 index 000000000..f7321c672 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster.erb @@ -0,0 +1,10 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> +<% project_region_cluster = grab_attributes(pwd)['project_region_cluster'] -%> +describe google_dataproc_project_region_cluster(clusterName: <%= doc_generation ? "' #{project_region_cluster['clusterName']}'":"project_region_cluster['clusterName']" -%>, projectId: <%= doc_generation ? "' #{project_region_cluster['projectId']}'":"project_region_cluster['projectId']" -%>, region: <%= doc_generation ? "' #{project_region_cluster['region']}'":"project_region_cluster['region']" -%>) do + it { should exist } + +end + +describe google_dataproc_project_region_cluster(clusterName: <%= doc_generation ? "' #{project_region_cluster['clusterName']}'":"project_region_cluster['clusterName']" -%>, projectId: <%= doc_generation ? "' #{project_region_cluster['projectId']}'":"project_region_cluster['projectId']" -%>, region: <%= doc_generation ? "' #{project_region_cluster['region']}'":"project_region_cluster['region']" -%>) do + it { should_not exist } +end \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster_attributes.erb b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster_attributes.erb new file mode 100644 index 000000000..eabebc0fd --- /dev/null +++ b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_cluster_attributes.erb @@ -0,0 +1,3 @@ +gcp_project_id = input(:gcp_project_id, value: '<%= external_attribute(pwd, 'gcp_project_id') -%>', description: 'The GCP project identifier.') + + project_region_cluster = input('project_region_cluster', value: <%= JSON.pretty_generate(grab_attributes(pwd)['project_region_cluster']) -%>, description: 'project_region_cluster description') \ No newline at end of file diff --git a/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_clusters.erb b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_clusters.erb new file mode 100644 index 000000000..615efbb58 --- /dev/null +++ b/mmv1/templates/inspec/examples/google_dataproc_project_region_cluster/google_dataproc_project_region_clusters.erb @@ -0,0 +1,5 @@ +<% gcp_project_id = "#{external_attribute(pwd, 'gcp_project_id', doc_generation)}" -%> + <% project_region_cluster = grab_attributes(pwd)['project_region_cluster'] -%> + describe google_dataproc_project_region_clusters(projectId: <%= doc_generation ? "' #{project_region_cluster['projectId']}'":"project_region_cluster['projectId']" -%>, region: <%= doc_generation ? "' #{project_region_cluster['region']}'":"project_region_cluster['region']" -%>) do + it { should exist } + end \ No newline at end of file diff --git a/mmv1/templates/inspec/plural_resource.erb b/mmv1/templates/inspec/plural_resource.erb index a067301ea..705db2bb1 100644 --- a/mmv1/templates/inspec/plural_resource.erb +++ b/mmv1/templates/inspec/plural_resource.erb @@ -39,7 +39,7 @@ name = resource_name(object, product) filter_table_config.connect(self, :table) -<% +<% link_query_items = object&.nested_query&.keys&.first || object.collection_url_key -%> def initialize(params = {}) @@ -82,7 +82,7 @@ link_query_items = object&.nested_query&.keys&.first || object.collection_url_ke def transformers { <% object.all_user_properties.reject(&:exclude_plural).each do |prop| -%> - '<%= prop.api_name -%>' => ->(obj) { <%= "return :#{ prop.override_name || prop.out_name }, #{parse_code(prop, 'obj')}" -%> }, + '<%= prop.api_name -%>' => ->(obj) { <%= "[:#{ prop.override_name || prop.out_name }, #{parse_code(prop, 'obj')}]" -%> }, <% end # object.all_user_properties.each -%> } end diff --git a/mmv1/templates/inspec/tests/integration/configuration/mm-attributes.yml b/mmv1/templates/inspec/tests/integration/configuration/mm-attributes.yml index d27043bc7..89ec8943a 100644 --- a/mmv1/templates/inspec/tests/integration/configuration/mm-attributes.yml +++ b/mmv1/templates/inspec/tests/integration/configuration/mm-attributes.yml @@ -881,8 +881,14 @@ tensorboard_experiment_run_time_series_resource: create_time : "value_createtime" value_type : "value_valuetype" +project_region_cluster: + cluster_name : "value_clustername" + project_id : "value_projectid" + region : "value_region" + project_location_image_version: parent : "value_parent" + vpn_gateway: project : "value_project" region : "value_region" @@ -896,9 +902,43 @@ vpn_gateway: self_link : "value_selflink" label_fingerprint : "value_labelfingerprint" stack_type : "value_stacktype" + organization_envgroup: name : "value_name" parent : "value_parent" last_modified_at : "value_lastmodifiedat" state : "value_state" - created_at : "value_createdat" \ No newline at end of file + created_at : "value_createdat" + +organization: + name : "value_name" + parent : "value_parent" + api_consumer_data_encryption_key_name : "value_apiconsumerdataencryptionkeyname" + runtime_database_encryption_key_name : "value_runtimedatabaseencryptionkeyname" + runtime_type : "value_runtimetype" + type : "value_type" + authorized_network : "value_authorizednetwork" + project_id : "value_projectid" + description : "value_description" + ca_certificate : "value_cacertificate" + subscription_type : "value_subscriptiontype" + customer_name : "value_customername" + created_at : "value_createdat" + last_modified_at : "value_lastmodifiedat" + subscription_plan : "value_subscriptionplan" + state : "value_state" + control_plane_encryption_key_name : "value_controlplaneencryptionkeyname" + analytics_region : "value_analyticsregion" + api_consumer_data_location : "value_apiconsumerdatalocation" + display_name : "value_displayname" + apigee_project_id : "value_apigeeprojectid" + expires_at : "value_expiresat" + billing_type : "value_billingtype" + +project_location_environment: + name : "value_name" + parent : "value_parent" + uuid : "value_uuid" + state : "value_state" + create_time : "value_createtime" + update_time : "value_updatetime"