mmv1/products/vpcaccess/Connector.yaml (170 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: 'Connector'
kind: 'vpcaccess#Connector'
description: 'Serverless VPC Access connector resource.'
references:
guides:
'Configuring Serverless VPC Access': 'https://cloud.google.com/vpc/docs/configure-serverless-vpc-access'
api: 'https://cloud.google.com/vpc/docs/reference/vpcaccess/rest/v1/projects.locations.connectors'
docs:
base_url: 'projects/{{project}}/locations/{{region}}/connectors'
create_url: 'projects/{{project}}/locations/{{region}}/connectors?connectorId={{name}}'
update_url: 'projects/{{project}}/locations/{{region}}/connectors/{{name}}'
update_verb: 'PATCH'
update_mask: true
timeouts:
insert_minutes: 20
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
custom_code:
encoder: 'templates/terraform/encoders/no_send_name.go.tmpl'
decoder: 'templates/terraform/decoders/long_name_to_self_link.go.tmpl'
post_create: 'templates/terraform/post_create/sleep.go.tmpl'
constants: 'templates/terraform/constants/vpc_access_connector.go.tmpl'
pre_update: 'templates/terraform/pre_update/vpc_access_connector_instances.go.tmpl'
custom_diff:
- 'customdiff.ForceNewIfChange("min_instances", isInstanceShrinkage)'
- 'customdiff.ForceNewIfChange("max_instances", isInstanceShrinkage)'
examples:
- name: 'vpc_access_connector'
primary_resource_id: 'connector'
vars:
name: 'vpc-con'
network_name: 'default'
test_vars_overrides:
'network_name': 'acctest.BootstrapSharedServiceNetworkingConnection(t, "vpc-access-connector")'
- name: 'vpc_access_connector_shared_vpc'
primary_resource_id: 'connector'
vars:
name: 'vpc-con'
network_name: 'default'
test_vars_overrides:
'network_name': 'acctest.BootstrapSharedServiceNetworkingConnection(t, "vpc-access-connector")'
parameters:
- name: 'region'
type: String
description: |
Region where the VPC Access connector resides. If it is not provided, the provider region is used.
url_param_only: true
immutable: true
default_from_api: true
properties:
- name: 'name'
type: String
description: |
The name of the resource (Max 25 characters).
required: true
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
immutable: true
- name: 'network'
type: String
description: |
Name or self_link of the VPC network. Required if `ip_cidr_range` is set.
default_from_api: true
exactly_one_of:
- 'network'
- 'subnet.0.name'
diff_suppress_func: 'tpgresource.CompareResourceNames'
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
custom_expand: 'templates/terraform/custom_expand/resource_from_self_link.go.tmpl'
immutable: true
- name: 'ipCidrRange'
type: String
description: |
The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`.
required_with:
- 'network'
immutable: true
- name: 'state'
type: Enum
description: |
State of the VPC access connector.
output: true
enum_values:
- 'READY'
- 'CREATING'
- 'DELETING'
- 'ERROR'
- 'UPDATING'
immutable: true
- name: 'machineType'
type: String
description: |
Machine type of VM Instance underlying connector. Default is e2-micro
default_value: "e2-micro"
- name: 'minThroughput'
type: Integer
description: |
Minimum throughput of the connector in Mbps. Default and min is 200. Refers to the expected throughput when using an e2-micro machine type.
Value must be a multiple of 100 from 200 through 900. Must be lower than the value specified by max_throughput.
Only one of `min_throughput` and `min_instances` can be specified. The use of min_throughput is discouraged in favor of min_instances.
default_from_api: true
conflicts:
- min_instances
validation:
function: 'validation.IntBetween(200, 1000)'
immutable: true
- name: 'minInstances'
type: Integer
description: |
Minimum value of instances in autoscaling group underlying the connector. Value must be between 2 and 9, inclusive. Must be
lower than the value specified by max_instances.
default_from_api: true
conflicts:
- min_throughput
required_with:
- max_instances
- name: 'maxInstances'
type: Integer
description: |
Maximum value of instances in autoscaling group underlying the connector. Value must be between 3 and 10, inclusive. Must be
higher than the value specified by min_instances.
default_from_api: true
conflicts:
- max_throughput
required_with:
- min_instances
- name: 'maxThroughput'
type: Integer
description: |
Maximum throughput of the connector in Mbps, must be greater than `min_throughput`. Default is 300. Refers to the expected throughput
when using an e2-micro machine type. Value must be a multiple of 100 from 300 through 1000. Must be higher than the value specified by
min_throughput. Only one of `max_throughput` and `max_instances` can be specified. The use of max_throughput is discouraged in favor of max_instances.
default_from_api: true
conflicts:
- max_instances
validation:
function: 'validation.IntBetween(200, 1000)'
immutable: true
- name: 'selfLink'
type: String
description: |
The fully qualified name of this VPC connector
ignore_read: true
output: true
- name: 'connectedProjects'
type: Array
description: |
List of projects using the connector.
output: true
item_type:
type: String
- name: 'subnet'
type: NestedObject
description: |
The subnet in which to house the connector
immutable: true
properties:
- name: 'name'
type: String
description: |
Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is
https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be {subnetName}"
immutable: true
exactly_one_of:
- 'network'
- 'subnet.0.name'
- name: 'projectId'
type: String
description: |
Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued.
immutable: true
default_from_api: true