mmv1/products/spanner/Instance.yaml (253 lines of code) (raw):

# Copyright 2024 Google Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- name: 'Instance' description: | An isolated set of Cloud Spanner resources on which databases can be hosted. references: guides: 'Official Documentation': 'https://cloud.google.com/spanner/' api: 'https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances' docs: id_format: '{{project}}/{{name}}' base_url: 'projects/{{project}}/instances' update_verb: 'PATCH' import_format: - 'projects/{{project}}/instances/{{name}}' - '{{project}}/{{name}}' - '{{name}}' timeouts: insert_minutes: 20 update_minutes: 20 delete_minutes: 20 autogen_async: true async: actions: ['create', 'update'] type: 'OpAsync' operation: base_url: '{{op_id}}' result: resource_inside_response: true custom_code: constants: 'templates/terraform/constants/spanner_instance.go.tmpl' encoder: 'templates/terraform/encoders/spanner_instance.go.tmpl' update_encoder: 'templates/terraform/encoders/spanner_instance_update.go.tmpl' decoder: 'templates/terraform/decoders/spanner_instance.go.tmpl' post_create: 'templates/terraform/post_create/sleep.go.tmpl' pre_update: 'templates/terraform/pre_update/spanner_instance.go.tmpl' pre_delete: 'templates/terraform/pre_delete/spanner_instance.go.tmpl' examples: - name: 'spanner_instance_basic' primary_resource_id: 'example' # Randomness skip_vcr: true - name: 'spanner_instance_processing_units' primary_resource_id: 'example' # Randomness skip_vcr: true - name: 'spanner_instance_multi_regional' primary_resource_id: 'example' # Randomness skip_vcr: true virtual_fields: - name: 'force_destroy' description: | When deleting a spanner instance, this boolean option will delete all backups of this instance. This must be set to true if you created a backup manually in the console. type: Boolean default_value: false parameters: properties: - name: 'name' type: String description: | A unique identifier for the instance, which cannot be changed after the instance is created. The name must be between 6 and 30 characters in length. If not provided, a random string starting with `tf-` will be selected. immutable: true # This resource supports a sort of odd autogenerate-if-not-set # system, which is done in the encoder. Consequently we have # to interpret "not set" as "use the name in state". default_from_api: true custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl' validation: regex: '^[a-z][-a-z0-9]*[a-z0-9]$' - name: 'config' type: ResourceRef description: | The name of the instance's configuration (similar but not quite the same as a region) which defines the geographic placement and replication of your databases in this instance. It determines where your data is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc. In order to obtain a valid list please consult the [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances). required: true immutable: true custom_expand: 'templates/terraform/custom_expand/spanner_instance_config.go.tmpl' resource: 'InstanceConfig' imports: 'name' - name: 'displayName' type: String description: | The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length. required: true - name: 'num_nodes' type: Integer description: | The number of nodes allocated to this instance. Exactly one of either node_count or processing_units must be present in terraform. api_name: nodeCount default_from_api: true exactly_one_of: - 'num_nodes' - 'processing_units' - 'autoscaling_config' - name: 'processingUnits' type: Integer description: | The number of processing units allocated to this instance. Exactly one of processing_units or node_count must be present in terraform. default_from_api: true exactly_one_of: - 'num_nodes' - 'processing_units' - 'autoscaling_config' - name: 'labels' type: KeyValueLabels description: | An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - name: 'state' type: Enum description: | Instance status: `CREATING` or `READY`. output: true enum_values: - 'READY' - 'CREATING' - name: 'autoscalingConfig' type: NestedObject description: | The autoscaling configuration. Autoscaling is enabled if this field is set. When autoscaling is enabled, num_nodes and processing_units are treated as, OUTPUT_ONLY fields and reflect the current compute capacity allocated to the instance. exactly_one_of: - 'num_nodes' - 'processing_units' - 'autoscaling_config' properties: - name: 'autoscalingLimits' type: NestedObject description: | Defines scale in controls to reduce the risk of response latency and outages due to abrupt scale-in events. Users can define the minimum and maximum compute capacity allocated to the instance, and the autoscaler will only scale within that range. Users can either use nodes or processing units to specify the limits, but should use the same unit to set both the min_limit and max_limit. properties: - name: 'minProcessingUnits' type: Integer description: | Specifies minimum number of processing units allocated to the instance. If set, this number should be multiples of 1000. exactly_one_of: - 'min_processing_units' - 'min_nodes' - name: 'maxProcessingUnits' type: Integer description: | Specifies maximum number of processing units allocated to the instance. If set, this number should be multiples of 1000 and be greater than or equal to min_processing_units. exactly_one_of: - 'max_processing_units' - 'max_nodes' - name: 'minNodes' type: Integer description: | Specifies number of nodes allocated to the instance. If set, this number should be greater than or equal to 1. exactly_one_of: - 'min_processing_units' - 'min_nodes' required_with: - 'max_nodes' - name: 'maxNodes' type: Integer description: | Specifies maximum number of nodes allocated to the instance. If set, this number should be greater than or equal to min_nodes. exactly_one_of: - 'max_processing_units' - 'max_nodes' required_with: - 'min_nodes' - name: 'autoscalingTargets' type: NestedObject description: | Defines scale in controls to reduce the risk of response latency and outages due to abrupt scale-in events properties: - name: 'highPriorityCpuUtilizationPercent' type: Integer description: | Specifies the target high priority cpu utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization).. - name: 'storageUtilizationPercent' type: Integer description: | Specifies the target storage utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). - name: 'asymmetricAutoscalingOptions' type: Array description: | Asymmetric autoscaling options for specific replicas. item_type: type: NestedObject properties: - name: 'replicaSelection' type: NestedObject required: true properties: - name: 'location' type: String required: true description: | The location of the replica to apply asymmetric autoscaling options. - name: 'overrides' type: NestedObject required: true properties: - name: 'autoscalingLimits' type: NestedObject required: true properties: - name: 'minNodes' type: Integer required: true description: | The minimum number of nodes for this specific replica. - name: 'maxNodes' type: Integer required: true description: | The maximum number of nodes for this specific replica. - name: 'edition' type: Enum description: | The edition selected for this instance. Different editions provide different capabilities at different price points. default_from_api: true enum_values: - 'EDITION_UNSPECIFIED' - 'STANDARD' - 'ENTERPRISE' - 'ENTERPRISE_PLUS' - name: 'defaultBackupScheduleType' type: Enum description: | Controls the default backup behavior for new databases within the instance. Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances. if unset or NONE, no default backup schedule will be created for new databases within the instance. default_from_api: true enum_values: - 'NONE' - 'AUTOMATIC'