mmv1/products/workbench/Instance.yaml (563 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: A Workbench instance.
references:
guides:
'Official Documentation': 'https://cloud.google.com/vertex-ai/docs/workbench/instances/introduction'
api: 'https://cloud.google.com/vertex-ai/docs/workbench/reference/rest/v2/projects.locations.instances'
docs:
id_format: 'projects/{{project}}/locations/{{location}}/instances/{{name}}'
base_url: 'projects/{{project}}/locations/{{location}}/instances'
self_link: 'projects/{{project}}/locations/{{location}}/instances/{{name}}'
create_url: 'projects/{{project}}/locations/{{location}}/instances?instanceId={{name}}'
update_verb: 'PATCH'
update_mask: true
import_format:
- 'projects/{{project}}/locations/{{location}}/instances/{{name}}'
timeouts:
insert_minutes: 40
update_minutes: 20
delete_minutes: 20
autogen_async: true
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
result:
resource_inside_response: true
iam_policy:
method_name_separator: ':'
parent_resource_attribute: 'name'
base_url: 'projects/{{project}}/locations/{{location}}/instances/{{name}}'
example_config_body: 'templates/terraform/iam/iam_attributes.go.tmpl'
import_format:
- 'projects/{{project}}/locations/{{location}}/instances/{{name}}'
- '{{name}}'
custom_code:
constants: 'templates/terraform/constants/workbench_instance.go.tmpl'
post_create: 'templates/terraform/post_create/workbench_instance.go.tmpl'
pre_update: 'templates/terraform/pre_update/workbench_instance.go.tmpl'
post_update: 'templates/terraform/post_update/workbench_instance.go.tmpl'
sweeper:
url_substitutions:
- region: "us-central1-a"
- region: "us-west1-a"
examples:
- name: 'workbench_instance_basic'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
- name: 'workbench_instance_basic_container'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
- name: 'workbench_instance_basic_gpu'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
ignore_read_extra:
- 'gce_setup.0.vm_image'
- name: 'workbench_instance_labels_stopped'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
network_name: 'wbi-test-default'
test_env_vars:
service_account: 'SERVICE_ACCT'
ignore_read_extra:
- 'desired_state'
- name: 'workbench_instance_full'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
network_name: 'wbi-test-default'
key_name: 'my-crypto-key'
test_env_vars:
project_id: 'PROJECT_NAME'
service_account: 'SERVICE_ACCT'
test_vars_overrides:
'key_name': 'acctest.BootstrapKMSKeyInLocation(t, "us-central1").CryptoKey.Name'
ignore_read_extra:
- 'gce_setup.0.vm_image'
- 'gce_setup.0.boot_disk.0.disk_type'
- 'gce_setup.0.data_disks.0.disk_type'
- name: 'workbench_instance_confidential_compute'
primary_resource_id: 'instance'
primary_resource_name: 'fmt.Sprintf("tf-test-workbench-instance%s", context["random_suffix"])'
region_override: 'us-west1-a'
vars:
instance_name: 'workbench-instance'
virtual_fields:
- name: 'desired_state'
description: |
Desired state of the Workbench Instance. Set this field to `ACTIVE` to start the Instance, and `STOPPED` to stop the Instance.
type: String
default_value: "ACTIVE"
parameters:
- name: 'location'
type: String
description: Part of `parent`. See documentation of `projectsId`.
url_param_only: true
required: true
immutable: true
- name: 'instanceId'
type: String
description: Required. User-defined unique ID of this instance.
url_param_only: true
immutable: true
properties:
- name: 'name'
type: String
description: |
The name of this workbench instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`
url_param_only: true
required: true
immutable: true
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
- name: 'gceSetup'
type: NestedObject
description: |
The definition of how to configure a VM instance outside of Resources and Identity.
default_from_api: true
properties:
- name: 'machineType'
type: String
description: |
Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource
default_from_api: true
diff_suppress_func: 'tpgresource.CompareSelfLinkOrResourceName'
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
- name: 'acceleratorConfigs'
type: Array
description: |
The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
[enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
Currently supports only one accelerator configuration.
diff_suppress_func: 'WorkbenchInstanceAcceleratorDiffSuppress'
item_type:
type: NestedObject
properties:
- name: 'type'
type: Enum
description: |
Optional. Type of this accelerator.
enum_values:
- 'NVIDIA_TESLA_P100'
- 'NVIDIA_TESLA_V100'
- 'NVIDIA_TESLA_P4'
- 'NVIDIA_TESLA_T4'
- 'NVIDIA_TESLA_A100'
- 'NVIDIA_A100_80GB'
- 'NVIDIA_L4'
- 'NVIDIA_TESLA_T4_VWS'
- 'NVIDIA_TESLA_P100_VWS'
- 'NVIDIA_TESLA_P4_VWS'
- name: 'coreCount'
type: String
description: |
Optional. Count of cores of this accelerator.
- name: 'shieldedInstanceConfig'
type: NestedObject
description: |
A set of Shielded Instance options. See [Images using supported Shielded
VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
Not all combinations are valid.
default_from_api: true
send_empty_value: true
allow_empty_object: true
properties:
- name: 'enableSecureBoot'
type: Boolean
description: |
Optional. Defines whether the VM instance has Secure Boot enabled.
Secure Boot helps ensure that the system only runs authentic software by verifying
the digital signature of all boot components, and halting the boot process
if signature verification fails. Disabled by default.
- name: 'enableVtpm'
type: Boolean
description: |
Optional. Defines whether the VM instance has the vTPM enabled.
Enabled by default.
- name: 'enableIntegrityMonitoring'
type: Boolean
description: |
Optional. Defines whether the VM instance has integrity monitoring
enabled. Enables monitoring and attestation of the boot integrity of the VM
instance. The attestation is performed against the integrity policy baseline.
This baseline is initially derived from the implicitly trusted boot image
when the VM instance is created. Enabled by default.
- name: 'serviceAccounts'
type: Array
description: |
The service account that serves as an identity for the VM instance. Currently supports only one service account.
immutable: true
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'email'
type: String
description: Optional. Email address of the service account.
immutable: true
default_from_api: true
- name: 'scopes'
type: Array
description: |
Output only. The list of scopes to be made available for this
service account. Set by the CLH to https://www.googleapis.com/auth/cloud-platform
output: true
item_type:
type: String
- name: 'vmImage'
type: NestedObject
description: |
Definition of a custom Compute Engine virtual machine image for starting
a workbench instance with the environment installed directly on the VM.
immutable: true
default_from_api: true
conflicts:
- gce_setup.0.container_image
custom_flatten: 'templates/terraform/custom_flatten/workbench_instance_vm_image_flatten.go.tmpl'
properties:
- name: 'project'
type: String
description: |
The name of the Google Cloud project that this VM image belongs to.
Format: {project_id}
immutable: true
- name: 'name'
type: String
description: |
Optional. Use VM image name to find the image.
immutable: true
- name: 'family'
type: String
description: |
Optional. Use this VM image family to find the image; the newest
image in this family will be used.
immutable: true
- name: 'containerImage'
type: NestedObject
description: |
Use a container image to start the workbench instance.
conflicts:
- gce_setup.0.vm_image
properties:
- name: 'repository'
type: String
description: |
The path to the container image repository.
For example: gcr.io/{project_id}/{imageName}
required: true
- name: 'tag'
type: String
description: |
The tag of the container image. If not specified, this defaults to the latest tag.
- name: 'bootDisk'
type: NestedObject
description: |
The definition of a boot disk.
default_from_api: true
properties:
- name: 'diskSizeGb'
type: String
description: |
Optional. The size of the boot disk in GB attached to this instance,
up to a maximum of 64000 GB (64 TB). If not specified, this defaults to the
recommended value of 150GB.
default_from_api: true
- name: 'diskType'
type: Enum
description: |
Optional. Indicates the type of the disk.
immutable: true
default_from_api: true
custom_flatten: 'templates/terraform/custom_flatten/workbench_instance_boot_disk_type_flatten.go.tmpl'
enum_values:
- 'PD_STANDARD'
- 'PD_SSD'
- 'PD_BALANCED'
- 'PD_EXTREME'
- name: 'diskEncryption'
type: Enum
description: |
Optional. Input only. Disk encryption method used on the boot and
data disks, defaults to GMEK.
immutable: true
default_from_api: true
enum_values:
- 'GMEK'
- 'CMEK'
- name: 'kmsKey'
type: String
description: |
'Optional. The KMS key used to encrypt the disks, only
applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}`
Learn more about using your own encryption keys.'
immutable: true
diff_suppress_func: 'WorkbenchInstanceKmsDiffSuppress'
- name: 'dataDisks'
type: Array
description: |
Data disks attached to the VM instance. Currently supports only one data disk.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'diskSizeGb'
type: String
description: |
Optional. The size of the disk in GB attached to this VM instance,
up to a maximum of 64000 GB (64 TB). If not specified, this defaults to
100.
default_from_api: true
- name: 'diskType'
type: Enum
description: |
Optional. Input only. Indicates the type of the disk.
immutable: true
custom_flatten: 'templates/terraform/custom_flatten/workbench_instance_data_disk_type_flatten.go.tmpl'
enum_values:
- 'PD_STANDARD'
- 'PD_SSD'
- 'PD_BALANCED'
- 'PD_EXTREME'
- name: 'diskEncryption'
type: Enum
description: |
Optional. Input only. Disk encryption method used on the boot
and data disks, defaults to GMEK.
immutable: true
default_from_api: true
enum_values:
- 'GMEK'
- 'CMEK'
- name: 'kmsKey'
type: String
description: |
'Optional. The KMS key used to encrypt the disks,
only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}`
Learn more about using your own encryption keys.'
immutable: true
diff_suppress_func: 'WorkbenchInstanceKmsDiffSuppress'
max_size: 1
- name: 'networkInterfaces'
type: Array
description: |
The network interfaces for the VM. Supports only one interface.
immutable: true
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'network'
type: String
description: |
Optional. The name of the VPC that this VM instance is in.
immutable: true
default_from_api: true
diff_suppress_func: 'tpgresource.CompareSelfLinkRelativePaths'
- name: 'subnet'
type: String
description: |
Optional. The name of the subnet that this VM instance is in.
immutable: true
default_from_api: true
diff_suppress_func: 'tpgresource.CompareSelfLinkRelativePaths'
- name: 'nicType'
type: Enum
description: |
Optional. The type of vNIC to be used on this interface. This
may be gVNIC or VirtioNet.
immutable: true
enum_values:
- 'VIRTIO_NET'
- 'GVNIC'
- name: 'accessConfigs'
type: Array
description: |
Optional. An array of configurations for this interface. Currently, only one access
config, ONE_TO_ONE_NAT, is supported. If no accessConfigs specified, the
instance will have an external internet access through an ephemeral
external IP address.
immutable: true
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'externalIp'
type: String
description: |
An external IP address associated with this instance. Specify an unused
static external IP address available to the project or leave this field
undefined to use an IP from a shared ephemeral IP address pool. If you
specify a static external IP address, it must live in the same region as
the zone of the instance.
required: true
immutable: true
- name: 'disablePublicIp'
type: Boolean
description: |
Optional. If true, no external IP will be assigned to this VM instance.
immutable: true
default_from_api: true
- name: 'tags'
type: Array
description: |
Optional. The Compute Engine tags to add to instance (see [Tagging
instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
immutable: true
default_from_api: true
diff_suppress_func: 'WorkbenchInstanceTagsDiffSuppress'
item_type:
type: String
- name: 'metadata'
type: KeyValuePairs
description: |
Optional. Custom metadata to apply to this instance.
default_from_api: true
diff_suppress_func: 'WorkbenchInstanceMetadataDiffSuppress'
- name: 'enableIpForwarding'
type: Boolean
description: |
Optional. Flag to enable ip forwarding or not, default false/off.
https://cloud.google.com/vpc/docs/using-routes#canipforward
immutable: true
- name: 'confidentialInstanceConfig'
type: NestedObject
immutable: true
description: |
Confidential instance configuration.
properties:
- name: 'confidentialInstanceType'
type: Enum
description: |
Defines the type of technology used by the confidential instance.
enum_values:
- 'SEV'
- name: 'proxyUri'
type: String
description: |
Output only. The proxy endpoint that is used to access the Jupyter notebook.
output: true
- name: 'instanceOwners'
type: Array
description: |
'Optional. Input only. The owner of this instance after creation. Format:
`alias@example.com` Currently supports one owner only. If not specified, all of
the service account users of your VM instance''s service account can use the instance.
If specified, sets the access mode to `Single user`. For more details, see
https://cloud.google.com/vertex-ai/docs/workbench/instances/manage-access-jupyterlab'
immutable: true
ignore_read: true
item_type:
type: String
- name: 'creator'
type: String
description: |
Output only. Email address of entity that sent original CreateInstance request.
output: true
- name: 'state'
type: String
description: |
Output only. The state of this instance.
output: true
- name: 'upgradeHistory'
type: Array
description: |
Output only. The upgrade history of this instance.
output: true
item_type:
type: NestedObject
properties:
- name: 'snapshot'
type: String
description: |
Optional. The snapshot of the boot disk of this workbench instance before upgrade.
- name: 'vmImage'
type: String
description: |
Optional. The VM image before this instance upgrade.
- name: 'containerImage'
type: String
description: |
Optional. The container image before this instance upgrade.
- name: 'framework'
type: String
description: |
Optional. The framework of this workbench instance.
- name: 'version'
type: String
description: |
Optional. The version of the workbench instance before this upgrade.
- name: 'state'
type: String
description: |
Output only. The state of this instance upgrade history entry.
output: true
- name: 'createTime'
type: String
description: |
An RFC3339 timestamp in UTC time. This in the format of yyyy-MM-ddTHH:mm:ss.SSSZ.
The milliseconds portion (".SSS") is optional.
- name: 'action'
type: String
description: |
Optional. Action. Rolloback or Upgrade.
- name: 'targetVersion'
type: String
description: |
Optional. Target VM Version, like m63.
- name: 'healthState'
type: String
description: |
Output only. Instance health_state.
output: true
- name: 'healthInfo'
type: NestedObject
description: |
'Output only. Additional information about instance health. Example:
healthInfo": { "docker_proxy_agent_status": "1", "docker_status": "1", "jupyterlab_api_status":
"-1", "jupyterlab_status": "-1", "updated": "2020-10-18 09:40:03.573409" }'
output: true
properties:
[]
- name: 'createTime'
type: String
description: |
An RFC3339 timestamp in UTC time. This in the format of yyyy-MM-ddTHH:mm:ss.SSSZ.
The milliseconds portion (".SSS") is optional.
output: true
- name: 'updateTime'
type: String
description: |
An RFC3339 timestamp in UTC time. This in the format of yyyy-MM-ddTHH:mm:ss.SSSZ.
The milliseconds portion (".SSS") is optional.
output: true
- name: 'disableProxyAccess'
type: Boolean
description: |
Optional. If true, the workbench instance will not register with the proxy.
immutable: true
- name: 'labels'
type: KeyValueLabels
description: |
Optional. Labels to apply to this instance. These can be later modified
by the UpdateInstance method.
diff_suppress_func: 'WorkbenchInstanceLabelsDiffSuppress'
- name: 'enableThirdPartyIdentity'
type: Boolean
description: |
Flag that specifies that a notebook can be accessed with third party
identity provider.