mmv1/products/securesourcemanager/Instance.yaml (260 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'
kind: 'securesourcemanager#instance'
description: 'Instances are deployed to an available Google Cloud region and are accessible via their web interface.'
references:
guides:
'Official Documentation': 'https://cloud.google.com/secure-source-manager/docs/create-instance'
api: 'https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances'
docs:
base_url: 'projects/{{project}}/locations/{{location}}/instances?instance_id={{instance_id}}'
self_link: 'projects/{{project}}/locations/{{location}}/instances/{{instance_id}}'
immutable: true
import_format:
- 'projects/{{project}}/locations/{{location}}/instances/{{instance_id}}'
- '{{instance_id}}'
timeouts:
insert_minutes: 120
update_minutes: 120
delete_minutes: 120
autogen_async: true
async:
actions: ['create', 'delete']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
timeouts:
insert_minutes: 120
update_minutes: 120
delete_minutes: 120
result:
resource_inside_response: false
iam_policy:
method_name_separator: ':'
allowed_iam_role: 'roles/securesourcemanager.instanceManager'
admin_iam_role: 'roles/securesourcemanager.instanceOwner'
parent_resource_attribute: 'instance_id'
example_config_body: 'templates/terraform/iam/iam_attributes.go.tmpl'
import_format:
- 'projects/{{project}}/locations/{{location}}/instances/{{instance_id}}'
- '{{instance_id}}'
custom_code:
examples:
- name: 'secure_source_manager_instance_basic'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
instance_id: 'my-instance'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
oics_vars_overrides:
'prevent_destroy': 'false'
ignore_read_extra:
- 'update_time'
- name: 'secure_source_manager_instance_cmek'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
instance_id: 'my-instance'
kms_key_name: 'my-key'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
'kms_key_name': 'acctest.BootstrapKMSKeyWithPurposeInLocationAndName(t, "ENCRYPT_DECRYPT", "us-central1", "tf-bootstrap-secure-source-manager-key1").CryptoKey.Name'
oics_vars_overrides:
'prevent_destroy': 'false'
ignore_read_extra:
- 'update_time'
- name: 'secure_source_manager_instance_private'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
instance_id: 'my-instance'
ca_pool_id: 'ca-pool'
root_ca_id: 'root-ca'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
oics_vars_overrides:
'prevent_destroy': 'false'
external_providers: ["time"]
ignore_read_extra:
- 'update_time'
- name: 'secure_source_manager_instance_private_psc_backend'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
network_id: 'my-network'
subnet_id: 'my-subnet'
neg_id: 'my-neg'
backend_id: 'my-backend-service'
proxy_subnet_id: 'my-proxy-subnet'
target_proxy_id: 'my-target-proxy'
fw_rule_to_target_proxy_id: 'fw-rule-target-proxy'
dns_zone_id: 'my-dns-zone'
instance_id: 'my-instance'
ca_pool_id: 'ca-pool'
root_ca_id: 'root-ca'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
oics_vars_overrides:
'prevent_destroy': 'false'
external_providers: ["time"]
ignore_read_extra:
- 'update_time'
- name: 'secure_source_manager_instance_private_psc_endpoint'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
network_id: 'my-network'
subnet_id: 'my-subnet'
address_id: 'my-address'
fw_rule_to_service_attachment_id: 'fw-rule-service-attachment'
dns_zone_id: 'my-dns-zone'
instance_id: 'my-instance'
ca_pool_id: 'ca-pool'
root_ca_id: 'root-ca'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
oics_vars_overrides:
'prevent_destroy': 'false'
external_providers: ["time"]
ignore_read_extra:
- 'update_time'
- name: 'secure_source_manager_instance_workforce_identity_federation'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-my-instance%s", context["random_suffix"])'
vars:
instance_id: 'my-instance'
prevent_destroy: 'true'
test_vars_overrides:
'prevent_destroy': 'false'
oics_vars_overrides:
'prevent_destroy': 'false'
ignore_read_extra:
- 'update_time'
parameters:
- name: 'location'
type: String
description: |
The location for the Instance.
url_param_only: true
required: true
immutable: true
- name: 'instance_id'
type: String
description: |
The name for the Instance.
url_param_only: true
required: true
immutable: true
properties:
- name: 'name'
type: String
description: |
The resource name for the Instance.
immutable: true
output: true
- name: 'createTime'
type: Time
description: |
Time the Instance was created in UTC.
output: true
- name: 'updateTime'
type: Time
description: |
Time the Instance was updated in UTC.
output: true
- name: 'labels'
type: KeyValueLabels
description: |
Labels as key value pairs.
- name: 'state'
type: Enum
description: |
The current state of the Instance.
output: true
enum_values:
- 'CREATING'
- 'ACTIVE'
- 'DELETING'
- 'PAUSED'
- 'UNKNOWN'
- name: 'hostConfig'
type: NestedObject
description: |
A list of hostnames for this instance.
output: true
properties:
- name: 'html'
type: String
description: 'HTML hostname.'
output: true
- name: 'api'
type: String
description: 'API hostname.'
output: true
- name: 'gitHttp'
type: String
description: 'Git HTTP hostname.'
output: true
- name: 'gitSsh'
type: String
description: 'Git SSH hostname.'
output: true
- name: 'stateNote'
type: Enum
description: |
Provides information about the current instance state.
output: true
enum_values:
- 'STATE_NOTE_UNSPECIFIED'
- 'PAUSED_CMEK_UNAVAILABLE'
- 'INSTANCE_RESUMING'
- name: 'kmsKey'
type: String
description: |
Customer-managed encryption key name, in the format projects/*/locations/*/keyRings/*/cryptoKeys/*.
immutable: true
- name: 'privateConfig'
type: NestedObject
description: |
Private settings for private instance.
immutable: true
properties:
- name: 'isPrivate'
type: Boolean
description: |
'Indicate if it's private instance.'
required: true
immutable: true
- name: 'caPool'
type: String
description: |
CA pool resource, resource must in the format of `projects/{project}/locations/{location}/caPools/{ca_pool}`.
required: true
immutable: true
- name: 'httpServiceAttachment'
type: String
description: |
Service Attachment for HTTP, resource is in the format of `projects/{project}/regions/{region}/serviceAttachments/{service_attachment}`.
output: true
- name: 'sshServiceAttachment'
type: String
description: |
Service Attachment for SSH, resource is in the format of `projects/{project}/regions/{region}/serviceAttachments/{service_attachment}`.
output: true
- name: 'workforceIdentityFederationConfig'
type: NestedObject
description: |
Configuration for Workforce Identity Federation to support third party identity provider.
If unset, defaults to the Google OIDC IdP.
immutable: true
properties:
- name: 'enabled'
type: Boolean
description: |
'Whether Workforce Identity Federation is enabled.'
required: true
immutable: true