mmv1/products/compute/RegionInstanceGroupManager.yaml (215 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: 'RegionInstanceGroupManager'
api_variant_patterns:
- 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}'
kind: 'compute#instanceGroupManager'
description: |
Creates a managed instance group using the information that you specify in
the request. After the group is created, it schedules an action to create
instances in the group using the specified instance template. This
operation is marked as DONE when the group is created even if the
instances in the group have not yet been created. You must separately
verify the status of the individual instances.
A managed instance group can have up to 1000 VM instances per group.
exclude: true
references:
guides:
'Creating Regional Managed Instance Groups': 'https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups'
api: 'https://cloud.google.com/compute/docs/reference/rest/v1/regionInstanceGroupManagers'
docs:
base_url: 'projects/{{project}}/regions/{{region}}/instanceGroupManagers'
has_self_link: true
timeouts:
insert_minutes: 20
update_minutes: 20
delete_minutes: 20
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
result:
resource_inside_response: false
collection_url_key: 'items'
custom_code:
parameters:
- name: 'region'
type: ResourceRef
description: 'The region the managed instance group resides.'
required: true
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'Region'
imports: 'name'
properties:
- name: 'baseInstanceName'
type: String
description: |
The base instance name to use for instances in this group. The value
must be 1-58 characters long. Instances are named by appending a
hyphen and a random four-character string to the base instance name.
The base instance name must comply with RFC1035.
required: true
- name: 'instanceGroupManagerId'
type: Integer
description: |
The unique identifier number for the resource. This identifier is defined by the server.
api_name: id
output: true
- name: 'creationTimestamp'
type: Time
description: |
The creation timestamp for this managed instance group in RFC3339
text format.
output: true
- name: 'currentActions'
type: NestedObject
description: |
The list of instance actions and the number of instances in this
managed instance group that are scheduled for each of those actions.
output: true
properties:
- name: 'abandoning'
type: Integer
description: |
The total number of instances in the managed instance group that
are scheduled to be abandoned. Abandoning an instance removes it
from the managed instance group without deleting it.
output: true
- name: 'creating'
type: Integer
description: |
The number of instances in the managed instance group that are
scheduled to be created or are currently being created. If the
group fails to create any of these instances, it tries again until
it creates the instance successfully.
If you have disabled creation retries, this field will not be
populated; instead, the creatingWithoutRetries field will be
populated.
output: true
- name: 'creatingWithoutRetries'
type: Integer
description: |
The number of instances that the managed instance group will
attempt to create. The group attempts to create each instance only
once. If the group fails to create any of these instances, it
decreases the group's targetSize value accordingly.
output: true
- name: 'deleting'
type: Integer
description: |
The number of instances in the managed instance group that are
scheduled to be deleted or are currently being deleted.
output: true
- name: 'none'
type: Integer
description: |
The number of instances in the managed instance group that are
running and have no scheduled actions.
output: true
- name: 'recreating'
type: Integer
description: |
The number of instances in the managed instance group that are
scheduled to be recreated or are currently being being recreated.
Recreating an instance deletes the existing root persistent disk
and creates a new disk from the image that is defined in the
instance template.
output: true
- name: 'refreshing'
type: Integer
description: |
The number of instances in the managed instance group that are
being reconfigured with properties that do not require a restart
or a recreate action. For example, setting or removing target
pools for the instance.
output: true
- name: 'restarting'
type: Integer
description: |
The number of instances in the managed instance group that are
scheduled to be restarted or are currently being restarted.
output: true
- name: 'description'
type: String
description: |
An optional description of this resource. Provide this property when
you create the resource.
immutable: true
# fingerprint ignored as it is an internal locking detail
- name: 'id'
type: Integer
description: 'A unique identifier for this resource'
output: true
- name: 'instanceGroup'
type: ResourceRef
description: 'The instance group being managed'
output: true
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'InstanceGroup'
imports: 'selfLink'
- name: 'instanceTemplate'
type: ResourceRef
description: |
The instance template that is specified for this managed instance
group. The group uses this template to create all new instances in the
managed instance group.
required: true
# kind is internal transport detail
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'InstanceTemplate'
imports: 'selfLink'
- name: 'name'
type: String
description: |
The name of the managed instance group. The name must be 1-63
characters long, and comply with RFC1035.
required: true
# TODO(nelsonjr): Make namedPorts a NameValue(name[string], port[integer])
- name: 'namedPorts'
type: Array
description:
Named ports configured for the Instance Groups complementary to this
Instance Group Manager.
item_type:
type: NestedObject
properties:
- name: 'name'
type: String
description: |
The name for this named port. The name must be 1-63 characters
long, and comply with RFC1035.
- name: 'port'
type: Integer
description:
The port number, which can be a value between 1 and 65535.
- name: 'targetPools'
type: Array
description: |
TargetPool resources to which instances in the instanceGroup field are
added. The target pools automatically apply to all of the instances in
the managed instance group.
custom_expand: 'templates/terraform/custom_expand/array_resourceref_with_validation.go.tmpl'
item_type:
name: 'targetPool'
type: ResourceRef
description: 'The targetPool to receive managed instances.'
resource: 'TargetPool'
imports: 'selfLink'
- name: 'targetSize'
type: Integer
description: |
The target number of running instances for this managed instance
group. Deleting or abandoning instances reduces this number. Resizing
the group changes this number.
- name: 'autoHealingPolicies'
type: Array
description: |
The autohealing policy for this managed instance group
item_type:
type: NestedObject
properties:
- name: 'healthCheck'
type: String
description: |
The URL for the health check that signals autohealing.
- name: 'initialDelaySec'
type: Integer
description: |
The number of seconds that the managed instance group waits
before it applies autohealing policies to new instances or recently recreated instances