mmv1/products/compute/RouterRoutePolicy.yaml (154 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: 'RouterRoutePolicy'
api_resource_type_kind: Router
description: A route policy created in a router
references:
guides:
'Google Cloud Router': 'https://cloud.google.com/router/docs/'
api: 'https://cloud.google.com/compute/docs/reference/rest/v1/routers'
docs:
id_format: '{{project}}/{{region}}/{{router}}/routePolicies/{{name}}'
base_url: 'projects/{{project}}/regions/{{region}}/routers/{{router}}'
self_link: 'projects/{{project}}/regions/{{region}}/routers/{{router}}/getRoutePolicy?policy={{name}}'
create_url: 'projects/{{project}}/regions/{{region}}/routers/{{router}}/updateRoutePolicy'
update_url: 'projects/{{project}}/regions/{{region}}/routers/{{router}}/updateRoutePolicy'
update_verb: 'POST'
update_mask: true
delete_url: 'projects/{{project}}/regions/{{region}}/routers/{{router}}/deleteRoutePolicy?policy={{name}}'
delete_verb: 'POST'
import_format:
- '{{project}}/{{region}}/{{router}}/routePolicies/{{name}}'
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:
decoder: 'templates/terraform/decoders/unwrap_route_policy_resource.go.tmpl'
examples:
- name: 'router_route_policy_export'
primary_resource_id: 'rp-export'
vars:
router_name: 'my-router'
network_name: 'my-network'
subnet_name: 'my-subnetwork'
route_policy_name: 'my-rp1'
- name: 'router_route_policy_import'
primary_resource_id: 'rp-import'
vars:
router_name: 'my-router'
network_name: 'my-network'
subnet_name: 'my-subnetwork'
route_policy_name: 'my-rp2'
parameters:
- name: 'router'
type: ResourceRef
description: |
The name of the Cloud Router in which this route policy will be configured.
url_param_only: true
required: true
immutable: true
resource: 'Router'
imports: 'name'
- name: 'region'
type: ResourceRef
description: Region where the router and NAT reside.
url_param_only: true
required: false
immutable: true
default_from_api: true
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
resource: 'Region'
imports: 'name'
- name: 'name'
type: String
description: |
Name of the route policy. This policy's name, which must be a resource ID segment and unique within all policies owned by the Router
required: true
immutable: true
properties:
- name: 'type'
type: Enum
description: |
This is policy's type, which is one of IMPORT or EXPORT
enum_values:
- 'ROUTE_POLICY_TYPE_IMPORT'
- 'ROUTE_POLICY_TYPE_EXPORT'
- name: 'terms'
type: Array
description: |
List of terms (the order in the list is not important, they are evaluated in order of priority).
required: true
immutable: true
item_type:
type: NestedObject
properties:
- name: 'priority'
type: Integer
description: |
The evaluation priority for this term, which must be between 0 (inclusive) and 231 (exclusive), and unique within the list.
required: true
- name: 'match'
type: NestedObject
description: |
CEL expression evaluated against a route to determine if this term applies (see Policy Language). When not set, the term applies to all routes.
properties:
- name: 'expression'
type: String
description:
Textual representation of an expression in Common Expression
Language syntax.
required: true
- name: 'title'
type: String
description:
Title for the expression, i.e. a short string describing its
purpose.
- name: 'description'
type: String
description: Description of the expression
- name: 'location'
type: String
description:
String indicating the location of the expression for error
reporting, e.g. a file name and a position in the file
- name: 'actions'
type: Array
description: |
'CEL expressions to evaluate to modify a route when this term matches.'\
item_type:
type: NestedObject
properties:
- name: 'expression'
type: String
description: |
Textual representation of an expression in Common Expression
Language syntax.
required: true
- name: 'title'
type: String
description: |
Title for the expression, i.e. a short string describing its
purpose.
- name: 'description'
type: String
description: |
Description of the expression
- name: 'location'
type: String
description: |
String indicating the location of the expression for error
reporting, e.g. a file name and a position in the file
custom_expand: 'templates/terraform/custom_expand/expand_route_policy_terms.go.tmpl'
- name: 'fingerprint'
type: Fingerprint
description: |
The fingerprint used for optimistic locking of this resource. Used
internally during updates.
output: true