delowan.googlecloud.gcp_compute_url_map (1.0.2) — module

Creates a GCP UrlMap

Authors: Google Inc. (@googlecloudplatform)

preview | supported by community

Install collection

Install with ansible-galaxy collection install delowan.googlecloud:==1.0.2


Add to requirements.yml

  collections:
    - name: delowan.googlecloud
      version: 1.0.2

Description

UrlMaps are used to route requests to a backend service based on rules that you define for the host and path of an incoming URL.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a instance group
  google.cloud.gcp_compute_instance_group:
    name: instancegroup-urlmap
    zone: us-central1-a
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: present
  register: instancegroup
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a HTTP health check
  google.cloud.gcp_compute_http_health_check:
    name: httphealthcheck-urlmap
    healthy_threshold: 10
    port: 8080
    timeout_sec: 2
    unhealthy_threshold: 5
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: present
  register: healthcheck
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a backend service
  google.cloud.gcp_compute_backend_service:
    name: backendservice-urlmap
    backends:
    - group: "{{ instancegroup.selfLink }}"
    health_checks:
    - "{{ healthcheck.selfLink }}"
    enable_cdn: 'true'
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: present
  register: backendservice
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a URL map
  google.cloud.gcp_compute_url_map:
    name: test_object
    default_service: "{{ backendservice }}"
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

Inputs

    
name:
    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
    type: str

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Whether the given object should exist in GCP
    type: str

tests:
    description:
    - The list of expected URL mapping tests. Request to update this UrlMap will succeed
      only if all of the test cases pass. You can specify a maximum of 100 tests per UrlMap.
    elements: dict
    required: false
    suboptions:
      description:
        description:
        - Description of this test case.
        required: false
        type: str
      host:
        description:
        - Host portion of the URL.
        required: true
        type: str
      path:
        description:
        - Path portion of the URL.
        required: true
        type: str
      service:
        description:
        - Expected BackendService resource the given URL should be mapped to.
        - 'This field represents a link to a BackendService resource in GCP. It can be
          specified in two ways. First, you can place a dictionary with key ''selfLink''
          and value of your resource''s selfLink Alternatively, you can add `register:
          name-of-resource` to a gcp_compute_backend_service task and then set this service
          field to "{{ name-of-resource }}"'
        required: true
        type: dict
    type: list

scopes:
    description:
    - Array of scopes to be used
    elements: str
    type: list

project:
    description:
    - The Google Cloud Platform project to use.
    type: str

env_type:
    description:
    - Specifies which Ansible environment you're running this module within.
    - This should not be set unless you know what you're doing.
    - This only alters the User Agent string for any API requests.
    type: str

auth_kind:
    choices:
    - application
    - machineaccount
    - serviceaccount
    description:
    - The type of credential used.
    required: true
    type: str

host_rules:
    description:
    - The list of HostRules to use against the URL.
    elements: dict
    required: false
    suboptions:
      description:
        description:
        - An optional description of this resource. Provide this property when you create
          the resource.
        required: false
        type: str
      hosts:
        description:
        - The list of host patterns to match. They must be valid hostnames, except * will
          match any string of ([a-z0-9-.]*). In that case, * must be the first character
          and must be followed in the pattern by either - or .
        elements: str
        required: true
        type: list
      path_matcher:
        description:
        - The name of the PathMatcher to use to match the path portion of the URL if the
          hostRule matches the URL's host portion.
        required: true
        type: str
    type: list

description:
    description:
    - An optional description of this resource. Provide this property when you create
      the resource.
    required: false
    type: str

header_action:
    description:
    - Specifies changes to request and response headers that need to take effect for the
      selected backendService. The headerAction specified here take effect after headerAction
      specified under pathMatcher.
    required: false
    suboptions:
      request_headers_to_add:
        description:
        - Headers to add to a matching request prior to forwarding the request to the
          backendService.
        elements: dict
        required: false
        suboptions:
          header_name:
            description:
            - The name of the header.
            required: true
            type: str
          header_value:
            description:
            - The value of the header to add.
            required: true
            type: str
          replace:
            description:
            - If false, headerValue is appended to any values that already exist for the
              header. If true, headerValue is set for the header, discarding any values
              that were set for that header.
            required: true
            type: bool
        type: list
      request_headers_to_remove:
        description:
        - A list of header names for headers that need to be removed from the request
          prior to forwarding the request to the backendService.
        elements: str
        required: false
        type: list
      response_headers_to_add:
        description:
        - Headers to add the response prior to sending the response back to the client.
        elements: dict
        required: false
        suboptions:
          header_name:
            description:
            - The name of the header.
            required: true
            type: str
          header_value:
            description:
            - The value of the header to add.
            required: true
            type: str
          replace:
            description:
            - If false, headerValue is appended to any values that already exist for the
              header. If true, headerValue is set for the header, discarding any values
              that were set for that header.
            required: true
            type: bool
        type: list
      response_headers_to_remove:
        description:
        - A list of header names for headers that need to be removed from the response
          prior to sending the response back to the client.
        elements: str
        required: false
        type: list
    type: dict

path_matchers:
    description:
    - The list of named PathMatchers to use against the URL.
    elements: dict
    required: false
    suboptions:
      default_route_action:
        description:
        - defaultRouteAction takes effect when none of the pathRules or routeRules match.
          The load balancer performs advanced routing actions like URL rewrites, header
          transformations, etc. prior to forwarding the request to the selected backend.
          If defaultRouteAction specifies any weightedBackendServices, defaultService
          must not be set.
        - Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices.
        - Only one of defaultRouteAction or defaultUrlRedirect must be set.
        required: false
        suboptions:
          cors_policy:
            description:
            - The specification for allowing client side cross-origin requests. Please
              see [W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)
              .
            required: false
            suboptions:
              allow_credentials:
                default: 'false'
                description:
                - In response to a preflight request, setting this to true indicates that
                  the actual request can include user credentials.
                - This translates to the Access-Control-Allow-Credentials header.
                required: false
                type: bool
              allow_headers:
                description:
                - Specifies the content for the Access-Control-Allow-Headers header.
                elements: str
                required: false
                type: list
              allow_methods:
                description:
                - Specifies the content for the Access-Control-Allow-Methods header.
                elements: str
                required: false
                type: list
              allow_origin_regexes:
                description:
                - Specifies the regular expression patterns that match allowed origins.
                  For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                  An origin is allowed if it matches either an item in allowOrigins or
                  an item in allowOriginRegexes.
                elements: str
                required: false
                type: list
              allow_origins:
                description:
                - Specifies the list of origins that will be allowed to do CORS requests.
                - An origin is allowed if it matches either an item in allowOrigins or
                  an item in allowOriginRegexes.
                elements: str
                required: false
                type: list
              disabled:
                default: 'false'
                description:
                - If true, specifies the CORS policy is disabled. The default value is
                  false, which indicates that the CORS policy is in effect.
                required: false
                type: bool
              expose_headers:
                description:
                - Specifies the content for the Access-Control-Expose-Headers header.
                elements: str
                required: false
                type: list
              max_age:
                description:
                - Specifies how long results of a preflight request can be cached in seconds.
                - This translates to the Access-Control-Max-Age header.
                required: false
                type: int
            type: dict
          fault_injection_policy:
            description:
            - The specification for fault injection introduced into traffic to test the
              resiliency of clients to backend service failure.
            - As part of fault injection, when clients send requests to a backend service,
              delays can be introduced by Loadbalancer on a percentage of requests before
              sending those request to the backend service. Similarly requests from clients
              can be aborted by the Loadbalancer for a percentage of requests.
            - timeout and retryPolicy will be ignored by clients that are configured with
              a faultInjectionPolicy.
            required: false
            suboptions:
              abort:
                description:
                - The specification for how client requests are aborted as part of fault
                  injection.
                required: false
                suboptions:
                  http_status:
                    description:
                    - The HTTP status code used to abort the request.
                    - The value must be between 200 and 599 inclusive.
                    required: false
                    type: int
                  percentage:
                    description:
                    - The percentage of traffic (connections/operations/requests) which
                      will be aborted as part of fault injection.
                    - The value must be between 0.0 and 100.0 inclusive.
                    required: false
                    type: str
                type: dict
              delay:
                description:
                - The specification for how client requests are delayed as part of fault
                  injection, before being sent to a backend service.
                required: false
                suboptions:
                  fixed_delay:
                    description:
                    - Specifies the value of the fixed delay interval.
                    required: false
                    suboptions:
                      nanos:
                        description:
                        - Span of time that's a fraction of a second at nanosecond resolution.
                          Durations less than one second are represented with a 0 seconds
                          field and a positive nanos field. Must be from 0 to 999,999,999
                          inclusive.
                        required: false
                        type: int
                      seconds:
                        description:
                        - Span of time at a resolution of a second. Must be from 0 to
                          315,576,000,000 inclusive.
                        - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr
                          * 24 hr/day * 365.25 days/year * 10000 years .'
                        required: false
                        type: str
                    type: dict
                  percentage:
                    description:
                    - The percentage of traffic (connections/operations/requests) on which
                      delay will be introduced as part of fault injection.
                    - The value must be between 0.0 and 100.0 inclusive.
                    required: false
                    type: str
                type: dict
            type: dict
          request_mirror_policy:
            description:
            - Specifies the policy on how requests intended for the route's backends are
              shadowed to a separate mirrored backend service.
            - Loadbalancer does not wait for responses from the shadow service. Prior
              to sending traffic to the shadow service, the host / authority header is
              suffixed with -shadow.
            required: false
            suboptions:
              backend_service:
                description:
                - The full or partial URL to the BackendService resource being mirrored
                  to.
                - 'This field represents a link to a BackendService resource in GCP. It
                  can be specified in two ways. First, you can place a dictionary with
                  key ''selfLink'' and value of your resource''s selfLink Alternatively,
                  you can add `register: name-of-resource` to a gcp_compute_backend_service
                  task and then set this backend_service field to "{{ name-of-resource
                  }}"'
                required: true
                type: dict
            type: dict
          retry_policy:
            description:
            - Specifies the retry policy associated with this route.
            required: false
            suboptions:
              num_retries:
                default: '1'
                description:
                - Specifies the allowed number retries. This number must be > 0. If not
                  specified, defaults to 1.
                required: false
                type: int
              per_try_timeout:
                description:
                - Specifies a non-zero timeout per retry attempt.
                - If not specified, will use the timeout set in HttpRouteAction. If timeout
                  in HttpRouteAction is not set, will use the largest timeout among all
                  backend services associated with the route.
                required: false
                suboptions:
                  nanos:
                    description:
                    - Span of time that's a fraction of a second at nanosecond resolution.
                      Durations less than one second are represented with a 0 seconds
                      field and a positive nanos field. Must be from 0 to 999,999,999
                      inclusive.
                    required: false
                    type: int
                  seconds:
                    description:
                    - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                      inclusive.
                    - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr *
                      24 hr/day * 365.25 days/year * 10000 years .'
                    required: false
                    type: str
                type: dict
              retry_conditions:
                description:
                - 'Specfies one or more conditions when this retry rule applies. Valid
                  values are: * 5xx: Loadbalancer will attempt a retry if the backend
                  service responds with any 5xx response code, or if the backend service
                  does not respond at all, example: disconnects, reset, read timeout,
                  * connection failure, and refused streams.'
                - '* gateway-error: Similar to 5xx, but only applies to response codes
                  502, 503 or 504.'
                - '* connect-failure: Loadbalancer will retry on failures connecting to
                  backend services, for example due to connection timeouts.'
                - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                  codes.'
                - Currently the only retriable error supported is 409.
                - '* refused-stream:Loadbalancer will retry if the backend service resets
                  the stream with a REFUSED_STREAM error code.'
                - This reset type indicates that it is safe to retry.
                - '* cancelled: Loadbalancer will retry if the gRPC status code in the
                  response header is set to cancelled * deadline-exceeded: Loadbalancer
                  will retry if the gRPC status code in the response header is set to
                  deadline-exceeded * resource-exhausted: Loadbalancer will retry if the
                  gRPC status code in the response header is set to resource-exhausted
                  * unavailable: Loadbalancer will retry if the gRPC status code in the
                  response header is set to unavailable .'
                elements: str
                required: false
                type: list
            type: dict
          timeout:
            description:
            - Specifies the timeout for the selected route. Timeout is computed from the
              time the request has been fully processed (i.e. end-of-stream) up until
              the response has been completely processed. Timeout includes all retries.
            - If not specified, will use the largest timeout among all backend services
              associated with the route.
            required: false
            suboptions:
              nanos:
                description:
                - Span of time that's a fraction of a second at nanosecond resolution.
                  Durations less than one second are represented with a 0 seconds field
                  and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
                required: false
                type: int
              seconds:
                description:
                - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                  inclusive.
                - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day
                  * 365.25 days/year * 10000 years .'
                required: false
                type: str
            type: dict
          url_rewrite:
            description:
            - The spec to modify the URL of the request, prior to forwarding the request
              to the matched service.
            required: false
            suboptions:
              host_rewrite:
                description:
                - Prior to forwarding the request to the selected service, the request's
                  host header is replaced with contents of hostRewrite.
                - The value must be between 1 and 255 characters.
                required: false
                type: str
              path_prefix_rewrite:
                description:
                - Prior to forwarding the request to the selected backend service, the
                  matching portion of the request's path is replaced by pathPrefixRewrite.
                - The value must be between 1 and 1024 characters.
                required: false
                type: str
            type: dict
          weighted_backend_services:
            description:
            - A list of weighted backend services to send traffic to when a route match
              occurs.
            - The weights determine the fraction of traffic that flows to their corresponding
              backend service.
            - If all traffic needs to go to a single backend service, there must be one
              weightedBackendService with weight set to a non 0 number.
            - Once a backendService is identified and before forwarding the request to
              the backend service, advanced routing actions like Url rewrites and header
              transformations are applied depending on additional settings specified in
              this HttpRouteAction.
            elements: dict
            required: false
            suboptions:
              backend_service:
                description:
                - The full or partial URL to the default BackendService resource. Before
                  forwarding the request to backendService, the loadbalancer applies any
                  relevant headerActions specified as part of this backendServiceWeight.
                - 'This field represents a link to a BackendService resource in GCP. It
                  can be specified in two ways. First, you can place a dictionary with
                  key ''selfLink'' and value of your resource''s selfLink Alternatively,
                  you can add `register: name-of-resource` to a gcp_compute_backend_service
                  task and then set this backend_service field to "{{ name-of-resource
                  }}"'
                required: false
                type: dict
              header_action:
                description:
                - Specifies changes to request and response headers that need to take
                  effect for the selected backendService.
                - headerAction specified here take effect before headerAction in the enclosing
                  HttpRouteRule, PathMatcher and UrlMap.
                required: false
                suboptions:
                  request_headers_to_add:
                    description:
                    - Headers to add to a matching request prior to forwarding the request
                      to the backendService.
                    elements: dict
                    required: false
                    suboptions:
                      header_name:
                        description:
                        - The name of the header to add.
                        required: false
                        type: str
                      header_value:
                        description:
                        - The value of the header to add.
                        required: false
                        type: str
                      replace:
                        default: 'false'
                        description:
                        - If false, headerValue is appended to any values that already
                          exist for the header.
                        - If true, headerValue is set for the header, discarding any values
                          that were set for that header.
                        required: false
                        type: bool
                    type: list
                  request_headers_to_remove:
                    description:
                    - A list of header names for headers that need to be removed from
                      the request prior to forwarding the request to the backendService.
                    elements: str
                    required: false
                    type: list
                  response_headers_to_add:
                    description:
                    - Headers to add the response prior to sending the response back to
                      the client.
                    elements: dict
                    required: false
                    suboptions:
                      header_name:
                        description:
                        - The name of the header to add.
                        required: false
                        type: str
                      header_value:
                        description:
                        - The value of the header to add.
                        required: false
                        type: str
                      replace:
                        default: 'false'
                        description:
                        - If false, headerValue is appended to any values that already
                          exist for the header.
                        - If true, headerValue is set for the header, discarding any values
                          that were set for that header.
                        required: false
                        type: bool
                    type: list
                  response_headers_to_remove:
                    description:
                    - A list of header names for headers that need to be removed from
                      the response prior to sending the response back to the client.
                    elements: str
                    required: false
                    type: list
                type: dict
              weight:
                description:
                - Specifies the fraction of traffic sent to backendService, computed as
                  weight / (sum of all weightedBackendService weights in routeAction)
                  .
                - The selection of a backend service is determined only for new traffic.
                  Once a user's request has been directed to a backendService, subsequent
                  requests will be sent to the same backendService as determined by the
                  BackendService's session affinity policy.
                - The value must be between 0 and 1000 .
                required: false
                type: int
            type: list
        type: dict
      default_service:
        description:
        - 'The full or partial URL to the BackendService resource. This will be used if
          none of the pathRules or routeRules defined by this PathMatcher are matched.
          For example, the following are all valid URLs to a BackendService resource:
          - U(https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService)
          - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService
          If defaultRouteAction is additionally specified, advanced routing actions like
          URL Rewrites, etc. take effect prior to sending the request to the backend.
          However, if defaultService is specified, defaultRouteAction cannot contain any
          weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices,
          defaultService must not be specified.'
        - 'Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService
          must be set. Authorization requires one or more of the following Google IAM
          permissions on the specified resource defaultService: - compute.backendBuckets.use
          - compute.backendServices.use .'
        - 'This field represents a link to a BackendService resource in GCP. It can be
          specified in two ways. First, you can place a dictionary with key ''selfLink''
          and value of your resource''s selfLink Alternatively, you can add `register:
          name-of-resource` to a gcp_compute_backend_service task and then set this default_service
          field to "{{ name-of-resource }}"'
        required: false
        type: dict
      default_url_redirect:
        description:
        - When none of the specified hostRules match, the request is redirected to a URL
          specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService
          or defaultRouteAction must not be set.
        required: false
        suboptions:
          host_redirect:
            description:
            - The host that will be used in the redirect response instead of the one that
              was supplied in the request. The value must be between 1 and 255 characters.
            required: false
            type: str
          https_redirect:
            default: 'false'
            description:
            - If set to true, the URL scheme in the redirected request is set to https.
              If set to false, the URL scheme of the redirected request will remain the
              same as that of the request. This must only be set for UrlMaps used in TargetHttpProxys.
              Setting this true for TargetHttpsProxy is not permitted. The default is
              set to false.
            required: false
            type: bool
          path_redirect:
            description:
            - The path that will be used in the redirect response instead of the one that
              was supplied in the request. pathRedirect cannot be supplied together with
              prefixRedirect. Supply one alone or neither. If neither is supplied, the
              path of the original request will be used for the redirect. The value must
              be between 1 and 1024 characters.
            required: false
            type: str
          prefix_redirect:
            description:
            - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
              retaining the remaining portion of the URL before redirecting the request.
            - prefixRedirect cannot be supplied together with pathRedirect. Supply one
              alone or neither. If neither is supplied, the path of the original request
              will be used for the redirect. The value must be between 1 and 1024 characters.
            required: false
            type: str
          redirect_response_code:
            description:
            - 'The HTTP Status code to use for this RedirectAction. Supported values are:
              * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
              to 301.'
            - '* FOUND, which corresponds to 302.'
            - '* SEE_OTHER which corresponds to 303.'
            - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
              method will be retained.'
            - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
              method will be retained.'
            - 'Some valid choices include: "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT",
              "SEE_OTHER", "TEMPORARY_REDIRECT"'
            required: false
            type: str
          strip_query:
            default: 'false'
            description:
            - If set to true, any accompanying query portion of the original URL is removed
              prior to redirecting the request. If set to false, the query portion of
              the original URL is retained.
            required: false
            type: bool
        type: dict
      description:
        description:
        - An optional description of this resource. Provide this property when you create
          the resource.
        required: false
        type: str
      header_action:
        description:
        - Specifies changes to request and response headers that need to take effect for
          the selected backendService. HeaderAction specified here are applied after the
          matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap
          .
        required: false
        suboptions:
          request_headers_to_add:
            description:
            - Headers to add to a matching request prior to forwarding the request to
              the backendService.
            elements: dict
            required: false
            suboptions:
              header_name:
                description:
                - The name of the header.
                required: true
                type: str
              header_value:
                description:
                - The value of the header to add.
                required: true
                type: str
              replace:
                description:
                - If false, headerValue is appended to any values that already exist for
                  the header. If true, headerValue is set for the header, discarding any
                  values that were set for that header.
                required: true
                type: bool
            type: list
          request_headers_to_remove:
            description:
            - A list of header names for headers that need to be removed from the request
              prior to forwarding the request to the backendService.
            elements: str
            required: false
            type: list
          response_headers_to_add:
            description:
            - Headers to add the response prior to sending the response back to the client.
            elements: dict
            required: false
            suboptions:
              header_name:
                description:
                - The name of the header.
                required: true
                type: str
              header_value:
                description:
                - The value of the header to add.
                required: true
                type: str
              replace:
                description:
                - If false, headerValue is appended to any values that already exist for
                  the header. If true, headerValue is set for the header, discarding any
                  values that were set for that header.
                required: true
                type: bool
            type: list
          response_headers_to_remove:
            description:
            - A list of header names for headers that need to be removed from the response
              prior to sending the response back to the client.
            elements: str
            required: false
            type: list
        type: dict
      name:
        description:
        - The name to which this PathMatcher is referred by the HostRule.
        required: true
        type: str
      path_rules:
        description:
        - 'The list of path rules. Use this list instead of routeRules when routing based
          on simple path matching is all that''s required. The order by which path rules
          are specified does not matter. Matches are always done on the longest-path-first
          basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*
          irrespective of the order in which those paths appear in this list. Within a
          given pathMatcher, only one of pathRules or routeRules must be set.'
        elements: dict
        required: false
        suboptions:
          paths:
            description:
            - 'The list of path patterns to match. Each must start with / and the only
              place a * is allowed is at the end following a /. The string fed to the
              path matcher does not include any text after the first ? or #, and those
              chars are not allowed here.'
            elements: str
            required: true
            type: list
          route_action:
            description:
            - In response to a matching path, the load balancer performs advanced routing
              actions like URL rewrites, header transformations, etc. prior to forwarding
              the request to the selected backend. If routeAction specifies any weightedBackendServices,
              service must not be set. Conversely if service is set, routeAction cannot
              contain any weightedBackendServices. Only one of routeAction or urlRedirect
              must be set.
            required: false
            suboptions:
              cors_policy:
                description:
                - The specification for allowing client side cross-origin requests. Please
                  see W3C Recommendation for Cross Origin Resource Sharing .
                required: false
                suboptions:
                  allow_credentials:
                    default: 'false'
                    description:
                    - In response to a preflight request, setting this to true indicates
                      that the actual request can include user credentials. This translates
                      to the Access- Control-Allow-Credentials header. Defaults to false.
                    required: false
                    type: bool
                  allow_headers:
                    description:
                    - Specifies the content for the Access-Control-Allow-Headers header.
                    elements: str
                    required: false
                    type: list
                  allow_methods:
                    description:
                    - Specifies the content for the Access-Control-Allow-Methods header.
                    elements: str
                    required: false
                    type: list
                  allow_origin_regexes:
                    description:
                    - Specifies the regular expression patterns that match allowed origins.
                      For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                      An origin is allowed if it matches either allow_origins or allow_origin_regex.
                    elements: str
                    required: false
                    type: list
                  allow_origins:
                    description:
                    - Specifies the list of origins that will be allowed to do CORS requests.
                      An origin is allowed if it matches either allow_origins or allow_origin_regex.
                    elements: str
                    required: false
                    type: list
                  disabled:
                    description:
                    - If true, specifies the CORS policy is disabled.
                    required: true
                    type: bool
                  expose_headers:
                    description:
                    - Specifies the content for the Access-Control-Expose-Headers header.
                    elements: str
                    required: false
                    type: list
                  max_age:
                    description:
                    - Specifies how long the results of a preflight request can be cached.
                      This translates to the content for the Access-Control-Max-Age header.
                    required: false
                    type: int
                type: dict
              fault_injection_policy:
                description:
                - The specification for fault injection introduced into traffic to test
                  the resiliency of clients to backend service failure. As part of fault
                  injection, when clients send requests to a backend service, delays can
                  be introduced by Loadbalancer on a percentage of requests before sending
                  those request to the backend service. Similarly requests from clients
                  can be aborted by the Loadbalancer for a percentage of requests. timeout
                  and retry_policy will be ignored by clients that are configured with
                  a fault_injection_policy.
                required: false
                suboptions:
                  abort:
                    description:
                    - The specification for how client requests are aborted as part of
                      fault injection.
                    required: false
                    suboptions:
                      http_status:
                        description:
                        - The HTTP status code used to abort the request. The value must
                          be between 200 and 599 inclusive.
                        required: true
                        type: int
                      percentage:
                        description:
                        - The percentage of traffic (connections/operations/requests)
                          which will be aborted as part of fault injection. The value
                          must be between 0.0 and 100.0 inclusive.
                        required: true
                        type: str
                    type: dict
                  delay:
                    description:
                    - The specification for how client requests are delayed as part of
                      fault injection, before being sent to a backend service.
                    required: false
                    suboptions:
                      fixed_delay:
                        description:
                        - Specifies the value of the fixed delay interval.
                        required: true
                        suboptions:
                          nanos:
                            description:
                            - Span of time that's a fraction of a second at nanosecond
                              resolution. Durations less than one second are represented
                              with a 0 `seconds` field and a positive `nanos` field. Must
                              be from 0 to 999,999,999 inclusive.
                            required: false
                            type: int
                          seconds:
                            description:
                            - Span of time at a resolution of a second. Must be from 0
                              to 315,576,000,000 inclusive.
                            required: true
                            type: str
                        type: dict
                      percentage:
                        description:
                        - The percentage of traffic (connections/operations/requests)
                          on which delay will be introduced as part of fault injection.
                          The value must be between 0.0 and 100.0 inclusive.
                        required: true
                        type: str
                    type: dict
                type: dict
              request_mirror_policy:
                description:
                - Specifies the policy on how requests intended for the route's backends
                  are shadowed to a separate mirrored backend service. Loadbalancer does
                  not wait for responses from the shadow service. Prior to sending traffic
                  to the shadow service, the host / authority header is suffixed with
                  -shadow.
                required: false
                suboptions:
                  backend_service:
                    description:
                    - The BackendService resource being mirrored to.
                    - 'This field represents a link to a BackendService resource in GCP.
                      It can be specified in two ways. First, you can place a dictionary
                      with key ''selfLink'' and value of your resource''s selfLink Alternatively,
                      you can add `register: name-of-resource` to a gcp_compute_backend_service
                      task and then set this backend_service field to "{{ name-of-resource
                      }}"'
                    required: true
                    type: dict
                type: dict
              retry_policy:
                description:
                - Specifies the retry policy associated with this route.
                required: false
                suboptions:
                  num_retries:
                    description:
                    - Specifies the allowed number retries. This number must be > 0.
                    required: false
                    type: int
                  per_try_timeout:
                    description:
                    - Specifies a non-zero timeout per retry attempt.
                    required: false
                    suboptions:
                      nanos:
                        description:
                        - Span of time that's a fraction of a second at nanosecond resolution.
                          Durations less than one second are represented with a 0 `seconds`
                          field and a positive `nanos` field. Must be from 0 to 999,999,999
                          inclusive.
                        required: false
                        type: int
                      seconds:
                        description:
                        - Span of time at a resolution of a second. Must be from 0 to
                          315,576,000,000 inclusive.
                        required: true
                        type: str
                    type: dict
                  retry_conditions:
                    description:
                    - 'Specifies one or more conditions when this retry rule applies.
                      Valid values are: * 5xx: Loadbalancer will attempt a retry if the
                      backend service responds with any 5xx response code, or if the backend
                      service does not respond at all, example: disconnects, reset, read
                      timeout, connection failure, and refused streams.'
                    - '* gateway-error: Similar to 5xx, but only applies to response codes
                      502, 503 or 504.'
                    - '* connect-failure: Loadbalancer will retry on failures connecting
                      to backend services, for example due to connection timeouts.'
                    - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                      codes.'
                    - Currently the only retriable error supported is 409.
                    - '* refused-stream: Loadbalancer will retry if the backend service
                      resets the stream with a REFUSED_STREAM error code. This reset type
                      indicates that it is safe to retry.'
                    - '* cancelled: Loadbalancer will retry if the gRPC status code in
                      the response header is set to cancelled * deadline-exceeded: Loadbalancer
                      will retry if the gRPC status code in the response header is set
                      to deadline-exceeded * resource-exhausted: Loadbalancer will retry
                      if the gRPC status code in the response header is set to resource-exhausted
                      * unavailable: Loadbalancer will retry if the gRPC status code in
                      the response header is set to unavailable .'
                    elements: str
                    required: false
                    type: list
                type: dict
              timeout:
                description:
                - Specifies the timeout for the selected route. Timeout is computed from
                  the time the request is has been fully processed (i.e. end-of-stream)
                  up until the response has been completely processed. Timeout includes
                  all retries. If not specified, the default value is 15 seconds.
                required: false
                suboptions:
                  nanos:
                    description:
                    - Span of time that's a fraction of a second at nanosecond resolution.
                      Durations less than one second are represented with a 0 `seconds`
                      field and a positive `nanos` field. Must be from 0 to 999,999,999
                      inclusive.
                    required: false
                    type: int
                  seconds:
                    description:
                    - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                      inclusive.
                    required: true
                    type: str
                type: dict
              url_rewrite:
                description:
                - The spec to modify the URL of the request, prior to forwarding the request
                  to the matched service .
                required: false
                suboptions:
                  host_rewrite:
                    description:
                    - Prior to forwarding the request to the selected service, the request's
                      host header is replaced with contents of hostRewrite. The value
                      must be between 1 and 255 characters.
                    required: false
                    type: str
                  path_prefix_rewrite:
                    description:
                    - Prior to forwarding the request to the selected backend service,
                      the matching portion of the request's path is replaced by pathPrefixRewrite.
                      The value must be between 1 and 1024 characters.
                    required: false
                    type: str
                type: dict
              weighted_backend_services:
                description:
                - A list of weighted backend services to send traffic to when a route
                  match occurs. The weights determine the fraction of traffic that flows
                  to their corresponding backend service. If all traffic needs to go to
                  a single backend service, there must be one weightedBackendService with
                  weight set to a non 0 number. Once a backendService is identified and
                  before forwarding the request to the backend service, advanced routing
                  actions like Url rewrites and header transformations are applied depending
                  on additional settings specified in this HttpRouteAction.
                elements: dict
                required: false
                suboptions:
                  backend_service:
                    description:
                    - The default BackendService resource. Before forwarding the request
                      to backendService, the loadbalancer applies any relevant headerActions
                      specified as part of this backendServiceWeight.
                    - 'This field represents a link to a BackendService resource in GCP.
                      It can be specified in two ways. First, you can place a dictionary
                      with key ''selfLink'' and value of your resource''s selfLink Alternatively,
                      you can add `register: name-of-resource` to a gcp_compute_backend_service
                      task and then set this backend_service field to "{{ name-of-resource
                      }}"'
                    required: true
                    type: dict
                  header_action:
                    description:
                    - Specifies changes to request and response headers that need to take
                      effect for the selected backendService. headerAction specified here
                      take effect before headerAction in the enclosing HttpRouteRule,
                      PathMatcher and UrlMap.
                    required: false
                    suboptions:
                      request_headers_to_add:
                        description:
                        - Headers to add to a matching request prior to forwarding the
                          request to the backendService.
                        elements: dict
                        required: false
                        suboptions:
                          header_name:
                            description:
                            - The name of the header.
                            required: true
                            type: str
                          header_value:
                            description:
                            - The value of the header to add.
                            required: true
                            type: str
                          replace:
                            description:
                            - If false, headerValue is appended to any values that already
                              exist for the header. If true, headerValue is set for the
                              header, discarding any values that were set for that header.
                            required: true
                            type: bool
                        type: list
                      request_headers_to_remove:
                        description:
                        - A list of header names for headers that need to be removed from
                          the request prior to forwarding the request to the backendService.
                        elements: str
                        required: false
                        type: list
                      response_headers_to_add:
                        description:
                        - Headers to add the response prior to sending the response back
                          to the client.
                        elements: dict
                        required: false
                        suboptions:
                          header_name:
                            description:
                            - The name of the header.
                            required: true
                            type: str
                          header_value:
                            description:
                            - The value of the header to add.
                            required: true
                            type: str
                          replace:
                            description:
                            - If false, headerValue is appended to any values that already
                              exist for the header. If true, headerValue is set for the
                              header, discarding any values that were set for that header.
                            required: true
                            type: bool
                        type: list
                      response_headers_to_remove:
                        description:
                        - A list of header names for headers that need to be removed from
                          the response prior to sending the response back to the client.
                        elements: str
                        required: false
                        type: list
                    type: dict
                  weight:
                    description:
                    - Specifies the fraction of traffic sent to backendService, computed
                      as weight / (sum of all weightedBackendService weights in routeAction)
                      . The selection of a backend service is determined only for new
                      traffic. Once a user's request has been directed to a backendService,
                      subsequent requests will be sent to the same backendService as determined
                      by the BackendService's session affinity policy.
                    - The value must be between 0 and 1000 .
                    required: true
                    type: int
                type: list
            type: dict
          service:
            description:
            - The backend service resource to which traffic is directed if this rule is
              matched. If routeAction is additionally specified, advanced routing actions
              like URL Rewrites, etc. take effect prior to sending the request to the
              backend. However, if service is specified, routeAction cannot contain any
              weightedBackendService s. Conversely, if routeAction specifies any weightedBackendServices,
              service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService
              must be set.
            - 'This field represents a link to a BackendService resource in GCP. It can
              be specified in two ways. First, you can place a dictionary with key ''selfLink''
              and value of your resource''s selfLink Alternatively, you can add `register:
              name-of-resource` to a gcp_compute_backend_service task and then set this
              service field to "{{ name-of-resource }}"'
            required: false
            type: dict
          url_redirect:
            description:
            - When a path pattern is matched, the request is redirected to a URL specified
              by urlRedirect. If urlRedirect is specified, service or routeAction must
              not be set.
            required: false
            suboptions:
              host_redirect:
                description:
                - The host that will be used in the redirect response instead of the one
                  that was supplied in the request. The value must be between 1 and 255
                  characters.
                required: false
                type: str
              https_redirect:
                default: 'false'
                description:
                - If set to true, the URL scheme in the redirected request is set to https.
                - If set to false, the URL scheme of the redirected request will remain
                  the same as that of the request. This must only be set for UrlMaps used
                  in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted.
                  The default is set to false.
                required: false
                type: bool
              path_redirect:
                description:
                - The path that will be used in the redirect response instead of the one
                  that was supplied in the request. pathRedirect cannot be supplied together
                  with prefixRedirect. Supply one alone or neither. If neither is supplied,
                  the path of the original request will be used for the redirect.
                - The value must be between 1 and 1024 characters.
                required: false
                type: str
              prefix_redirect:
                description:
                - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
                  retaining the remaining portion of the URL before redirecting the request.
                  prefixRedirect cannot be supplied together with pathRedirect. Supply
                  one alone or neither. If neither is supplied, the path of the original
                  request will be used for the redirect. The value must be between 1 and
                  1024 characters.
                required: false
                type: str
              redirect_response_code:
                description:
                - 'The HTTP Status code to use for this RedirectAction. Supported values
                  are: * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
                  to 301.'
                - '* FOUND, which corresponds to 302.'
                - '* SEE_OTHER which corresponds to 303.'
                - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
                  method will be retained.'
                - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
                  method will be retained.'
                - 'Some valid choices include: "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT",
                  "SEE_OTHER", "TEMPORARY_REDIRECT"'
                required: false
                type: str
              strip_query:
                default: 'false'
                description:
                - If set to true, any accompanying query portion of the original URL is
                  removed prior to redirecting the request. If set to false, the query
                  portion of the original URL is retained.
                required: false
                type: bool
            type: dict
        type: list
      route_rules:
        description:
        - 'The list of ordered HTTP route rules. Use this list instead of pathRules when
          advanced route matching and routing actions are desired. The order of specifying
          routeRules matters: the first rule that matches will cause its specified routing
          action to take effect. Within a given pathMatcher, only one of pathRules or
          routeRules must be set. routeRules are not supported in UrlMaps intended for
          External load balancers.'
        elements: dict
        required: false
        suboptions:
          header_action:
            description:
            - Specifies changes to request and response headers that need to take effect
              for the selected backendService. The headerAction specified here are applied
              before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
              outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
              .
            required: false
            suboptions:
              request_headers_to_add:
                description:
                - Headers to add to a matching request prior to forwarding the request
                  to the backendService.
                elements: dict
                required: false
                suboptions:
                  header_name:
                    description:
                    - The name of the header.
                    required: true
                    type: str
                  header_value:
                    description:
                    - The value of the header to add.
                    required: true
                    type: str
                  replace:
                    description:
                    - If false, headerValue is appended to any values that already exist
                      for the header. If true, headerValue is set for the header, discarding
                      any values that were set for that header.
                    required: true
                    type: bool
                type: list
              request_headers_to_remove:
                description:
                - A list of header names for headers that need to be removed from the
                  request prior to forwarding the request to the backendService.
                elements: str
                required: false
                type: list
              response_headers_to_add:
                description:
                - Headers to add the response prior to sending the response back to the
                  client.
                elements: dict
                required: false
                suboptions:
                  header_name:
                    description:
                    - The name of the header.
                    required: true
                    type: str
                  header_value:
                    description:
                    - The value of the header to add.
                    required: true
                    type: str
                  replace:
                    description:
                    - If false, headerValue is appended to any values that already exist
                      for the header. If true, headerValue is set for the header, discarding
                      any values that were set for that header.
                    required: true
                    type: bool
                type: list
              response_headers_to_remove:
                description:
                - A list of header names for headers that need to be removed from the
                  response prior to sending the response back to the client.
                elements: str
                required: false
                type: list
            type: dict
          match_rules:
            description:
            - The rules for determining a match.
            elements: dict
            required: false
            suboptions:
              full_path_match:
                description:
                - For satisfying the matchRule condition, the path of the request must
                  exactly match the value specified in fullPathMatch after removing any
                  query parameters and anchor that may be part of the original URL. FullPathMatch
                  must be between 1 and 1024 characters. Only one of prefixMatch, fullPathMatch
                  or regexMatch must be specified.
                required: false
                type: str
              header_matches:
                description:
                - Specifies a list of header match criteria, all of which must match corresponding
                  headers in the request.
                elements: dict
                required: false
                suboptions:
                  exact_match:
                    description:
                    - The value should exactly match contents of exactMatch. Only one
                      of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                      or rangeMatch must be set.
                    required: false
                    type: str
                  header_name:
                    description:
                    - The name of the HTTP header to match. For matching against the HTTP
                      request's authority, use a headerMatch with the header name ":authority".
                      For matching a request's method, use the headerName ":method".
                    required: true
                    type: str
                  invert_match:
                    default: 'false'
                    description:
                    - If set to false, the headerMatch is considered a match if the match
                      criteria above are met. If set to true, the headerMatch is considered
                      a match if the match criteria above are NOT met. Defaults to false.
                    required: false
                    type: bool
                  prefix_match:
                    description:
                    - The value of the header must start with the contents of prefixMatch.
                      Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                      or rangeMatch must be set.
                    required: false
                    type: str
                  present_match:
                    description:
                    - A header with the contents of headerName must exist. The match takes
                      place whether or not the request's header has a value or not. Only
                      one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                      or rangeMatch must be set.
                    required: false
                    type: bool
                  range_match:
                    description:
                    - The header value must be an integer and its value must be in the
                      range specified in rangeMatch. If the header does not contain an
                      integer, number or is empty, the match fails. For example for a
                      range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not
                      match. - -3someString will not match. Only one of exactMatch, prefixMatch,
                      suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                    required: false
                    suboptions:
                      range_end:
                        description:
                        - The end of the range (exclusive).
                        required: true
                        type: int
                      range_start:
                        description:
                        - The start of the range (inclusive).
                        required: true
                        type: int
                    type: dict
                  regex_match:
                    description:
                    - 'The value of the header must match the regular expression specified
                      in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript
                      For matching against a port specified in the HTTP request, use a
                      headerMatch with headerName set to PORT and a regular expression
                      that satisfies the RFC2616 Host header''s port specifier.'
                    - Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                      or rangeMatch must be set.
                    required: false
                    type: str
                  suffix_match:
                    description:
                    - The value of the header must end with the contents of suffixMatch.
                      Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                      or rangeMatch must be set.
                    required: false
                    type: str
                type: list
              ignore_case:
                default: 'false'
                description:
                - Specifies that prefixMatch and fullPathMatch matches are case sensitive.
                - Defaults to false.
                required: false
                type: bool
              metadata_filters:
                description:
                - Opaque filter criteria used by Loadbalancer to restrict routing configuration
                  to a limited set xDS compliant clients. In their xDS requests to Loadbalancer,
                  xDS clients present node metadata. If a match takes place, the relevant
                  routing configuration is made available to those proxies. For each metadataFilter
                  in this list, if its filterMatchCriteria is set to MATCH_ANY, at least
                  one of the filterLabels must match the corresponding label provided
                  in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then
                  all of its filterLabels must match with corresponding labels in the
                  provided metadata. metadataFilters specified here can be overrides those
                  specified in ForwardingRule that refers to this UrlMap. metadataFilters
                  only applies to Loadbalancers that have their loadBalancingScheme set
                  to INTERNAL_SELF_MANAGED.
                elements: dict
                required: false
                suboptions:
                  filter_labels:
                    description:
                    - The list of label value pairs that must match labels in the provided
                      metadata based on filterMatchCriteria This list must not be empty
                      and can have at the most 64 entries.
                    elements: dict
                    required: true
                    suboptions:
                      name:
                        description:
                        - Name of metadata label. The name can have a maximum length of
                          1024 characters and must be at least 1 character long.
                        required: true
                        type: str
                      value:
                        description:
                        - The value of the label must match the specified value. value
                          can have a maximum length of 1024 characters.
                        required: true
                        type: str
                    type: list
                  filter_match_criteria:
                    description:
                    - 'Specifies how individual filterLabel matches within the list of
                      filterLabels contribute towards the overall metadataFilter match.
                      Supported values are: - MATCH_ANY: At least one of the filterLabels
                      must have a matching label in the provided metadata.'
                    - '- MATCH_ALL: All filterLabels must have matching labels in the
                      provided metadata.'
                    - 'Some valid choices include: "MATCH_ALL", "MATCH_ANY"'
                    required: true
                    type: str
                type: list
              prefix_match:
                description:
                - For satisfying the matchRule condition, the request's path must begin
                  with the specified prefixMatch. prefixMatch must begin with a /. The
                  value must be between 1 and 1024 characters. Only one of prefixMatch,
                  fullPathMatch or regexMatch must be specified.
                required: false
                type: str
              query_parameter_matches:
                description:
                - Specifies a list of query parameter match criteria, all of which must
                  match corresponding query parameters in the request.
                elements: dict
                required: false
                suboptions:
                  exact_match:
                    description:
                    - The queryParameterMatch matches if the value of the parameter exactly
                      matches the contents of exactMatch. Only one of presentMatch, exactMatch
                      and regexMatch must be set.
                    required: false
                    type: str
                  name:
                    description:
                    - The name of the query parameter to match. The query parameter must
                      exist in the request, in the absence of which the request match
                      fails.
                    required: true
                    type: str
                  present_match:
                    description:
                    - Specifies that the queryParameterMatch matches if the request contains
                      the query parameter, irrespective of whether the parameter has a
                      value or not. Only one of presentMatch, exactMatch and regexMatch
                      must be set.
                    required: false
                    type: bool
                  regex_match:
                    description:
                    - The queryParameterMatch matches if the value of the parameter matches
                      the regular expression specified by regexMatch. For the regular
                      expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
                      Only one of presentMatch, exactMatch and regexMatch must be set.
                    required: false
                    type: str
                type: list
              regex_match:
                description:
                - For satisfying the matchRule condition, the path of the request must
                  satisfy the regular expression specified in regexMatch after removing
                  any query parameters and anchor supplied with the original URL. For
                  regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                  Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                required: false
                type: str
            type: list
          priority:
            description:
            - For routeRules within a given pathMatcher, priority determines the order
              in which load balancer will interpret routeRules. RouteRules are evaluated
              in order of priority, from the lowest to highest number. The priority of
              a rule decreases as its number increases (1, 2, 3, N+1). The first rule
              that matches the request is applied.
            - You cannot configure two or more routeRules with the same priority.
            - Priority for each rule must be set to a number between 0 and 2147483647
              inclusive.
            - Priority numbers can have gaps, which enable you to add or remove rules
              in the future without affecting the rest of the rules. For example, 1, 2,
              3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could
              add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without
              any impact on existing rules.
            required: true
            type: int
          route_action:
            description:
            - In response to a matching matchRule, the load balancer performs advanced
              routing actions like URL rewrites, header transformations, etc. prior to
              forwarding the request to the selected backend. If routeAction specifies
              any weightedBackendServices, service must not be set. Conversely if service
              is set, routeAction cannot contain any weightedBackendServices. Only one
              of routeAction or urlRedirect must be set.
            required: false
            suboptions:
              cors_policy:
                description:
                - The specification for allowing client side cross-origin requests. Please
                  see W3C Recommendation for Cross Origin Resource Sharing .
                required: false
                suboptions:
                  allow_credentials:
                    default: 'false'
                    description:
                    - In response to a preflight request, setting this to true indicates
                      that the actual request can include user credentials. This translates
                      to the Access- Control-Allow-Credentials header. Defaults to false.
                    required: false
                    type: bool
                  allow_headers:
                    description:
                    - Specifies the content for the Access-Control-Allow-Headers header.
                    elements: str
                    required: false
                    type: list
                  allow_methods:
                    description:
                    - Specifies the content for the Access-Control-Allow-Methods header.
                    elements: str
                    required: false
                    type: list
                  allow_origin_regexes:
                    description:
                    - Specifies the regular expression patterns that match allowed origins.
                      For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                      An origin is allowed if it matches either allow_origins or allow_origin_regex.
                    elements: str
                    required: false
                    type: list
                  allow_origins:
                    description:
                    - Specifies the list of origins that will be allowed to do CORS requests.
                      An origin is allowed if it matches either allow_origins or allow_origin_regex.
                    elements: str
                    required: false
                    type: list
                  disabled:
                    default: 'false'
                    description:
                    - If true, specifies the CORS policy is disabled.
                    - which indicates that the CORS policy is in effect. Defaults to false.
                    required: false
                    type: bool
                  expose_headers:
                    description:
                    - Specifies the content for the Access-Control-Expose-Headers header.
                    elements: str
                    required: false
                    type: list
                  max_age:
                    description:
                    - Specifies how long the results of a preflight request can be cached.
                      This translates to the content for the Access-Control-Max-Age header.
                    required: false
                    type: int
                type: dict
              fault_injection_policy:
                description:
                - The specification for fault injection introduced into traffic to test
                  the resiliency of clients to backend service failure. As part of fault
                  injection, when clients send requests to a backend service, delays can
                  be introduced by Loadbalancer on a percentage of requests before sending
                  those request to the backend service. Similarly requests from clients
                  can be aborted by the Loadbalancer for a percentage of requests. timeout
                  and retry_policy will be ignored by clients that are configured with
                  a fault_injection_policy.
                required: false
                suboptions:
                  abort:
                    description:
                    - The specification for how client requests are aborted as part of
                      fault injection.
                    required: false
                    suboptions:
                      http_status:
                        description:
                        - The HTTP status code used to abort the request. The value must
                          be between 200 and 599 inclusive.
                        required: false
                        type: int
                      percentage:
                        description:
                        - The percentage of traffic (connections/operations/requests)
                          which will be aborted as part of fault injection. The value
                          must be between 0.0 and 100.0 inclusive.
                        required: false
                        type: str
                    type: dict
                  delay:
                    description:
                    - The specification for how client requests are delayed as part of
                      fault injection, before being sent to a backend service.
                    required: false
                    suboptions:
                      fixed_delay:
                        description:
                        - Specifies the value of the fixed delay interval.
                        required: false
                        suboptions:
                          nanos:
                            description:
                            - Span of time that's a fraction of a second at nanosecond
                              resolution. Durations less than one second are represented
                              with a 0 `seconds` field and a positive `nanos` field. Must
                              be from 0 to 999,999,999 inclusive.
                            required: false
                            type: int
                          seconds:
                            description:
                            - Span of time at a resolution of a second. Must be from 0
                              to 315,576,000,000 inclusive.
                            required: true
                            type: str
                        type: dict
                      percentage:
                        description:
                        - The percentage of traffic (connections/operations/requests)
                          on which delay will be introduced as part of fault injection.
                          The value must be between 0.0 and 100.0 inclusive.
                        required: false
                        type: str
                    type: dict
                type: dict
              request_mirror_policy:
                description:
                - Specifies the policy on how requests intended for the route's backends
                  are shadowed to a separate mirrored backend service. Loadbalancer does
                  not wait for responses from the shadow service. Prior to sending traffic
                  to the shadow service, the host / authority header is suffixed with
                  -shadow.
                required: false
                suboptions:
                  backend_service:
                    description:
                    - The BackendService resource being mirrored to.
                    - 'This field represents a link to a BackendService resource in GCP.
                      It can be specified in two ways. First, you can place a dictionary
                      with key ''selfLink'' and value of your resource''s selfLink Alternatively,
                      you can add `register: name-of-resource` to a gcp_compute_backend_service
                      task and then set this backend_service field to "{{ name-of-resource
                      }}"'
                    required: true
                    type: dict
                type: dict
              retry_policy:
                description:
                - Specifies the retry policy associated with this route.
                required: false
                suboptions:
                  num_retries:
                    description:
                    - Specifies the allowed number retries. This number must be > 0.
                    required: true
                    type: int
                  per_try_timeout:
                    description:
                    - Specifies a non-zero timeout per retry attempt.
                    - If not specified, will use the timeout set in HttpRouteAction. If
                      timeout in HttpRouteAction is not set, will use the largest timeout
                      among all backend services associated with the route.
                    required: false
                    suboptions:
                      nanos:
                        description:
                        - Span of time that's a fraction of a second at nanosecond resolution.
                          Durations less than one second are represented with a 0 `seconds`
                          field and a positive `nanos` field. Must be from 0 to 999,999,999
                          inclusive.
                        required: false
                        type: int
                      seconds:
                        description:
                        - Span of time at a resolution of a second. Must be from 0 to
                          315,576,000,000 inclusive.
                        required: true
                        type: str
                    type: dict
                  retry_conditions:
                    description:
                    - 'Specfies one or more conditions when this retry rule applies. Valid
                      values are: * 5xx: Loadbalancer will attempt a retry if the backend
                      service responds with any 5xx response code, or if the backend service
                      does not respond at all, example: disconnects, reset, read timeout,
                      connection failure, and refused streams.'
                    - '* gateway-error: Similar to 5xx, but only applies to response codes
                      502, 503 or 504.'
                    - '* connect-failure: Loadbalancer will retry on failures connecting
                      to backend services, for example due to connection timeouts.'
                    - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                      codes.'
                    - Currently the only retriable error supported is 409.
                    - '* refused-stream: Loadbalancer will retry if the backend service
                      resets the stream with a REFUSED_STREAM error code. This reset type
                      indicates that it is safe to retry.'
                    - '* cancelled: Loadbalancer will retry if the gRPC status code in
                      the response header is set to cancelled * deadline-exceeded: Loadbalancer
                      will retry if the gRPC status code in the response header is set
                      to deadline-exceeded * resource-exhausted: Loadbalancer will retry
                      if the gRPC status code in the response header is set to resource-exhausted
                      * unavailable: Loadbalancer will retry if the gRPC status code in
                      the response header is set to unavailable .'
                    elements: str
                    required: false
                    type: list
                type: dict
              timeout:
                description:
                - Specifies the timeout for the selected route. Timeout is computed from
                  the time the request is has been fully processed (i.e. end-of-stream)
                  up until the response has been completely processed. Timeout includes
                  all retries. If not specified, the default value is 15 seconds.
                required: false
                suboptions:
                  nanos:
                    description:
                    - Span of time that's a fraction of a second at nanosecond resolution.
                      Durations less than one second are represented with a 0 `seconds`
                      field and a positive `nanos` field. Must be from 0 to 999,999,999
                      inclusive.
                    required: false
                    type: int
                  seconds:
                    description:
                    - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                      inclusive.
                    required: true
                    type: str
                type: dict
              url_rewrite:
                description:
                - The spec to modify the URL of the request, prior to forwarding the request
                  to the matched service .
                required: false
                suboptions:
                  host_rewrite:
                    description:
                    - Prior to forwarding the request to the selected service, the request's
                      host header is replaced with contents of hostRewrite. The value
                      must be between 1 and 255 characters.
                    required: false
                    type: str
                  path_prefix_rewrite:
                    description:
                    - Prior to forwarding the request to the selected backend service,
                      the matching portion of the request's path is replaced by pathPrefixRewrite.
                      The value must be between 1 and 1024 characters.
                    required: false
                    type: str
                type: dict
              weighted_backend_services:
                description:
                - A list of weighted backend services to send traffic to when a route
                  match occurs. The weights determine the fraction of traffic that flows
                  to their corresponding backend service. If all traffic needs to go to
                  a single backend service, there must be one weightedBackendService with
                  weight set to a non 0 number. Once a backendService is identified and
                  before forwarding the request to the backend service, advanced routing
                  actions like Url rewrites and header transformations are applied depending
                  on additional settings specified in this HttpRouteAction.
                elements: dict
                required: false
                suboptions:
                  backend_service:
                    description:
                    - The default BackendService resource. Before forwarding the request
                      to backendService, the loadbalancer applies any relevant headerActions
                      specified as part of this backendServiceWeight.
                    - 'This field represents a link to a BackendService resource in GCP.
                      It can be specified in two ways. First, you can place a dictionary
                      with key ''selfLink'' and value of your resource''s selfLink Alternatively,
                      you can add `register: name-of-resource` to a gcp_compute_backend_service
                      task and then set this backend_service field to "{{ name-of-resource
                      }}"'
                    required: true
                    type: dict
                  header_action:
                    description:
                    - Specifies changes to request and response headers that need to take
                      effect for the selected backendService. headerAction specified here
                      take effect before headerAction in the enclosing HttpRouteRule,
                      PathMatcher and UrlMap.
                    required: false
                    suboptions:
                      request_headers_to_add:
                        description:
                        - Headers to add to a matching request prior to forwarding the
                          request to the backendService.
                        elements: dict
                        required: false
                        suboptions:
                          header_name:
                            description:
                            - The name of the header.
                            required: true
                            type: str
                          header_value:
                            description:
                            - The value of the header to add.
                            required: true
                            type: str
                          replace:
                            description:
                            - If false, headerValue is appended to any values that already
                              exist for the header. If true, headerValue is set for the
                              header, discarding any values that were set for that header.
                            required: true
                            type: bool
                        type: list
                      request_headers_to_remove:
                        description:
                        - A list of header names for headers that need to be removed from
                          the request prior to forwarding the request to the backendService.
                        elements: str
                        required: false
                        type: list
                      response_headers_to_add:
                        description:
                        - Headers to add the response prior to sending the response back
                          to the client.
                        elements: dict
                        required: false
                        suboptions:
                          header_name:
                            description:
                            - The name of the header.
                            required: true
                            type: str
                          header_value:
                            description:
                            - The value of the header to add.
                            required: true
                            type: str
                          replace:
                            description:
                            - If false, headerValue is appended to any values that already
                              exist for the header. If true, headerValue is set for the
                              header, discarding any values that were set for that header.
                            required: true
                            type: bool
                        type: list
                      response_headers_to_remove:
                        description:
                        - A list of header names for headers that need to be removed from
                          the response prior to sending the response back to the client.
                        elements: str
                        required: false
                        type: list
                    type: dict
                  weight:
                    description:
                    - Specifies the fraction of traffic sent to backendService, computed
                      as weight / (sum of all weightedBackendService weights in routeAction)
                      . The selection of a backend service is determined only for new
                      traffic. Once a user's request has been directed to a backendService,
                      subsequent requests will be sent to the same backendService as determined
                      by the BackendService's session affinity policy.
                    - The value must be between 0 and 1000 .
                    required: true
                    type: int
                type: list
            type: dict
          service:
            description:
            - The backend service resource to which traffic is directed if this rule is
              matched. If routeAction is additionally specified, advanced routing actions
              like URL Rewrites, etc. take effect prior to sending the request to the
              backend. However, if service is specified, routeAction cannot contain any
              weightedBackendService s. Conversely, if routeAction specifies any weightedBackendServices,
              service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService
              must be set.
            - 'This field represents a link to a BackendService resource in GCP. It can
              be specified in two ways. First, you can place a dictionary with key ''selfLink''
              and value of your resource''s selfLink Alternatively, you can add `register:
              name-of-resource` to a gcp_compute_backend_service task and then set this
              service field to "{{ name-of-resource }}"'
            required: false
            type: dict
          url_redirect:
            description:
            - When this rule is matched, the request is redirected to a URL specified
              by urlRedirect. If urlRedirect is specified, service or routeAction must
              not be set.
            required: false
            suboptions:
              host_redirect:
                description:
                - The host that will be used in the redirect response instead of the one
                  that was supplied in the request. The value must be between 1 and 255
                  characters.
                required: false
                type: str
              https_redirect:
                default: 'false'
                description:
                - If set to true, the URL scheme in the redirected request is set to https.
                  If set to false, the URL scheme of the redirected request will remain
                  the same as that of the request. This must only be set for UrlMaps used
                  in TargetHttpProxys.
                - Setting this true for TargetHttpsProxy is not permitted. Defaults to
                  false.
                required: false
                type: bool
              path_redirect:
                description:
                - The path that will be used in the redirect response instead of the one
                  that was supplied in the request. Only one of pathRedirect or prefixRedirect
                  must be specified. The value must be between 1 and 1024 characters.
                required: false
                type: str
              prefix_redirect:
                description:
                - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
                  retaining the remaining portion of the URL before redirecting the request.
                required: false
                type: str
              redirect_response_code:
                description:
                - 'The HTTP Status code to use for this RedirectAction. Supported values
                  are: * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
                  to 301.'
                - '* FOUND, which corresponds to 302.'
                - '* SEE_OTHER which corresponds to 303.'
                - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
                  method will be retained.'
                - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
                  method will be retained.'
                - 'Some valid choices include: "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT",
                  "SEE_OTHER", "TEMPORARY_REDIRECT"'
                required: false
                type: str
              strip_query:
                default: 'false'
                description:
                - If set to true, any accompanying query portion of the original URL is
                  removed prior to redirecting the request. If set to false, the query
                  portion of the original URL is retained. Defaults to false.
                required: false
                type: bool
            type: dict
        type: list
    type: list

default_service:
    description:
    - The full or partial URL of the defaultService resource to which traffic is directed
      if none of the hostRules match. If defaultRouteAction is additionally specified,
      advanced routing actions like URL Rewrites, etc. take effect prior to sending the
      request to the backend. However, if defaultService is specified, defaultRouteAction
      cannot contain any weightedBackendServices. Conversely, if routeAction specifies
      any weightedBackendServices, service must not be specified. Only one of defaultService,
      defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set.
    - 'This field represents a link to a BackendService resource in GCP. It can be specified
      in two ways. First, you can place a dictionary with key ''selfLink'' and value of
      your resource''s selfLink Alternatively, you can add `register: name-of-resource`
      to a gcp_compute_backend_service task and then set this default_service field to
      "{{ name-of-resource }}"'
    required: false
    type: dict

default_route_action:
    description:
    - defaultRouteAction takes effect when none of the hostRules match. The load balancer
      performs advanced routing actions like URL rewrites, header transformations, etc.
      prior to forwarding the request to the selected backend.
    - If defaultRouteAction specifies any weightedBackendServices, defaultService must
      not be set. Conversely if defaultService is set, defaultRouteAction cannot contain
      any weightedBackendServices.
    - Only one of defaultRouteAction or defaultUrlRedirect must be set.
    required: false
    suboptions:
      cors_policy:
        description:
        - The specification for allowing client side cross-origin requests. Please see
          [W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)
          .
        required: false
        suboptions:
          allow_credentials:
            default: 'false'
            description:
            - In response to a preflight request, setting this to true indicates that
              the actual request can include user credentials.
            - This translates to the Access-Control-Allow-Credentials header.
            required: false
            type: bool
          allow_headers:
            description:
            - Specifies the content for the Access-Control-Allow-Headers header.
            elements: str
            required: false
            type: list
          allow_methods:
            description:
            - Specifies the content for the Access-Control-Allow-Methods header.
            elements: str
            required: false
            type: list
          allow_origin_regexes:
            description:
            - Specifies the regular expression patterns that match allowed origins. For
              regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
              An origin is allowed if it matches either an item in allowOrigins or an
              item in allowOriginRegexes.
            elements: str
            required: false
            type: list
          allow_origins:
            description:
            - Specifies the list of origins that will be allowed to do CORS requests.
            - An origin is allowed if it matches either an item in allowOrigins or an
              item in allowOriginRegexes.
            elements: str
            required: false
            type: list
          disabled:
            default: 'false'
            description:
            - If true, specifies the CORS policy is disabled. The default value is false,
              which indicates that the CORS policy is in effect.
            required: false
            type: bool
          expose_headers:
            description:
            - Specifies the content for the Access-Control-Expose-Headers header.
            elements: str
            required: false
            type: list
          max_age:
            description:
            - Specifies how long results of a preflight request can be cached in seconds.
            - This translates to the Access-Control-Max-Age header.
            required: false
            type: int
        type: dict
      fault_injection_policy:
        description:
        - The specification for fault injection introduced into traffic to test the resiliency
          of clients to backend service failure.
        - As part of fault injection, when clients send requests to a backend service,
          delays can be introduced by Loadbalancer on a percentage of requests before
          sending those request to the backend service. Similarly requests from clients
          can be aborted by the Loadbalancer for a percentage of requests.
        - timeout and retryPolicy will be ignored by clients that are configured with
          a faultInjectionPolicy.
        required: false
        suboptions:
          abort:
            description:
            - The specification for how client requests are aborted as part of fault injection.
            required: false
            suboptions:
              http_status:
                description:
                - The HTTP status code used to abort the request.
                - The value must be between 200 and 599 inclusive.
                required: false
                type: int
              percentage:
                description:
                - The percentage of traffic (connections/operations/requests) which will
                  be aborted as part of fault injection.
                - The value must be between 0.0 and 100.0 inclusive.
                required: false
                type: str
            type: dict
          delay:
            description:
            - The specification for how client requests are delayed as part of fault injection,
              before being sent to a backend service.
            required: false
            suboptions:
              fixed_delay:
                description:
                - Specifies the value of the fixed delay interval.
                required: false
                suboptions:
                  nanos:
                    description:
                    - Span of time that's a fraction of a second at nanosecond resolution.
                      Durations less than one second are represented with a 0 seconds
                      field and a positive nanos field. Must be from 0 to 999,999,999
                      inclusive.
                    required: false
                    type: int
                  seconds:
                    description:
                    - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                      inclusive.
                    - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr *
                      24 hr/day * 365.25 days/year * 10000 years .'
                    required: false
                    type: str
                type: dict
              percentage:
                description:
                - The percentage of traffic (connections/operations/requests) on which
                  delay will be introduced as part of fault injection.
                - The value must be between 0.0 and 100.0 inclusive.
                required: false
                type: str
            type: dict
        type: dict
      request_mirror_policy:
        description:
        - Specifies the policy on how requests intended for the route's backends are shadowed
          to a separate mirrored backend service.
        - Loadbalancer does not wait for responses from the shadow service. Prior to sending
          traffic to the shadow service, the host / authority header is suffixed with
          -shadow.
        required: false
        suboptions:
          backend_service:
            description:
            - The full or partial URL to the BackendService resource being mirrored to.
            - 'This field represents a link to a BackendService resource in GCP. It can
              be specified in two ways. First, you can place a dictionary with key ''selfLink''
              and value of your resource''s selfLink Alternatively, you can add `register:
              name-of-resource` to a gcp_compute_backend_service task and then set this
              backend_service field to "{{ name-of-resource }}"'
            required: true
            type: dict
        type: dict
      retry_policy:
        description:
        - Specifies the retry policy associated with this route.
        required: false
        suboptions:
          num_retries:
            default: '1'
            description:
            - Specifies the allowed number retries. This number must be > 0. If not specified,
              defaults to 1.
            required: false
            type: int
          per_try_timeout:
            description:
            - Specifies a non-zero timeout per retry attempt.
            - If not specified, will use the timeout set in HttpRouteAction. If timeout
              in HttpRouteAction is not set, will use the largest timeout among all backend
              services associated with the route.
            required: false
            suboptions:
              nanos:
                description:
                - Span of time that's a fraction of a second at nanosecond resolution.
                  Durations less than one second are represented with a 0 seconds field
                  and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
                required: false
                type: int
              seconds:
                description:
                - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                  inclusive.
                - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day
                  * 365.25 days/year * 10000 years .'
                required: false
                type: str
            type: dict
          retry_conditions:
            description:
            - 'Specfies one or more conditions when this retry rule applies. Valid values
              are: * 5xx: Loadbalancer will attempt a retry if the backend service responds
              with any 5xx response code, or if the backend service does not respond at
              all, example: disconnects, reset, read timeout, * connection failure, and
              refused streams.'
            - '* gateway-error: Similar to 5xx, but only applies to response codes 502,
              503 or 504.'
            - '* connect-failure: Loadbalancer will retry on failures connecting to backend
              services, for example due to connection timeouts.'
            - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.'
            - Currently the only retriable error supported is 409.
            - '* refused-stream:Loadbalancer will retry if the backend service resets
              the stream with a REFUSED_STREAM error code.'
            - This reset type indicates that it is safe to retry.
            - '* cancelled: Loadbalancer will retry if the gRPC status code in the response
              header is set to cancelled * deadline-exceeded: Loadbalancer will retry
              if the gRPC status code in the response header is set to deadline-exceeded
              * resource-exhausted: Loadbalancer will retry if the gRPC status code in
              the response header is set to resource-exhausted * unavailable: Loadbalancer
              will retry if the gRPC status code in the response header is set to unavailable
              .'
            elements: str
            required: false
            type: list
        type: dict
      timeout:
        description:
        - Specifies the timeout for the selected route. Timeout is computed from the time
          the request has been fully processed (i.e. end-of-stream) up until the response
          has been completely processed. Timeout includes all retries.
        - If not specified, will use the largest timeout among all backend services associated
          with the route.
        required: false
        suboptions:
          nanos:
            description:
            - Span of time that's a fraction of a second at nanosecond resolution. Durations
              less than one second are represented with a 0 seconds field and a positive
              nanos field. Must be from 0 to 999,999,999 inclusive.
            required: false
            type: int
          seconds:
            description:
            - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
              inclusive.
            - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day
              * 365.25 days/year * 10000 years .'
            required: false
            type: str
        type: dict
      url_rewrite:
        description:
        - The spec to modify the URL of the request, prior to forwarding the request to
          the matched service.
        required: false
        suboptions:
          host_rewrite:
            description:
            - Prior to forwarding the request to the selected service, the request's host
              header is replaced with contents of hostRewrite.
            - The value must be between 1 and 255 characters.
            required: false
            type: str
          path_prefix_rewrite:
            description:
            - Prior to forwarding the request to the selected backend service, the matching
              portion of the request's path is replaced by pathPrefixRewrite.
            - The value must be between 1 and 1024 characters.
            required: false
            type: str
        type: dict
      weighted_backend_services:
        description:
        - A list of weighted backend services to send traffic to when a route match occurs.
        - The weights determine the fraction of traffic that flows to their corresponding
          backend service.
        - If all traffic needs to go to a single backend service, there must be one weightedBackendService
          with weight set to a non 0 number.
        - Once a backendService is identified and before forwarding the request to the
          backend service, advanced routing actions like Url rewrites and header transformations
          are applied depending on additional settings specified in this HttpRouteAction.
        elements: dict
        required: false
        suboptions:
          backend_service:
            description:
            - The full or partial URL to the default BackendService resource. Before forwarding
              the request to backendService, the loadbalancer applies any relevant headerActions
              specified as part of this backendServiceWeight.
            - 'This field represents a link to a BackendService resource in GCP. It can
              be specified in two ways. First, you can place a dictionary with key ''selfLink''
              and value of your resource''s selfLink Alternatively, you can add `register:
              name-of-resource` to a gcp_compute_backend_service task and then set this
              backend_service field to "{{ name-of-resource }}"'
            required: false
            type: dict
          header_action:
            description:
            - Specifies changes to request and response headers that need to take effect
              for the selected backendService.
            - headerAction specified here take effect before headerAction in the enclosing
              HttpRouteRule, PathMatcher and UrlMap.
            required: false
            suboptions:
              request_headers_to_add:
                description:
                - Headers to add to a matching request prior to forwarding the request
                  to the backendService.
                elements: dict
                required: false
                suboptions:
                  header_name:
                    description:
                    - The name of the header to add.
                    required: false
                    type: str
                  header_value:
                    description:
                    - The value of the header to add.
                    required: false
                    type: str
                  replace:
                    default: 'false'
                    description:
                    - If false, headerValue is appended to any values that already exist
                      for the header.
                    - If true, headerValue is set for the header, discarding any values
                      that were set for that header.
                    required: false
                    type: bool
                type: list
              request_headers_to_remove:
                description:
                - A list of header names for headers that need to be removed from the
                  request prior to forwarding the request to the backendService.
                elements: str
                required: false
                type: list
              response_headers_to_add:
                description:
                - Headers to add the response prior to sending the response back to the
                  client.
                elements: dict
                required: false
                suboptions:
                  header_name:
                    description:
                    - The name of the header to add.
                    required: false
                    type: str
                  header_value:
                    description:
                    - The value of the header to add.
                    required: false
                    type: str
                  replace:
                    default: 'false'
                    description:
                    - If false, headerValue is appended to any values that already exist
                      for the header.
                    - If true, headerValue is set for the header, discarding any values
                      that were set for that header.
                    required: false
                    type: bool
                type: list
              response_headers_to_remove:
                description:
                - A list of header names for headers that need to be removed from the
                  response prior to sending the response back to the client.
                elements: str
                required: false
                type: list
            type: dict
          weight:
            description:
            - Specifies the fraction of traffic sent to backendService, computed as weight
              / (sum of all weightedBackendService weights in routeAction) .
            - The selection of a backend service is determined only for new traffic. Once
              a user's request has been directed to a backendService, subsequent requests
              will be sent to the same backendService as determined by the BackendService's
              session affinity policy.
            - The value must be between 0 and 1000 .
            required: false
            type: int
        type: list
    type: dict

default_url_redirect:
    description:
    - When none of the specified hostRules match, the request is redirected to a URL specified
      by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction
      must not be set.
    required: false
    suboptions:
      host_redirect:
        description:
        - The host that will be used in the redirect response instead of the one that
          was supplied in the request. The value must be between 1 and 255 characters.
        required: false
        type: str
      https_redirect:
        default: 'false'
        description:
        - If set to true, the URL scheme in the redirected request is set to https. If
          set to false, the URL scheme of the redirected request will remain the same
          as that of the request. This must only be set for UrlMaps used in TargetHttpProxys.
          Setting this true for TargetHttpsProxy is not permitted. The default is set
          to false.
        required: false
        type: bool
      path_redirect:
        description:
        - The path that will be used in the redirect response instead of the one that
          was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect.
          Supply one alone or neither. If neither is supplied, the path of the original
          request will be used for the redirect. The value must be between 1 and 1024
          characters.
        required: false
        type: str
      prefix_redirect:
        description:
        - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
          retaining the remaining portion of the URL before redirecting the request.
        - prefixRedirect cannot be supplied together with pathRedirect. Supply one alone
          or neither. If neither is supplied, the path of the original request will be
          used for the redirect. The value must be between 1 and 1024 characters.
        required: false
        type: str
      redirect_response_code:
        description:
        - 'The HTTP Status code to use for this RedirectAction. Supported values are:
          * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.'
        - '* FOUND, which corresponds to 302.'
        - '* SEE_OTHER which corresponds to 303.'
        - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method
          will be retained.'
        - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method
          will be retained.'
        - 'Some valid choices include: "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT",
          "SEE_OTHER", "TEMPORARY_REDIRECT"'
        required: false
        type: str
      strip_query:
        default: 'false'
        description:
        - If set to true, any accompanying query portion of the original URL is removed
          prior to redirecting the request. If set to false, the query portion of the
          original URL is retained. The default is set to false.
        required: false
        type: bool
    type: dict

service_account_file:
    description:
    - The path of a Service Account JSON file if serviceaccount is selected as type.
    type: path

service_account_email:
    description:
    - An optional service account email address if machineaccount is selected and the
      user does not wish to use the default email.
    type: str

service_account_contents:
    description:
    - The contents of a Service Account JSON file, either in a dictionary or as a JSON
      string that represents it.
    type: jsonarg

Outputs

creationTimestamp:
  description:
  - Creation timestamp in RFC3339 text format.
  returned: success
  type: str
defaultRouteAction:
  contains:
    corsPolicy:
      contains:
        allowCredentials:
          description:
          - In response to a preflight request, setting this to true indicates that
            the actual request can include user credentials.
          - This translates to the Access-Control-Allow-Credentials header.
          returned: success
          type: bool
        allowHeaders:
          description:
          - Specifies the content for the Access-Control-Allow-Headers header.
          returned: success
          type: list
        allowMethods:
          description:
          - Specifies the content for the Access-Control-Allow-Methods header.
          returned: success
          type: list
        allowOriginRegexes:
          description:
          - Specifies the regular expression patterns that match allowed origins.
            For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
            An origin is allowed if it matches either an item in allowOrigins or an
            item in allowOriginRegexes.
          returned: success
          type: list
        allowOrigins:
          description:
          - Specifies the list of origins that will be allowed to do CORS requests.
          - An origin is allowed if it matches either an item in allowOrigins or an
            item in allowOriginRegexes.
          returned: success
          type: list
        disabled:
          description:
          - If true, specifies the CORS policy is disabled. The default value is false,
            which indicates that the CORS policy is in effect.
          returned: success
          type: bool
        exposeHeaders:
          description:
          - Specifies the content for the Access-Control-Expose-Headers header.
          returned: success
          type: list
        maxAge:
          description:
          - Specifies how long results of a preflight request can be cached in seconds.
          - This translates to the Access-Control-Max-Age header.
          returned: success
          type: int
      description:
      - The specification for allowing client side cross-origin requests. Please see
        [W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)
        .
      returned: success
      type: complex
    faultInjectionPolicy:
      contains:
        abort:
          contains:
            httpStatus:
              description:
              - The HTTP status code used to abort the request.
              - The value must be between 200 and 599 inclusive.
              returned: success
              type: int
            percentage:
              description:
              - The percentage of traffic (connections/operations/requests) which
                will be aborted as part of fault injection.
              - The value must be between 0.0 and 100.0 inclusive.
              returned: success
              type: str
          description:
          - The specification for how client requests are aborted as part of fault
            injection.
          returned: success
          type: complex
        delay:
          contains:
            fixedDelay:
              contains:
                nanos:
                  description:
                  - Span of time that's a fraction of a second at nanosecond resolution.
                    Durations less than one second are represented with a 0 seconds
                    field and a positive nanos field. Must be from 0 to 999,999,999
                    inclusive.
                  returned: success
                  type: int
                seconds:
                  description:
                  - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                    inclusive.
                  - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr
                    * 24 hr/day * 365.25 days/year * 10000 years .'
                  returned: success
                  type: str
              description:
              - Specifies the value of the fixed delay interval.
              returned: success
              type: complex
            percentage:
              description:
              - The percentage of traffic (connections/operations/requests) on which
                delay will be introduced as part of fault injection.
              - The value must be between 0.0 and 100.0 inclusive.
              returned: success
              type: str
          description:
          - The specification for how client requests are delayed as part of fault
            injection, before being sent to a backend service.
          returned: success
          type: complex
      description:
      - The specification for fault injection introduced into traffic to test the
        resiliency of clients to backend service failure.
      - As part of fault injection, when clients send requests to a backend service,
        delays can be introduced by Loadbalancer on a percentage of requests before
        sending those request to the backend service. Similarly requests from clients
        can be aborted by the Loadbalancer for a percentage of requests.
      - timeout and retryPolicy will be ignored by clients that are configured with
        a faultInjectionPolicy.
      returned: success
      type: complex
    requestMirrorPolicy:
      contains:
        backendService:
          description:
          - The full or partial URL to the BackendService resource being mirrored
            to.
          returned: success
          type: dict
      description:
      - Specifies the policy on how requests intended for the route's backends are
        shadowed to a separate mirrored backend service.
      - Loadbalancer does not wait for responses from the shadow service. Prior to
        sending traffic to the shadow service, the host / authority header is suffixed
        with -shadow.
      returned: success
      type: complex
    retryPolicy:
      contains:
        numRetries:
          description:
          - Specifies the allowed number retries. This number must be > 0. If not
            specified, defaults to 1.
          returned: success
          type: int
        perTryTimeout:
          contains:
            nanos:
              description:
              - Span of time that's a fraction of a second at nanosecond resolution.
                Durations less than one second are represented with a 0 seconds field
                and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
              returned: success
              type: int
            seconds:
              description:
              - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                inclusive.
              - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24
                hr/day * 365.25 days/year * 10000 years .'
              returned: success
              type: str
          description:
          - Specifies a non-zero timeout per retry attempt.
          - If not specified, will use the timeout set in HttpRouteAction. If timeout
            in HttpRouteAction is not set, will use the largest timeout among all
            backend services associated with the route.
          returned: success
          type: complex
        retryConditions:
          description:
          - 'Specfies one or more conditions when this retry rule applies. Valid values
            are: * 5xx: Loadbalancer will attempt a retry if the backend service responds
            with any 5xx response code, or if the backend service does not respond
            at all, example: disconnects, reset, read timeout, * connection failure,
            and refused streams.'
          - '* gateway-error: Similar to 5xx, but only applies to response codes 502,
            503 or 504.'
          - '* connect-failure: Loadbalancer will retry on failures connecting to
            backend services, for example due to connection timeouts.'
          - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.'
          - Currently the only retriable error supported is 409.
          - '* refused-stream:Loadbalancer will retry if the backend service resets
            the stream with a REFUSED_STREAM error code.'
          - This reset type indicates that it is safe to retry.
          - '* cancelled: Loadbalancer will retry if the gRPC status code in the response
            header is set to cancelled * deadline-exceeded: Loadbalancer will retry
            if the gRPC status code in the response header is set to deadline-exceeded
            * resource-exhausted: Loadbalancer will retry if the gRPC status code
            in the response header is set to resource-exhausted * unavailable: Loadbalancer
            will retry if the gRPC status code in the response header is set to unavailable
            .'
          returned: success
          type: list
      description:
      - Specifies the retry policy associated with this route.
      returned: success
      type: complex
    timeout:
      contains:
        nanos:
          description:
          - Span of time that's a fraction of a second at nanosecond resolution. Durations
            less than one second are represented with a 0 seconds field and a positive
            nanos field. Must be from 0 to 999,999,999 inclusive.
          returned: success
          type: int
        seconds:
          description:
          - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
            inclusive.
          - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day
            * 365.25 days/year * 10000 years .'
          returned: success
          type: str
      description:
      - Specifies the timeout for the selected route. Timeout is computed from the
        time the request has been fully processed (i.e. end-of-stream) up until the
        response has been completely processed. Timeout includes all retries.
      - If not specified, will use the largest timeout among all backend services
        associated with the route.
      returned: success
      type: complex
    urlRewrite:
      contains:
        hostRewrite:
          description:
          - Prior to forwarding the request to the selected service, the request's
            host header is replaced with contents of hostRewrite.
          - The value must be between 1 and 255 characters.
          returned: success
          type: str
        pathPrefixRewrite:
          description:
          - Prior to forwarding the request to the selected backend service, the matching
            portion of the request's path is replaced by pathPrefixRewrite.
          - The value must be between 1 and 1024 characters.
          returned: success
          type: str
      description:
      - The spec to modify the URL of the request, prior to forwarding the request
        to the matched service.
      returned: success
      type: complex
    weightedBackendServices:
      contains:
        backendService:
          description:
          - The full or partial URL to the default BackendService resource. Before
            forwarding the request to backendService, the loadbalancer applies any
            relevant headerActions specified as part of this backendServiceWeight.
          returned: success
          type: dict
        headerAction:
          contains:
            requestHeadersToAdd:
              contains:
                headerName:
                  description:
                  - The name of the header to add.
                  returned: success
                  type: str
                headerValue:
                  description:
                  - The value of the header to add.
                  returned: success
                  type: str
                replace:
                  description:
                  - If false, headerValue is appended to any values that already exist
                    for the header.
                  - If true, headerValue is set for the header, discarding any values
                    that were set for that header.
                  returned: success
                  type: bool
              description:
              - Headers to add to a matching request prior to forwarding the request
                to the backendService.
              returned: success
              type: complex
            requestHeadersToRemove:
              description:
              - A list of header names for headers that need to be removed from the
                request prior to forwarding the request to the backendService.
              returned: success
              type: list
            responseHeadersToAdd:
              contains:
                headerName:
                  description:
                  - The name of the header to add.
                  returned: success
                  type: str
                headerValue:
                  description:
                  - The value of the header to add.
                  returned: success
                  type: str
                replace:
                  description:
                  - If false, headerValue is appended to any values that already exist
                    for the header.
                  - If true, headerValue is set for the header, discarding any values
                    that were set for that header.
                  returned: success
                  type: bool
              description:
              - Headers to add the response prior to sending the response back to
                the client.
              returned: success
              type: complex
            responseHeadersToRemove:
              description:
              - A list of header names for headers that need to be removed from the
                response prior to sending the response back to the client.
              returned: success
              type: list
          description:
          - Specifies changes to request and response headers that need to take effect
            for the selected backendService.
          - headerAction specified here take effect before headerAction in the enclosing
            HttpRouteRule, PathMatcher and UrlMap.
          returned: success
          type: complex
        weight:
          description:
          - Specifies the fraction of traffic sent to backendService, computed as
            weight / (sum of all weightedBackendService weights in routeAction) .
          - The selection of a backend service is determined only for new traffic.
            Once a user's request has been directed to a backendService, subsequent
            requests will be sent to the same backendService as determined by the
            BackendService's session affinity policy.
          - The value must be between 0 and 1000 .
          returned: success
          type: int
      description:
      - A list of weighted backend services to send traffic to when a route match
        occurs.
      - The weights determine the fraction of traffic that flows to their corresponding
        backend service.
      - If all traffic needs to go to a single backend service, there must be one
        weightedBackendService with weight set to a non 0 number.
      - Once a backendService is identified and before forwarding the request to the
        backend service, advanced routing actions like Url rewrites and header transformations
        are applied depending on additional settings specified in this HttpRouteAction.
      returned: success
      type: complex
  description:
  - defaultRouteAction takes effect when none of the hostRules match. The load balancer
    performs advanced routing actions like URL rewrites, header transformations, etc.
    prior to forwarding the request to the selected backend.
  - If defaultRouteAction specifies any weightedBackendServices, defaultService must
    not be set. Conversely if defaultService is set, defaultRouteAction cannot contain
    any weightedBackendServices.
  - Only one of defaultRouteAction or defaultUrlRedirect must be set.
  returned: success
  type: complex
defaultService:
  description:
  - The full or partial URL of the defaultService resource to which traffic is directed
    if none of the hostRules match. If defaultRouteAction is additionally specified,
    advanced routing actions like URL Rewrites, etc. take effect prior to sending
    the request to the backend. However, if defaultService is specified, defaultRouteAction
    cannot contain any weightedBackendServices. Conversely, if routeAction specifies
    any weightedBackendServices, service must not be specified. Only one of defaultService,
    defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set.
  returned: success
  type: dict
defaultUrlRedirect:
  contains:
    hostRedirect:
      description:
      - The host that will be used in the redirect response instead of the one that
        was supplied in the request. The value must be between 1 and 255 characters.
      returned: success
      type: str
    httpsRedirect:
      description:
      - If set to true, the URL scheme in the redirected request is set to https.
        If set to false, the URL scheme of the redirected request will remain the
        same as that of the request. This must only be set for UrlMaps used in TargetHttpProxys.
        Setting this true for TargetHttpsProxy is not permitted. The default is set
        to false.
      returned: success
      type: bool
    pathRedirect:
      description:
      - The path that will be used in the redirect response instead of the one that
        was supplied in the request. pathRedirect cannot be supplied together with
        prefixRedirect. Supply one alone or neither. If neither is supplied, the path
        of the original request will be used for the redirect. The value must be between
        1 and 1024 characters.
      returned: success
      type: str
    prefixRedirect:
      description:
      - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
        retaining the remaining portion of the URL before redirecting the request.
      - prefixRedirect cannot be supplied together with pathRedirect. Supply one alone
        or neither. If neither is supplied, the path of the original request will
        be used for the redirect. The value must be between 1 and 1024 characters.
      returned: success
      type: str
    redirectResponseCode:
      description:
      - 'The HTTP Status code to use for this RedirectAction. Supported values are:
        * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to
        301.'
      - '* FOUND, which corresponds to 302.'
      - '* SEE_OTHER which corresponds to 303.'
      - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
        method will be retained.'
      - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
        method will be retained.'
      returned: success
      type: str
    stripQuery:
      description:
      - If set to true, any accompanying query portion of the original URL is removed
        prior to redirecting the request. If set to false, the query portion of the
        original URL is retained. The default is set to false.
      returned: success
      type: bool
  description:
  - When none of the specified hostRules match, the request is redirected to a URL
    specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService
    or defaultRouteAction must not be set.
  returned: success
  type: complex
description:
  description:
  - An optional description of this resource. Provide this property when you create
    the resource.
  returned: success
  type: str
fingerprint:
  description:
  - Fingerprint of this resource. A hash of the contents stored in this object. This
    field is used in optimistic locking.
  returned: success
  type: str
headerAction:
  contains:
    requestHeadersToAdd:
      contains:
        headerName:
          description:
          - The name of the header.
          returned: success
          type: str
        headerValue:
          description:
          - The value of the header to add.
          returned: success
          type: str
        replace:
          description:
          - If false, headerValue is appended to any values that already exist for
            the header. If true, headerValue is set for the header, discarding any
            values that were set for that header.
          returned: success
          type: bool
      description:
      - Headers to add to a matching request prior to forwarding the request to the
        backendService.
      returned: success
      type: complex
    requestHeadersToRemove:
      description:
      - A list of header names for headers that need to be removed from the request
        prior to forwarding the request to the backendService.
      returned: success
      type: list
    responseHeadersToAdd:
      contains:
        headerName:
          description:
          - The name of the header.
          returned: success
          type: str
        headerValue:
          description:
          - The value of the header to add.
          returned: success
          type: str
        replace:
          description:
          - If false, headerValue is appended to any values that already exist for
            the header. If true, headerValue is set for the header, discarding any
            values that were set for that header.
          returned: success
          type: bool
      description:
      - Headers to add the response prior to sending the response back to the client.
      returned: success
      type: complex
    responseHeadersToRemove:
      description:
      - A list of header names for headers that need to be removed from the response
        prior to sending the response back to the client.
      returned: success
      type: list
  description:
  - Specifies changes to request and response headers that need to take effect for
    the selected backendService. The headerAction specified here take effect after
    headerAction specified under pathMatcher.
  returned: success
  type: complex
hostRules:
  contains:
    description:
      description:
      - An optional description of this resource. Provide this property when you create
        the resource.
      returned: success
      type: str
    hosts:
      description:
      - The list of host patterns to match. They must be valid hostnames, except *
        will match any string of ([a-z0-9-.]*). In that case, * must be the first
        character and must be followed in the pattern by either - or .
      returned: success
      type: list
    pathMatcher:
      description:
      - The name of the PathMatcher to use to match the path portion of the URL if
        the hostRule matches the URL's host portion.
      returned: success
      type: str
  description:
  - The list of HostRules to use against the URL.
  returned: success
  type: complex
id:
  description:
  - The unique identifier for the resource.
  returned: success
  type: int
name:
  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.
  returned: success
  type: str
pathMatchers:
  contains:
    defaultRouteAction:
      contains:
        corsPolicy:
          contains:
            allowCredentials:
              description:
              - In response to a preflight request, setting this to true indicates
                that the actual request can include user credentials.
              - This translates to the Access-Control-Allow-Credentials header.
              returned: success
              type: bool
            allowHeaders:
              description:
              - Specifies the content for the Access-Control-Allow-Headers header.
              returned: success
              type: list
            allowMethods:
              description:
              - Specifies the content for the Access-Control-Allow-Methods header.
              returned: success
              type: list
            allowOriginRegexes:
              description:
              - Specifies the regular expression patterns that match allowed origins.
                For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                An origin is allowed if it matches either an item in allowOrigins
                or an item in allowOriginRegexes.
              returned: success
              type: list
            allowOrigins:
              description:
              - Specifies the list of origins that will be allowed to do CORS requests.
              - An origin is allowed if it matches either an item in allowOrigins
                or an item in allowOriginRegexes.
              returned: success
              type: list
            disabled:
              description:
              - If true, specifies the CORS policy is disabled. The default value
                is false, which indicates that the CORS policy is in effect.
              returned: success
              type: bool
            exposeHeaders:
              description:
              - Specifies the content for the Access-Control-Expose-Headers header.
              returned: success
              type: list
            maxAge:
              description:
              - Specifies how long results of a preflight request can be cached in
                seconds.
              - This translates to the Access-Control-Max-Age header.
              returned: success
              type: int
          description:
          - The specification for allowing client side cross-origin requests. Please
            see [W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)
            .
          returned: success
          type: complex
        faultInjectionPolicy:
          contains:
            abort:
              contains:
                httpStatus:
                  description:
                  - The HTTP status code used to abort the request.
                  - The value must be between 200 and 599 inclusive.
                  returned: success
                  type: int
                percentage:
                  description:
                  - The percentage of traffic (connections/operations/requests) which
                    will be aborted as part of fault injection.
                  - The value must be between 0.0 and 100.0 inclusive.
                  returned: success
                  type: str
              description:
              - The specification for how client requests are aborted as part of fault
                injection.
              returned: success
              type: complex
            delay:
              contains:
                fixedDelay:
                  contains:
                    nanos:
                      description:
                      - Span of time that's a fraction of a second at nanosecond resolution.
                        Durations less than one second are represented with a 0 seconds
                        field and a positive nanos field. Must be from 0 to 999,999,999
                        inclusive.
                      returned: success
                      type: int
                    seconds:
                      description:
                      - Span of time at a resolution of a second. Must be from 0 to
                        315,576,000,000 inclusive.
                      - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr
                        * 24 hr/day * 365.25 days/year * 10000 years .'
                      returned: success
                      type: str
                  description:
                  - Specifies the value of the fixed delay interval.
                  returned: success
                  type: complex
                percentage:
                  description:
                  - The percentage of traffic (connections/operations/requests) on
                    which delay will be introduced as part of fault injection.
                  - The value must be between 0.0 and 100.0 inclusive.
                  returned: success
                  type: str
              description:
              - The specification for how client requests are delayed as part of fault
                injection, before being sent to a backend service.
              returned: success
              type: complex
          description:
          - The specification for fault injection introduced into traffic to test
            the resiliency of clients to backend service failure.
          - As part of fault injection, when clients send requests to a backend service,
            delays can be introduced by Loadbalancer on a percentage of requests before
            sending those request to the backend service. Similarly requests from
            clients can be aborted by the Loadbalancer for a percentage of requests.
          - timeout and retryPolicy will be ignored by clients that are configured
            with a faultInjectionPolicy.
          returned: success
          type: complex
        requestMirrorPolicy:
          contains:
            backendService:
              description:
              - The full or partial URL to the BackendService resource being mirrored
                to.
              returned: success
              type: dict
          description:
          - Specifies the policy on how requests intended for the route's backends
            are shadowed to a separate mirrored backend service.
          - Loadbalancer does not wait for responses from the shadow service. Prior
            to sending traffic to the shadow service, the host / authority header
            is suffixed with -shadow.
          returned: success
          type: complex
        retryPolicy:
          contains:
            numRetries:
              description:
              - Specifies the allowed number retries. This number must be > 0. If
                not specified, defaults to 1.
              returned: success
              type: int
            perTryTimeout:
              contains:
                nanos:
                  description:
                  - Span of time that's a fraction of a second at nanosecond resolution.
                    Durations less than one second are represented with a 0 seconds
                    field and a positive nanos field. Must be from 0 to 999,999,999
                    inclusive.
                  returned: success
                  type: int
                seconds:
                  description:
                  - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                    inclusive.
                  - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr
                    * 24 hr/day * 365.25 days/year * 10000 years .'
                  returned: success
                  type: str
              description:
              - Specifies a non-zero timeout per retry attempt.
              - If not specified, will use the timeout set in HttpRouteAction. If
                timeout in HttpRouteAction is not set, will use the largest timeout
                among all backend services associated with the route.
              returned: success
              type: complex
            retryConditions:
              description:
              - 'Specfies one or more conditions when this retry rule applies. Valid
                values are: * 5xx: Loadbalancer will attempt a retry if the backend
                service responds with any 5xx response code, or if the backend service
                does not respond at all, example: disconnects, reset, read timeout,
                * connection failure, and refused streams.'
              - '* gateway-error: Similar to 5xx, but only applies to response codes
                502, 503 or 504.'
              - '* connect-failure: Loadbalancer will retry on failures connecting
                to backend services, for example due to connection timeouts.'
              - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                codes.'
              - Currently the only retriable error supported is 409.
              - '* refused-stream:Loadbalancer will retry if the backend service resets
                the stream with a REFUSED_STREAM error code.'
              - This reset type indicates that it is safe to retry.
              - '* cancelled: Loadbalancer will retry if the gRPC status code in the
                response header is set to cancelled * deadline-exceeded: Loadbalancer
                will retry if the gRPC status code in the response header is set to
                deadline-exceeded * resource-exhausted: Loadbalancer will retry if
                the gRPC status code in the response header is set to resource-exhausted
                * unavailable: Loadbalancer will retry if the gRPC status code in
                the response header is set to unavailable .'
              returned: success
              type: list
          description:
          - Specifies the retry policy associated with this route.
          returned: success
          type: complex
        timeout:
          contains:
            nanos:
              description:
              - Span of time that's a fraction of a second at nanosecond resolution.
                Durations less than one second are represented with a 0 seconds field
                and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
              returned: success
              type: int
            seconds:
              description:
              - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                inclusive.
              - 'Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24
                hr/day * 365.25 days/year * 10000 years .'
              returned: success
              type: str
          description:
          - Specifies the timeout for the selected route. Timeout is computed from
            the time the request has been fully processed (i.e. end-of-stream) up
            until the response has been completely processed. Timeout includes all
            retries.
          - If not specified, will use the largest timeout among all backend services
            associated with the route.
          returned: success
          type: complex
        urlRewrite:
          contains:
            hostRewrite:
              description:
              - Prior to forwarding the request to the selected service, the request's
                host header is replaced with contents of hostRewrite.
              - The value must be between 1 and 255 characters.
              returned: success
              type: str
            pathPrefixRewrite:
              description:
              - Prior to forwarding the request to the selected backend service, the
                matching portion of the request's path is replaced by pathPrefixRewrite.
              - The value must be between 1 and 1024 characters.
              returned: success
              type: str
          description:
          - The spec to modify the URL of the request, prior to forwarding the request
            to the matched service.
          returned: success
          type: complex
        weightedBackendServices:
          contains:
            backendService:
              description:
              - The full or partial URL to the default BackendService resource. Before
                forwarding the request to backendService, the loadbalancer applies
                any relevant headerActions specified as part of this backendServiceWeight.
              returned: success
              type: dict
            headerAction:
              contains:
                requestHeadersToAdd:
                  contains:
                    headerName:
                      description:
                      - The name of the header to add.
                      returned: success
                      type: str
                    headerValue:
                      description:
                      - The value of the header to add.
                      returned: success
                      type: str
                    replace:
                      description:
                      - If false, headerValue is appended to any values that already
                        exist for the header.
                      - If true, headerValue is set for the header, discarding any
                        values that were set for that header.
                      returned: success
                      type: bool
                  description:
                  - Headers to add to a matching request prior to forwarding the request
                    to the backendService.
                  returned: success
                  type: complex
                requestHeadersToRemove:
                  description:
                  - A list of header names for headers that need to be removed from
                    the request prior to forwarding the request to the backendService.
                  returned: success
                  type: list
                responseHeadersToAdd:
                  contains:
                    headerName:
                      description:
                      - The name of the header to add.
                      returned: success
                      type: str
                    headerValue:
                      description:
                      - The value of the header to add.
                      returned: success
                      type: str
                    replace:
                      description:
                      - If false, headerValue is appended to any values that already
                        exist for the header.
                      - If true, headerValue is set for the header, discarding any
                        values that were set for that header.
                      returned: success
                      type: bool
                  description:
                  - Headers to add the response prior to sending the response back
                    to the client.
                  returned: success
                  type: complex
                responseHeadersToRemove:
                  description:
                  - A list of header names for headers that need to be removed from
                    the response prior to sending the response back to the client.
                  returned: success
                  type: list
              description:
              - Specifies changes to request and response headers that need to take
                effect for the selected backendService.
              - headerAction specified here take effect before headerAction in the
                enclosing HttpRouteRule, PathMatcher and UrlMap.
              returned: success
              type: complex
            weight:
              description:
              - Specifies the fraction of traffic sent to backendService, computed
                as weight / (sum of all weightedBackendService weights in routeAction)
                .
              - The selection of a backend service is determined only for new traffic.
                Once a user's request has been directed to a backendService, subsequent
                requests will be sent to the same backendService as determined by
                the BackendService's session affinity policy.
              - The value must be between 0 and 1000 .
              returned: success
              type: int
          description:
          - A list of weighted backend services to send traffic to when a route match
            occurs.
          - The weights determine the fraction of traffic that flows to their corresponding
            backend service.
          - If all traffic needs to go to a single backend service, there must be
            one weightedBackendService with weight set to a non 0 number.
          - Once a backendService is identified and before forwarding the request
            to the backend service, advanced routing actions like Url rewrites and
            header transformations are applied depending on additional settings specified
            in this HttpRouteAction.
          returned: success
          type: complex
      description:
      - defaultRouteAction takes effect when none of the pathRules or routeRules match.
        The load balancer performs advanced routing actions like URL rewrites, header
        transformations, etc. prior to forwarding the request to the selected backend.
        If defaultRouteAction specifies any weightedBackendServices, defaultService
        must not be set.
      - Conversely if defaultService is set, defaultRouteAction cannot contain any
        weightedBackendServices.
      - Only one of defaultRouteAction or defaultUrlRedirect must be set.
      returned: success
      type: complex
    defaultService:
      description:
      - 'The full or partial URL to the BackendService resource. This will be used
        if none of the pathRules or routeRules defined by this PathMatcher are matched.
        For example, the following are all valid URLs to a BackendService resource:
        - U(https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService)
        - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService
        If defaultRouteAction is additionally specified, advanced routing actions
        like URL Rewrites, etc. take effect prior to sending the request to the backend.
        However, if defaultService is specified, defaultRouteAction cannot contain
        any weightedBackendServices. Conversely, if defaultRouteAction specifies any
        weightedBackendServices, defaultService must not be specified.'
      - 'Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService
        must be set. Authorization requires one or more of the following Google IAM
        permissions on the specified resource defaultService: - compute.backendBuckets.use
        - compute.backendServices.use .'
      returned: success
      type: dict
    defaultUrlRedirect:
      contains:
        hostRedirect:
          description:
          - The host that will be used in the redirect response instead of the one
            that was supplied in the request. The value must be between 1 and 255
            characters.
          returned: success
          type: str
        httpsRedirect:
          description:
          - If set to true, the URL scheme in the redirected request is set to https.
            If set to false, the URL scheme of the redirected request will remain
            the same as that of the request. This must only be set for UrlMaps used
            in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted.
            The default is set to false.
          returned: success
          type: bool
        pathRedirect:
          description:
          - The path that will be used in the redirect response instead of the one
            that was supplied in the request. pathRedirect cannot be supplied together
            with prefixRedirect. Supply one alone or neither. If neither is supplied,
            the path of the original request will be used for the redirect. The value
            must be between 1 and 1024 characters.
          returned: success
          type: str
        prefixRedirect:
          description:
          - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
            retaining the remaining portion of the URL before redirecting the request.
          - prefixRedirect cannot be supplied together with pathRedirect. Supply one
            alone or neither. If neither is supplied, the path of the original request
            will be used for the redirect. The value must be between 1 and 1024 characters.
          returned: success
          type: str
        redirectResponseCode:
          description:
          - 'The HTTP Status code to use for this RedirectAction. Supported values
            are: * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
            to 301.'
          - '* FOUND, which corresponds to 302.'
          - '* SEE_OTHER which corresponds to 303.'
          - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
            method will be retained.'
          - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
            method will be retained.'
          returned: success
          type: str
        stripQuery:
          description:
          - If set to true, any accompanying query portion of the original URL is
            removed prior to redirecting the request. If set to false, the query portion
            of the original URL is retained.
          returned: success
          type: bool
      description:
      - When none of the specified hostRules match, the request is redirected to a
        URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService
        or defaultRouteAction must not be set.
      returned: success
      type: complex
    description:
      description:
      - An optional description of this resource. Provide this property when you create
        the resource.
      returned: success
      type: str
    headerAction:
      contains:
        requestHeadersToAdd:
          contains:
            headerName:
              description:
              - The name of the header.
              returned: success
              type: str
            headerValue:
              description:
              - The value of the header to add.
              returned: success
              type: str
            replace:
              description:
              - If false, headerValue is appended to any values that already exist
                for the header. If true, headerValue is set for the header, discarding
                any values that were set for that header.
              returned: success
              type: bool
          description:
          - Headers to add to a matching request prior to forwarding the request to
            the backendService.
          returned: success
          type: complex
        requestHeadersToRemove:
          description:
          - A list of header names for headers that need to be removed from the request
            prior to forwarding the request to the backendService.
          returned: success
          type: list
        responseHeadersToAdd:
          contains:
            headerName:
              description:
              - The name of the header.
              returned: success
              type: str
            headerValue:
              description:
              - The value of the header to add.
              returned: success
              type: str
            replace:
              description:
              - If false, headerValue is appended to any values that already exist
                for the header. If true, headerValue is set for the header, discarding
                any values that were set for that header.
              returned: success
              type: bool
          description:
          - Headers to add the response prior to sending the response back to the
            client.
          returned: success
          type: complex
        responseHeadersToRemove:
          description:
          - A list of header names for headers that need to be removed from the response
            prior to sending the response back to the client.
          returned: success
          type: list
      description:
      - Specifies changes to request and response headers that need to take effect
        for the selected backendService. HeaderAction specified here are applied after
        the matching HttpRouteRule HeaderAction and before the HeaderAction in the
        UrlMap .
      returned: success
      type: complex
    name:
      description:
      - The name to which this PathMatcher is referred by the HostRule.
      returned: success
      type: str
    pathRules:
      contains:
        paths:
          description:
          - 'The list of path patterns to match. Each must start with / and the only
            place a * is allowed is at the end following a /. The string fed to the
            path matcher does not include any text after the first ? or #, and those
            chars are not allowed here.'
          returned: success
          type: list
        routeAction:
          contains:
            corsPolicy:
              contains:
                allowCredentials:
                  description:
                  - In response to a preflight request, setting this to true indicates
                    that the actual request can include user credentials. This translates
                    to the Access- Control-Allow-Credentials header. Defaults to false.
                  returned: success
                  type: bool
                allowHeaders:
                  description:
                  - Specifies the content for the Access-Control-Allow-Headers header.
                  returned: success
                  type: list
                allowMethods:
                  description:
                  - Specifies the content for the Access-Control-Allow-Methods header.
                  returned: success
                  type: list
                allowOriginRegexes:
                  description:
                  - Specifies the regular expression patterns that match allowed origins.
                    For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                    An origin is allowed if it matches either allow_origins or allow_origin_regex.
                  returned: success
                  type: list
                allowOrigins:
                  description:
                  - Specifies the list of origins that will be allowed to do CORS
                    requests. An origin is allowed if it matches either allow_origins
                    or allow_origin_regex.
                  returned: success
                  type: list
                disabled:
                  description:
                  - If true, specifies the CORS policy is disabled.
                  returned: success
                  type: bool
                exposeHeaders:
                  description:
                  - Specifies the content for the Access-Control-Expose-Headers header.
                  returned: success
                  type: list
                maxAge:
                  description:
                  - Specifies how long the results of a preflight request can be cached.
                    This translates to the content for the Access-Control-Max-Age
                    header.
                  returned: success
                  type: int
              description:
              - The specification for allowing client side cross-origin requests.
                Please see W3C Recommendation for Cross Origin Resource Sharing .
              returned: success
              type: complex
            faultInjectionPolicy:
              contains:
                abort:
                  contains:
                    httpStatus:
                      description:
                      - The HTTP status code used to abort the request. The value
                        must be between 200 and 599 inclusive.
                      returned: success
                      type: int
                    percentage:
                      description:
                      - The percentage of traffic (connections/operations/requests)
                        which will be aborted as part of fault injection. The value
                        must be between 0.0 and 100.0 inclusive.
                      returned: success
                      type: str
                  description:
                  - The specification for how client requests are aborted as part
                    of fault injection.
                  returned: success
                  type: complex
                delay:
                  contains:
                    fixedDelay:
                      contains:
                        nanos:
                          description:
                          - Span of time that's a fraction of a second at nanosecond
                            resolution. Durations less than one second are represented
                            with a 0 `seconds` field and a positive `nanos` field.
                            Must be from 0 to 999,999,999 inclusive.
                          returned: success
                          type: int
                        seconds:
                          description:
                          - Span of time at a resolution of a second. Must be from
                            0 to 315,576,000,000 inclusive.
                          returned: success
                          type: str
                      description:
                      - Specifies the value of the fixed delay interval.
                      returned: success
                      type: complex
                    percentage:
                      description:
                      - The percentage of traffic (connections/operations/requests)
                        on which delay will be introduced as part of fault injection.
                        The value must be between 0.0 and 100.0 inclusive.
                      returned: success
                      type: str
                  description:
                  - The specification for how client requests are delayed as part
                    of fault injection, before being sent to a backend service.
                  returned: success
                  type: complex
              description:
              - The specification for fault injection introduced into traffic to test
                the resiliency of clients to backend service failure. As part of fault
                injection, when clients send requests to a backend service, delays
                can be introduced by Loadbalancer on a percentage of requests before
                sending those request to the backend service. Similarly requests from
                clients can be aborted by the Loadbalancer for a percentage of requests.
                timeout and retry_policy will be ignored by clients that are configured
                with a fault_injection_policy.
              returned: success
              type: complex
            requestMirrorPolicy:
              contains:
                backendService:
                  description:
                  - The BackendService resource being mirrored to.
                  returned: success
                  type: dict
              description:
              - Specifies the policy on how requests intended for the route's backends
                are shadowed to a separate mirrored backend service. Loadbalancer
                does not wait for responses from the shadow service. Prior to sending
                traffic to the shadow service, the host / authority header is suffixed
                with -shadow.
              returned: success
              type: complex
            retryPolicy:
              contains:
                numRetries:
                  description:
                  - Specifies the allowed number retries. This number must be > 0.
                  returned: success
                  type: int
                perTryTimeout:
                  contains:
                    nanos:
                      description:
                      - Span of time that's a fraction of a second at nanosecond resolution.
                        Durations less than one second are represented with a 0 `seconds`
                        field and a positive `nanos` field. Must be from 0 to 999,999,999
                        inclusive.
                      returned: success
                      type: int
                    seconds:
                      description:
                      - Span of time at a resolution of a second. Must be from 0 to
                        315,576,000,000 inclusive.
                      returned: success
                      type: str
                  description:
                  - Specifies a non-zero timeout per retry attempt.
                  returned: success
                  type: complex
                retryConditions:
                  description:
                  - 'Specifies one or more conditions when this retry rule applies.
                    Valid values are: * 5xx: Loadbalancer will attempt a retry if
                    the backend service responds with any 5xx response code, or if
                    the backend service does not respond at all, example: disconnects,
                    reset, read timeout, connection failure, and refused streams.'
                  - '* gateway-error: Similar to 5xx, but only applies to response
                    codes 502, 503 or 504.'
                  - '* connect-failure: Loadbalancer will retry on failures connecting
                    to backend services, for example due to connection timeouts.'
                  - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                    codes.'
                  - Currently the only retriable error supported is 409.
                  - '* refused-stream: Loadbalancer will retry if the backend service
                    resets the stream with a REFUSED_STREAM error code. This reset
                    type indicates that it is safe to retry.'
                  - '* cancelled: Loadbalancer will retry if the gRPC status code
                    in the response header is set to cancelled * deadline-exceeded:
                    Loadbalancer will retry if the gRPC status code in the response
                    header is set to deadline-exceeded * resource-exhausted: Loadbalancer
                    will retry if the gRPC status code in the response header is set
                    to resource-exhausted * unavailable: Loadbalancer will retry if
                    the gRPC status code in the response header is set to unavailable
                    .'
                  returned: success
                  type: list
              description:
              - Specifies the retry policy associated with this route.
              returned: success
              type: complex
            timeout:
              contains:
                nanos:
                  description:
                  - Span of time that's a fraction of a second at nanosecond resolution.
                    Durations less than one second are represented with a 0 `seconds`
                    field and a positive `nanos` field. Must be from 0 to 999,999,999
                    inclusive.
                  returned: success
                  type: int
                seconds:
                  description:
                  - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                    inclusive.
                  returned: success
                  type: str
              description:
              - Specifies the timeout for the selected route. Timeout is computed
                from the time the request is has been fully processed (i.e. end-of-stream)
                up until the response has been completely processed. Timeout includes
                all retries. If not specified, the default value is 15 seconds.
              returned: success
              type: complex
            urlRewrite:
              contains:
                hostRewrite:
                  description:
                  - Prior to forwarding the request to the selected service, the request's
                    host header is replaced with contents of hostRewrite. The value
                    must be between 1 and 255 characters.
                  returned: success
                  type: str
                pathPrefixRewrite:
                  description:
                  - Prior to forwarding the request to the selected backend service,
                    the matching portion of the request's path is replaced by pathPrefixRewrite.
                    The value must be between 1 and 1024 characters.
                  returned: success
                  type: str
              description:
              - The spec to modify the URL of the request, prior to forwarding the
                request to the matched service .
              returned: success
              type: complex
            weightedBackendServices:
              contains:
                backendService:
                  description:
                  - The default BackendService resource. Before forwarding the request
                    to backendService, the loadbalancer applies any relevant headerActions
                    specified as part of this backendServiceWeight.
                  returned: success
                  type: dict
                headerAction:
                  contains:
                    requestHeadersToAdd:
                      contains:
                        headerName:
                          description:
                          - The name of the header.
                          returned: success
                          type: str
                        headerValue:
                          description:
                          - The value of the header to add.
                          returned: success
                          type: str
                        replace:
                          description:
                          - If false, headerValue is appended to any values that already
                            exist for the header. If true, headerValue is set for
                            the header, discarding any values that were set for that
                            header.
                          returned: success
                          type: bool
                      description:
                      - Headers to add to a matching request prior to forwarding the
                        request to the backendService.
                      returned: success
                      type: complex
                    requestHeadersToRemove:
                      description:
                      - A list of header names for headers that need to be removed
                        from the request prior to forwarding the request to the backendService.
                      returned: success
                      type: list
                    responseHeadersToAdd:
                      contains:
                        headerName:
                          description:
                          - The name of the header.
                          returned: success
                          type: str
                        headerValue:
                          description:
                          - The value of the header to add.
                          returned: success
                          type: str
                        replace:
                          description:
                          - If false, headerValue is appended to any values that already
                            exist for the header. If true, headerValue is set for
                            the header, discarding any values that were set for that
                            header.
                          returned: success
                          type: bool
                      description:
                      - Headers to add the response prior to sending the response
                        back to the client.
                      returned: success
                      type: complex
                    responseHeadersToRemove:
                      description:
                      - A list of header names for headers that need to be removed
                        from the response prior to sending the response back to the
                        client.
                      returned: success
                      type: list
                  description:
                  - Specifies changes to request and response headers that need to
                    take effect for the selected backendService. headerAction specified
                    here take effect before headerAction in the enclosing HttpRouteRule,
                    PathMatcher and UrlMap.
                  returned: success
                  type: complex
                weight:
                  description:
                  - Specifies the fraction of traffic sent to backendService, computed
                    as weight / (sum of all weightedBackendService weights in routeAction)
                    . The selection of a backend service is determined only for new
                    traffic. Once a user's request has been directed to a backendService,
                    subsequent requests will be sent to the same backendService as
                    determined by the BackendService's session affinity policy.
                  - The value must be between 0 and 1000 .
                  returned: success
                  type: int
              description:
              - A list of weighted backend services to send traffic to when a route
                match occurs. The weights determine the fraction of traffic that flows
                to their corresponding backend service. If all traffic needs to go
                to a single backend service, there must be one weightedBackendService
                with weight set to a non 0 number. Once a backendService is identified
                and before forwarding the request to the backend service, advanced
                routing actions like Url rewrites and header transformations are applied
                depending on additional settings specified in this HttpRouteAction.
              returned: success
              type: complex
          description:
          - In response to a matching path, the load balancer performs advanced routing
            actions like URL rewrites, header transformations, etc. prior to forwarding
            the request to the selected backend. If routeAction specifies any weightedBackendServices,
            service must not be set. Conversely if service is set, routeAction cannot
            contain any weightedBackendServices. Only one of routeAction or urlRedirect
            must be set.
          returned: success
          type: complex
        service:
          description:
          - The backend service resource to which traffic is directed if this rule
            is matched. If routeAction is additionally specified, advanced routing
            actions like URL Rewrites, etc. take effect prior to sending the request
            to the backend. However, if service is specified, routeAction cannot contain
            any weightedBackendService s. Conversely, if routeAction specifies any
            weightedBackendServices, service must not be specified. Only one of urlRedirect,
            service or routeAction.weightedBackendService must be set.
          returned: success
          type: dict
        urlRedirect:
          contains:
            hostRedirect:
              description:
              - The host that will be used in the redirect response instead of the
                one that was supplied in the request. The value must be between 1
                and 255 characters.
              returned: success
              type: str
            httpsRedirect:
              description:
              - If set to true, the URL scheme in the redirected request is set to
                https.
              - If set to false, the URL scheme of the redirected request will remain
                the same as that of the request. This must only be set for UrlMaps
                used in TargetHttpProxys. Setting this true for TargetHttpsProxy is
                not permitted. The default is set to false.
              returned: success
              type: bool
            pathRedirect:
              description:
              - The path that will be used in the redirect response instead of the
                one that was supplied in the request. pathRedirect cannot be supplied
                together with prefixRedirect. Supply one alone or neither. If neither
                is supplied, the path of the original request will be used for the
                redirect.
              - The value must be between 1 and 1024 characters.
              returned: success
              type: str
            prefixRedirect:
              description:
              - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
                retaining the remaining portion of the URL before redirecting the
                request. prefixRedirect cannot be supplied together with pathRedirect.
                Supply one alone or neither. If neither is supplied, the path of the
                original request will be used for the redirect. The value must be
                between 1 and 1024 characters.
              returned: success
              type: str
            redirectResponseCode:
              description:
              - 'The HTTP Status code to use for this RedirectAction. Supported values
                are: * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
                to 301.'
              - '* FOUND, which corresponds to 302.'
              - '* SEE_OTHER which corresponds to 303.'
              - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the
                request method will be retained.'
              - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the
                request method will be retained.'
              returned: success
              type: str
            stripQuery:
              description:
              - If set to true, any accompanying query portion of the original URL
                is removed prior to redirecting the request. If set to false, the
                query portion of the original URL is retained.
              returned: success
              type: bool
          description:
          - When a path pattern is matched, the request is redirected to a URL specified
            by urlRedirect. If urlRedirect is specified, service or routeAction must
            not be set.
          returned: success
          type: complex
      description:
      - 'The list of path rules. Use this list instead of routeRules when routing
        based on simple path matching is all that''s required. The order by which
        path rules are specified does not matter. Matches are always done on the longest-path-first
        basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*
        irrespective of the order in which those paths appear in this list. Within
        a given pathMatcher, only one of pathRules or routeRules must be set.'
      returned: success
      type: complex
    routeRules:
      contains:
        headerAction:
          contains:
            requestHeadersToAdd:
              contains:
                headerName:
                  description:
                  - The name of the header.
                  returned: success
                  type: str
                headerValue:
                  description:
                  - The value of the header to add.
                  returned: success
                  type: str
                replace:
                  description:
                  - If false, headerValue is appended to any values that already exist
                    for the header. If true, headerValue is set for the header, discarding
                    any values that were set for that header.
                  returned: success
                  type: bool
              description:
              - Headers to add to a matching request prior to forwarding the request
                to the backendService.
              returned: success
              type: complex
            requestHeadersToRemove:
              description:
              - A list of header names for headers that need to be removed from the
                request prior to forwarding the request to the backendService.
              returned: success
              type: list
            responseHeadersToAdd:
              contains:
                headerName:
                  description:
                  - The name of the header.
                  returned: success
                  type: str
                headerValue:
                  description:
                  - The value of the header to add.
                  returned: success
                  type: str
                replace:
                  description:
                  - If false, headerValue is appended to any values that already exist
                    for the header. If true, headerValue is set for the header, discarding
                    any values that were set for that header.
                  returned: success
                  type: bool
              description:
              - Headers to add the response prior to sending the response back to
                the client.
              returned: success
              type: complex
            responseHeadersToRemove:
              description:
              - A list of header names for headers that need to be removed from the
                response prior to sending the response back to the client.
              returned: success
              type: list
          description:
          - Specifies changes to request and response headers that need to take effect
            for the selected backendService. The headerAction specified here are applied
            before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
            outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
            .
          returned: success
          type: complex
        matchRules:
          contains:
            fullPathMatch:
              description:
              - For satisfying the matchRule condition, the path of the request must
                exactly match the value specified in fullPathMatch after removing
                any query parameters and anchor that may be part of the original URL.
                FullPathMatch must be between 1 and 1024 characters. Only one of prefixMatch,
                fullPathMatch or regexMatch must be specified.
              returned: success
              type: str
            headerMatches:
              contains:
                exactMatch:
                  description:
                  - The value should exactly match contents of exactMatch. Only one
                    of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch
                    or rangeMatch must be set.
                  returned: success
                  type: str
                headerName:
                  description:
                  - The name of the HTTP header to match. For matching against the
                    HTTP request's authority, use a headerMatch with the header name
                    ":authority". For matching a request's method, use the headerName
                    ":method".
                  returned: success
                  type: str
                invertMatch:
                  description:
                  - If set to false, the headerMatch is considered a match if the
                    match criteria above are met. If set to true, the headerMatch
                    is considered a match if the match criteria above are NOT met.
                    Defaults to false.
                  returned: success
                  type: bool
                prefixMatch:
                  description:
                  - The value of the header must start with the contents of prefixMatch.
                    Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
                    presentMatch or rangeMatch must be set.
                  returned: success
                  type: str
                presentMatch:
                  description:
                  - A header with the contents of headerName must exist. The match
                    takes place whether or not the request's header has a value or
                    not. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
                    presentMatch or rangeMatch must be set.
                  returned: success
                  type: bool
                rangeMatch:
                  contains:
                    rangeEnd:
                      description:
                      - The end of the range (exclusive).
                      returned: success
                      type: int
                    rangeStart:
                      description:
                      - The start of the range (inclusive).
                      returned: success
                      type: int
                  description:
                  - The header value must be an integer and its value must be in the
                    range specified in rangeMatch. If the header does not contain
                    an integer, number or is empty, the match fails. For example for
                    a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will
                    not match. - -3someString will not match. Only one of exactMatch,
                    prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch
                    must be set.
                  returned: success
                  type: complex
                regexMatch:
                  description:
                  - 'The value of the header must match the regular expression specified
                    in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript
                    For matching against a port specified in the HTTP request, use
                    a headerMatch with headerName set to PORT and a regular expression
                    that satisfies the RFC2616 Host header''s port specifier.'
                  - Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
                    presentMatch or rangeMatch must be set.
                  returned: success
                  type: str
                suffixMatch:
                  description:
                  - The value of the header must end with the contents of suffixMatch.
                    Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
                    presentMatch or rangeMatch must be set.
                  returned: success
                  type: str
              description:
              - Specifies a list of header match criteria, all of which must match
                corresponding headers in the request.
              returned: success
              type: complex
            ignoreCase:
              description:
              - Specifies that prefixMatch and fullPathMatch matches are case sensitive.
              - Defaults to false.
              returned: success
              type: bool
            metadataFilters:
              contains:
                filterLabels:
                  contains:
                    name:
                      description:
                      - Name of metadata label. The name can have a maximum length
                        of 1024 characters and must be at least 1 character long.
                      returned: success
                      type: str
                    value:
                      description:
                      - The value of the label must match the specified value. value
                        can have a maximum length of 1024 characters.
                      returned: success
                      type: str
                  description:
                  - The list of label value pairs that must match labels in the provided
                    metadata based on filterMatchCriteria This list must not be empty
                    and can have at the most 64 entries.
                  returned: success
                  type: complex
                filterMatchCriteria:
                  description:
                  - 'Specifies how individual filterLabel matches within the list
                    of filterLabels contribute towards the overall metadataFilter
                    match. Supported values are: - MATCH_ANY: At least one of the
                    filterLabels must have a matching label in the provided metadata.'
                  - '- MATCH_ALL: All filterLabels must have matching labels in the
                    provided metadata.'
                  returned: success
                  type: str
              description:
              - Opaque filter criteria used by Loadbalancer to restrict routing configuration
                to a limited set xDS compliant clients. In their xDS requests to Loadbalancer,
                xDS clients present node metadata. If a match takes place, the relevant
                routing configuration is made available to those proxies. For each
                metadataFilter in this list, if its filterMatchCriteria is set to
                MATCH_ANY, at least one of the filterLabels must match the corresponding
                label provided in the metadata. If its filterMatchCriteria is set
                to MATCH_ALL, then all of its filterLabels must match with corresponding
                labels in the provided metadata. metadataFilters specified here can
                be overrides those specified in ForwardingRule that refers to this
                UrlMap. metadataFilters only applies to Loadbalancers that have their
                loadBalancingScheme set to INTERNAL_SELF_MANAGED.
              returned: success
              type: complex
            prefixMatch:
              description:
              - For satisfying the matchRule condition, the request's path must begin
                with the specified prefixMatch. prefixMatch must begin with a /. The
                value must be between 1 and 1024 characters. Only one of prefixMatch,
                fullPathMatch or regexMatch must be specified.
              returned: success
              type: str
            queryParameterMatches:
              contains:
                exactMatch:
                  description:
                  - The queryParameterMatch matches if the value of the parameter
                    exactly matches the contents of exactMatch. Only one of presentMatch,
                    exactMatch and regexMatch must be set.
                  returned: success
                  type: str
                name:
                  description:
                  - The name of the query parameter to match. The query parameter
                    must exist in the request, in the absence of which the request
                    match fails.
                  returned: success
                  type: str
                presentMatch:
                  description:
                  - Specifies that the queryParameterMatch matches if the request
                    contains the query parameter, irrespective of whether the parameter
                    has a value or not. Only one of presentMatch, exactMatch and regexMatch
                    must be set.
                  returned: success
                  type: bool
                regexMatch:
                  description:
                  - The queryParameterMatch matches if the value of the parameter
                    matches the regular expression specified by regexMatch. For the
                    regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
                    Only one of presentMatch, exactMatch and regexMatch must be set.
                  returned: success
                  type: str
              description:
              - Specifies a list of query parameter match criteria, all of which must
                match corresponding query parameters in the request.
              returned: success
              type: complex
            regexMatch:
              description:
              - For satisfying the matchRule condition, the path of the request must
                satisfy the regular expression specified in regexMatch after removing
                any query parameters and anchor supplied with the original URL. For
                regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
              returned: success
              type: str
          description:
          - The rules for determining a match.
          returned: success
          type: complex
        priority:
          description:
          - For routeRules within a given pathMatcher, priority determines the order
            in which load balancer will interpret routeRules. RouteRules are evaluated
            in order of priority, from the lowest to highest number. The priority
            of a rule decreases as its number increases (1, 2, 3, N+1). The first
            rule that matches the request is applied.
          - You cannot configure two or more routeRules with the same priority.
          - Priority for each rule must be set to a number between 0 and 2147483647
            inclusive.
          - Priority numbers can have gaps, which enable you to add or remove rules
            in the future without affecting the rest of the rules. For example, 1,
            2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you
            could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future
            without any impact on existing rules.
          returned: success
          type: int
        routeAction:
          contains:
            corsPolicy:
              contains:
                allowCredentials:
                  description:
                  - In response to a preflight request, setting this to true indicates
                    that the actual request can include user credentials. This translates
                    to the Access- Control-Allow-Credentials header. Defaults to false.
                  returned: success
                  type: bool
                allowHeaders:
                  description:
                  - Specifies the content for the Access-Control-Allow-Headers header.
                  returned: success
                  type: list
                allowMethods:
                  description:
                  - Specifies the content for the Access-Control-Allow-Methods header.
                  returned: success
                  type: list
                allowOriginRegexes:
                  description:
                  - Specifies the regular expression patterns that match allowed origins.
                    For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
                    An origin is allowed if it matches either allow_origins or allow_origin_regex.
                  returned: success
                  type: list
                allowOrigins:
                  description:
                  - Specifies the list of origins that will be allowed to do CORS
                    requests. An origin is allowed if it matches either allow_origins
                    or allow_origin_regex.
                  returned: success
                  type: list
                disabled:
                  description:
                  - If true, specifies the CORS policy is disabled.
                  - which indicates that the CORS policy is in effect. Defaults to
                    false.
                  returned: success
                  type: bool
                exposeHeaders:
                  description:
                  - Specifies the content for the Access-Control-Expose-Headers header.
                  returned: success
                  type: list
                maxAge:
                  description:
                  - Specifies how long the results of a preflight request can be cached.
                    This translates to the content for the Access-Control-Max-Age
                    header.
                  returned: success
                  type: int
              description:
              - The specification for allowing client side cross-origin requests.
                Please see W3C Recommendation for Cross Origin Resource Sharing .
              returned: success
              type: complex
            faultInjectionPolicy:
              contains:
                abort:
                  contains:
                    httpStatus:
                      description:
                      - The HTTP status code used to abort the request. The value
                        must be between 200 and 599 inclusive.
                      returned: success
                      type: int
                    percentage:
                      description:
                      - The percentage of traffic (connections/operations/requests)
                        which will be aborted as part of fault injection. The value
                        must be between 0.0 and 100.0 inclusive.
                      returned: success
                      type: str
                  description:
                  - The specification for how client requests are aborted as part
                    of fault injection.
                  returned: success
                  type: complex
                delay:
                  contains:
                    fixedDelay:
                      contains:
                        nanos:
                          description:
                          - Span of time that's a fraction of a second at nanosecond
                            resolution. Durations less than one second are represented
                            with a 0 `seconds` field and a positive `nanos` field.
                            Must be from 0 to 999,999,999 inclusive.
                          returned: success
                          type: int
                        seconds:
                          description:
                          - Span of time at a resolution of a second. Must be from
                            0 to 315,576,000,000 inclusive.
                          returned: success
                          type: str
                      description:
                      - Specifies the value of the fixed delay interval.
                      returned: success
                      type: complex
                    percentage:
                      description:
                      - The percentage of traffic (connections/operations/requests)
                        on which delay will be introduced as part of fault injection.
                        The value must be between 0.0 and 100.0 inclusive.
                      returned: success
                      type: str
                  description:
                  - The specification for how client requests are delayed as part
                    of fault injection, before being sent to a backend service.
                  returned: success
                  type: complex
              description:
              - The specification for fault injection introduced into traffic to test
                the resiliency of clients to backend service failure. As part of fault
                injection, when clients send requests to a backend service, delays
                can be introduced by Loadbalancer on a percentage of requests before
                sending those request to the backend service. Similarly requests from
                clients can be aborted by the Loadbalancer for a percentage of requests.
                timeout and retry_policy will be ignored by clients that are configured
                with a fault_injection_policy.
              returned: success
              type: complex
            requestMirrorPolicy:
              contains:
                backendService:
                  description:
                  - The BackendService resource being mirrored to.
                  returned: success
                  type: dict
              description:
              - Specifies the policy on how requests intended for the route's backends
                are shadowed to a separate mirrored backend service. Loadbalancer
                does not wait for responses from the shadow service. Prior to sending
                traffic to the shadow service, the host / authority header is suffixed
                with -shadow.
              returned: success
              type: complex
            retryPolicy:
              contains:
                numRetries:
                  description:
                  - Specifies the allowed number retries. This number must be > 0.
                  returned: success
                  type: int
                perTryTimeout:
                  contains:
                    nanos:
                      description:
                      - Span of time that's a fraction of a second at nanosecond resolution.
                        Durations less than one second are represented with a 0 `seconds`
                        field and a positive `nanos` field. Must be from 0 to 999,999,999
                        inclusive.
                      returned: success
                      type: int
                    seconds:
                      description:
                      - Span of time at a resolution of a second. Must be from 0 to
                        315,576,000,000 inclusive.
                      returned: success
                      type: str
                  description:
                  - Specifies a non-zero timeout per retry attempt.
                  - If not specified, will use the timeout set in HttpRouteAction.
                    If timeout in HttpRouteAction is not set, will use the largest
                    timeout among all backend services associated with the route.
                  returned: success
                  type: complex
                retryConditions:
                  description:
                  - 'Specfies one or more conditions when this retry rule applies.
                    Valid values are: * 5xx: Loadbalancer will attempt a retry if
                    the backend service responds with any 5xx response code, or if
                    the backend service does not respond at all, example: disconnects,
                    reset, read timeout, connection failure, and refused streams.'
                  - '* gateway-error: Similar to 5xx, but only applies to response
                    codes 502, 503 or 504.'
                  - '* connect-failure: Loadbalancer will retry on failures connecting
                    to backend services, for example due to connection timeouts.'
                  - '* retriable-4xx: Loadbalancer will retry for retriable 4xx response
                    codes.'
                  - Currently the only retriable error supported is 409.
                  - '* refused-stream: Loadbalancer will retry if the backend service
                    resets the stream with a REFUSED_STREAM error code. This reset
                    type indicates that it is safe to retry.'
                  - '* cancelled: Loadbalancer will retry if the gRPC status code
                    in the response header is set to cancelled * deadline-exceeded:
                    Loadbalancer will retry if the gRPC status code in the response
                    header is set to deadline-exceeded * resource-exhausted: Loadbalancer
                    will retry if the gRPC status code in the response header is set
                    to resource-exhausted * unavailable: Loadbalancer will retry if
                    the gRPC status code in the response header is set to unavailable
                    .'
                  returned: success
                  type: list
              description:
              - Specifies the retry policy associated with this route.
              returned: success
              type: complex
            timeout:
              contains:
                nanos:
                  description:
                  - Span of time that's a fraction of a second at nanosecond resolution.
                    Durations less than one second are represented with a 0 `seconds`
                    field and a positive `nanos` field. Must be from 0 to 999,999,999
                    inclusive.
                  returned: success
                  type: int
                seconds:
                  description:
                  - Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
                    inclusive.
                  returned: success
                  type: str
              description:
              - Specifies the timeout for the selected route. Timeout is computed
                from the time the request is has been fully processed (i.e. end-of-stream)
                up until the response has been completely processed. Timeout includes
                all retries. If not specified, the default value is 15 seconds.
              returned: success
              type: complex
            urlRewrite:
              contains:
                hostRewrite:
                  description:
                  - Prior to forwarding the request to the selected service, the request's
                    host header is replaced with contents of hostRewrite. The value
                    must be between 1 and 255 characters.
                  returned: success
                  type: str
                pathPrefixRewrite:
                  description:
                  - Prior to forwarding the request to the selected backend service,
                    the matching portion of the request's path is replaced by pathPrefixRewrite.
                    The value must be between 1 and 1024 characters.
                  returned: success
                  type: str
              description:
              - The spec to modify the URL of the request, prior to forwarding the
                request to the matched service .
              returned: success
              type: complex
            weightedBackendServices:
              contains:
                backendService:
                  description:
                  - The default BackendService resource. Before forwarding the request
                    to backendService, the loadbalancer applies any relevant headerActions
                    specified as part of this backendServiceWeight.
                  returned: success
                  type: dict
                headerAction:
                  contains:
                    requestHeadersToAdd:
                      contains:
                        headerName:
                          description:
                          - The name of the header.
                          returned: success
                          type: str
                        headerValue:
                          description:
                          - The value of the header to add.
                          returned: success
                          type: str
                        replace:
                          description:
                          - If false, headerValue is appended to any values that already
                            exist for the header. If true, headerValue is set for
                            the header, discarding any values that were set for that
                            header.
                          returned: success
                          type: bool
                      description:
                      - Headers to add to a matching request prior to forwarding the
                        request to the backendService.
                      returned: success
                      type: complex
                    requestHeadersToRemove:
                      description:
                      - A list of header names for headers that need to be removed
                        from the request prior to forwarding the request to the backendService.
                      returned: success
                      type: list
                    responseHeadersToAdd:
                      contains:
                        headerName:
                          description:
                          - The name of the header.
                          returned: success
                          type: str
                        headerValue:
                          description:
                          - The value of the header to add.
                          returned: success
                          type: str
                        replace:
                          description:
                          - If false, headerValue is appended to any values that already
                            exist for the header. If true, headerValue is set for
                            the header, discarding any values that were set for that
                            header.
                          returned: success
                          type: bool
                      description:
                      - Headers to add the response prior to sending the response
                        back to the client.
                      returned: success
                      type: complex
                    responseHeadersToRemove:
                      description:
                      - A list of header names for headers that need to be removed
                        from the response prior to sending the response back to the
                        client.
                      returned: success
                      type: list
                  description:
                  - Specifies changes to request and response headers that need to
                    take effect for the selected backendService. headerAction specified
                    here take effect before headerAction in the enclosing HttpRouteRule,
                    PathMatcher and UrlMap.
                  returned: success
                  type: complex
                weight:
                  description:
                  - Specifies the fraction of traffic sent to backendService, computed
                    as weight / (sum of all weightedBackendService weights in routeAction)
                    . The selection of a backend service is determined only for new
                    traffic. Once a user's request has been directed to a backendService,
                    subsequent requests will be sent to the same backendService as
                    determined by the BackendService's session affinity policy.
                  - The value must be between 0 and 1000 .
                  returned: success
                  type: int
              description:
              - A list of weighted backend services to send traffic to when a route
                match occurs. The weights determine the fraction of traffic that flows
                to their corresponding backend service. If all traffic needs to go
                to a single backend service, there must be one weightedBackendService
                with weight set to a non 0 number. Once a backendService is identified
                and before forwarding the request to the backend service, advanced
                routing actions like Url rewrites and header transformations are applied
                depending on additional settings specified in this HttpRouteAction.
              returned: success
              type: complex
          description:
          - In response to a matching matchRule, the load balancer performs advanced
            routing actions like URL rewrites, header transformations, etc. prior
            to forwarding the request to the selected backend. If routeAction specifies
            any weightedBackendServices, service must not be set. Conversely if service
            is set, routeAction cannot contain any weightedBackendServices. Only one
            of routeAction or urlRedirect must be set.
          returned: success
          type: complex
        service:
          description:
          - The backend service resource to which traffic is directed if this rule
            is matched. If routeAction is additionally specified, advanced routing
            actions like URL Rewrites, etc. take effect prior to sending the request
            to the backend. However, if service is specified, routeAction cannot contain
            any weightedBackendService s. Conversely, if routeAction specifies any
            weightedBackendServices, service must not be specified. Only one of urlRedirect,
            service or routeAction.weightedBackendService must be set.
          returned: success
          type: dict
        urlRedirect:
          contains:
            hostRedirect:
              description:
              - The host that will be used in the redirect response instead of the
                one that was supplied in the request. The value must be between 1
                and 255 characters.
              returned: success
              type: str
            httpsRedirect:
              description:
              - If set to true, the URL scheme in the redirected request is set to
                https. If set to false, the URL scheme of the redirected request will
                remain the same as that of the request. This must only be set for
                UrlMaps used in TargetHttpProxys.
              - Setting this true for TargetHttpsProxy is not permitted. Defaults
                to false.
              returned: success
              type: bool
            pathRedirect:
              description:
              - The path that will be used in the redirect response instead of the
                one that was supplied in the request. Only one of pathRedirect or
                prefixRedirect must be specified. The value must be between 1 and
                1024 characters.
              returned: success
              type: str
            prefixRedirect:
              description:
              - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
                retaining the remaining portion of the URL before redirecting the
                request.
              returned: success
              type: str
            redirectResponseCode:
              description:
              - 'The HTTP Status code to use for this RedirectAction. Supported values
                are: * MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds
                to 301.'
              - '* FOUND, which corresponds to 302.'
              - '* SEE_OTHER which corresponds to 303.'
              - '* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the
                request method will be retained.'
              - '* PERMANENT_REDIRECT, which corresponds to 308. In this case, the
                request method will be retained.'
              returned: success
              type: str
            stripQuery:
              description:
              - If set to true, any accompanying query portion of the original URL
                is removed prior to redirecting the request. If set to false, the
                query portion of the original URL is retained. Defaults to false.
              returned: success
              type: bool
          description:
          - When this rule is matched, the request is redirected to a URL specified
            by urlRedirect. If urlRedirect is specified, service or routeAction must
            not be set.
          returned: success
          type: complex
      description:
      - 'The list of ordered HTTP route rules. Use this list instead of pathRules
        when advanced route matching and routing actions are desired. The order of
        specifying routeRules matters: the first rule that matches will cause its
        specified routing action to take effect. Within a given pathMatcher, only
        one of pathRules or routeRules must be set. routeRules are not supported in
        UrlMaps intended for External load balancers.'
      returned: success
      type: complex
  description:
  - The list of named PathMatchers to use against the URL.
  returned: success
  type: complex
tests:
  contains:
    description:
      description:
      - Description of this test case.
      returned: success
      type: str
    host:
      description:
      - Host portion of the URL.
      returned: success
      type: str
    path:
      description:
      - Path portion of the URL.
      returned: success
      type: str
    service:
      description:
      - Expected BackendService resource the given URL should be mapped to.
      returned: success
      type: dict
  description:
  - The list of expected URL mapping tests. Request to update this UrlMap will succeed
    only if all of the test cases pass. You can specify a maximum of 100 tests per
    UrlMap.
  returned: success
  type: complex