mmv1/products/compute/ServiceAttachment.yaml (250 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: 'ServiceAttachment' kind: 'compute#ServiceAttachment' description: | Represents a ServiceAttachment resource. references: guides: 'Configuring Private Service Connect to access services': 'https://cloud.google.com/vpc/docs/configure-private-service-connect-services' api: 'https://cloud.google.com/compute/docs/reference/beta/serviceAttachments' docs: base_url: 'projects/{{project}}/regions/{{region}}/serviceAttachments' has_self_link: true update_verb: 'PATCH' 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 custom_code: constants: 'templates/terraform/constants/compute_service_attachment.go.tmpl' update_encoder: 'templates/terraform/update_encoder/compute_service_attachment.go.tmpl' sweeper: url_substitutions: - region: "us-west2" - region: "us-central1" - region: "europe-west4" - region: "us-east1" examples: - name: 'service_attachment_basic' primary_resource_id: 'psc_ilb_service_attachment' vars: service_attachment_name: 'my-psc-ilb' network_name: 'psc-ilb-network' nat_subnetwork_name: 'psc-ilb-nat' producer_subnetwork_name: 'psc-ilb-producer-subnetwork' producer_health_check_name: 'producer-service-health-check' producer_service_name: 'producer-service' producer_forwarding_rule_name: 'producer-forwarding-rule' consumer_address_name: 'psc-ilb-consumer-address' consumer_forwarding_rule_name: 'psc-ilb-consumer-forwarding-rule' - name: 'service_attachment_explicit_projects' primary_resource_id: 'psc_ilb_service_attachment' vars: service_attachment_name: 'my-psc-ilb' network_name: 'psc-ilb-network' nat_subnetwork_name: 'psc-ilb-nat' producer_subnetwork_name: 'psc-ilb-producer-subnetwork' producer_health_check_name: 'producer-service-health-check' producer_service_name: 'producer-service' producer_forwarding_rule_name: 'producer-forwarding-rule' consumer_address_name: 'psc-ilb-consumer-address' consumer_forwarding_rule_name: 'psc-ilb-consumer-forwarding-rule' - name: 'service_attachment_explicit_networks' primary_resource_id: 'psc_ilb_service_attachment' vars: service_attachment_name: 'my-psc-ilb' network_name: 'psc-ilb-network' nat_subnetwork_name: 'psc-ilb-nat' producer_subnetwork_name: 'psc-ilb-producer-subnetwork' producer_health_check_name: 'producer-service-health-check' producer_service_name: 'producer-service' producer_forwarding_rule_name: 'producer-forwarding-rule' consumer_network_name: 'psc-ilb-consumer-network' consumer_address_name: 'psc-ilb-consumer-address' consumer_forwarding_rule_name: 'psc-ilb-consumer-forwarding-rule' - name: 'service_attachment_reconcile_connections' primary_resource_id: 'psc_ilb_service_attachment' vars: service_attachment_name: 'my-psc-ilb' network_name: 'psc-ilb-network' nat_subnetwork_name: 'psc-ilb-nat' producer_subnetwork_name: 'psc-ilb-producer-subnetwork' producer_health_check_name: 'producer-service-health-check' producer_service_name: 'producer-service' producer_forwarding_rule_name: 'producer-forwarding-rule' consumer_address_name: 'psc-ilb-consumer-address' consumer_forwarding_rule_name: 'psc-ilb-consumer-forwarding-rule' parameters: - name: 'region' type: ResourceRef description: | URL of the region where the resource resides. required: false immutable: true ignore_read: true default_from_api: true custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl' resource: 'Region' imports: 'name' properties: - name: 'name' type: String description: | Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. required: true immutable: true - name: 'description' type: String description: | An optional description of this resource. - name: 'fingerprint' type: Fingerprint description: | Fingerprint of this resource. This field is used internally during updates of this resource. output: true - name: 'connectionPreference' type: String description: | The connection preference to use for this service attachment. Valid values include "ACCEPT_AUTOMATIC", "ACCEPT_MANUAL". required: true - name: 'connectedEndpoints' type: Array description: | An array of the consumer forwarding rules connected to this service attachment. output: true item_type: type: NestedObject properties: - name: 'endpoint' type: String description: | The URL of the consumer forwarding rule. output: true - name: 'status' type: String description: | The status of the connection from the consumer forwarding rule to this service attachment. output: true - name: 'consumerNetwork' type: String description: | The url of the consumer network. output: true - name: 'pscConnectionId' type: String description: | The PSC connection id of the connected endpoint. output: true - name: 'propagatedConnectionCount' type: Integer description: | The number of consumer Network Connectivity Center spokes that the connected Private Service Connect endpoint has propagated to. output: true - name: 'targetService' type: String description: | The URL of a service serving the endpoint identified by this service attachment. required: true immutable: true diff_suppress_func: 'tpgresource.CompareSelfLinkOrResourceName' custom_expand: 'templates/terraform/custom_expand/service_attachment_target_service.go.tmpl' - name: 'natSubnets' type: Array description: | An array of subnets that is provided for NAT in this service attachment. required: true send_empty_value: true custom_expand: 'templates/terraform/custom_expand/array_resourceref_with_validation.go.tmpl' item_type: name: 'subnet' type: ResourceRef description: | A subnet that is provided for NAT in this service attachment. resource: 'Subnetwork' imports: 'selfLink' - name: 'enableProxyProtocol' type: Boolean description: | If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers. required: true - name: 'domainNames' type: Array description: | If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: "p.mycompany.com.". Current max number of domain names supported is 1. immutable: true item_type: type: String - name: 'consumerRejectLists' type: Array description: | An array of projects that are not allowed to connect to this service attachment. send_empty_value: true item_type: type: String - name: 'consumerAcceptLists' type: Array description: | An array of projects that are allowed to connect to this service attachment. is_set: true send_empty_value: true set_hash_func: computeServiceAttachmentConsumerAcceptListsHash item_type: type: NestedObject properties: - name: 'projectIdOrNum' type: String # TODO (laurensknoll): add exactly_one_of when it can be applied to lists (https://github.com/hashicorp/terraform-plugin-sdk/issues/470) description: | A project that is allowed to connect to this service attachment. Only one of project_id_or_num and network_url may be set. - name: 'networkUrl' type: String # TODO (laurensknoll): add exactly_one_of when it can be applied to lists (https://github.com/hashicorp/terraform-plugin-sdk/issues/470) description: | The network that is allowed to connect to this service attachment. Only one of project_id_or_num and network_url may be set. diff_suppress_func: 'tpgresource.CompareSelfLinkRelativePaths' - name: 'connectionLimit' type: Integer description: | The number of consumer forwarding rules the consumer project can create. required: true - name: 'reconcileConnections' type: Boolean description: | This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. default_from_api: true send_empty_value: true - name: 'propagatedConnectionLimit' type: Integer description: | The number of consumer spokes that connected Private Service Connect endpoints can be propagated to through Network Connectivity Center. This limit lets the service producer limit how many propagated Private Service Connect connections can be established to this service attachment from a single consumer. If the connection preference of the service attachment is ACCEPT_MANUAL, the limit applies to each project or network that is listed in the consumer accept list. If the connection preference of the service attachment is ACCEPT_AUTOMATIC, the limit applies to each project that contains a connected endpoint. If unspecified, the default propagated connection limit is 250. default_from_api: true