mmv1/products/compute/Network.yaml (226 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: 'Network' kind: 'compute#network' description: | Manages a VPC network or legacy network resource on GCP. references: guides: 'Official Documentation': 'https://cloud.google.com/vpc/docs/vpc' api: 'https://cloud.google.com/compute/docs/reference/rest/v1/networks' docs: base_url: 'projects/{{project}}/global/networks' has_self_link: true immutable: 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' sweeper: dependencies: # - "google_network_security_intercept_endpoint_group" (beta only) # - "google_network_security_intercept_deployment_group" (beta only) - "google_network_security_firewall_endpoint_association" custom_code: encoder: 'templates/terraform/encoders/compute_network.go.tmpl' update_encoder: 'templates/terraform/update_encoder/compute_network.go.tmpl' decoder: 'templates/terraform/decoders/compute_network.go.tmpl' post_create: 'templates/terraform/post_create/compute_network_delete_default_route.tmpl' examples: - name: 'network_basic' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' - name: 'network_custom_mtu' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' test_env_vars: project: 'PROJECT_NAME' - name: 'network_custom_firewall_enforcement_order' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' test_env_vars: project: 'PROJECT_NAME' - name: 'network_bgp_best_path_selection_mode' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' test_env_vars: project: 'PROJECT_NAME' - name: 'network_bgp_best_path_selection_mode_standard' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' test_env_vars: project: 'PROJECT_NAME' - name: 'network_bgp_best_path_selection_mode_standard_custom_fields' primary_resource_id: 'vpc_network' vars: network_name: 'vpc-network' test_env_vars: project: 'PROJECT_NAME' virtual_fields: - name: 'delete_default_routes_on_create' description: | If set to `true`, default routes (`0.0.0.0/0`) will be deleted immediately after network creation. Defaults to `false`. type: Boolean default_value: false parameters: properties: - name: 'description' type: String description: | An optional description of this resource. The resource must be recreated to modify this field. immutable: true - name: 'gateway_ipv4' type: String description: | The gateway address for default routing out of the network. This value is selected by GCP. # We override this here so that the name is more aesthetic api_name: gatewayIPv4 output: true - name: 'name' type: String description: | Name of the resource. Provided by the client when the resource is created. 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 validation: function: 'verify.ValidateGCEName' - name: 'networkId' description: | The unique identifier for the resource. This identifier is defined by the server. api_name: id output: true - name: 'numericId' type: String description: | The unique identifier for the resource. This identifier is defined by the server. deprecation_message: '`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.' output: true - name: 'autoCreateSubnetworks' type: Boolean description: | When set to `true`, the network is created in "auto subnet mode" and it will create a subnet for each region automatically across the `10.128.0.0/9` address range. When set to `false`, the network is created in "custom subnet mode" so the user can explicitly connect subnetwork resources. immutable: true send_empty_value: true default_value: true - name: 'routingConfig' type: NestedObject description: | The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce. update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' flatten_object: true properties: - name: 'routingMode' type: Enum description: | The network-wide routing mode to use. If set to `REGIONAL`, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to `GLOBAL`, this network's cloud routers will advertise routes with all subnetworks of this network, across regions. required: false default_from_api: true update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' enum_values: - 'REGIONAL' - 'GLOBAL' - name: 'bgpBestPathSelectionMode' type: Enum description: | The BGP best selection algorithm to be employed. MODE can be LEGACY or STANDARD. default_from_api: true update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' enum_values: - 'LEGACY' - 'STANDARD' - name: 'bgpAlwaysCompareMed' type: Boolean description: | Enables/disables the comparison of MED across routes with different Neighbor ASNs. This value can only be set if the --bgp-best-path-selection-mode is STANDARD required: false default_from_api: true update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' - name: 'bgpInterRegionCost' type: Enum description: | Choice of the behavior of inter-regional cost and MED in the BPS algorithm. required: false default_from_api: true update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' enum_values: - 'DEFAULT' - 'ADD_COST_TO_MED' - name: 'mtu' type: Integer description: | Maximum Transmission Unit in bytes. The default value is 1460 bytes. The minimum value for this field is 1300 and the maximum value is 8896 bytes (jumbo frames). Note that packets larger than 1500 bytes (standard Ethernet) can be subject to TCP-MSS clamping or dropped with an ICMP `Fragmentation-Needed` message if the packets are routed to the Internet or other VPCs with varying MTUs. immutable: true default_from_api: true - name: 'enableUlaInternalIpv6' type: Boolean description: | Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. immutable: true - name: 'internalIpv6Range' type: String description: | When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. immutable: true default_from_api: true - name: 'networkFirewallPolicyEnforcementOrder' type: Enum description: | Set the order that Firewall Rules and Firewall Policies are evaluated. update_url: 'projects/{{project}}/global/networks/{{name}}' update_verb: 'PATCH' default_value: "AFTER_CLASSIC_FIREWALL" enum_values: - 'BEFORE_CLASSIC_FIREWALL' - 'AFTER_CLASSIC_FIREWALL' - name: 'networkProfile' type: String immutable: true description: | A full or partial URL of the network profile to apply to this network. This field can be set only at resource creation time. For example, the following are valid URLs: * https://www.googleapis.com/compute/v1/projects/{projectId}/global/networkProfiles/{network_profile_name} * projects/{projectId}/global/networkProfiles/{network_profile_name}