delowan.googlecloud.gcp_compute_region_url_map (1.0.2) — module

Creates a GCP RegionUrlMap

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 health check
  google.cloud.gcp_compute_health_check:
    name: "{{ resource_name }}"
    type: HTTP
    http_health_check:
      port: 80
    check_interval_sec: 1
    timeout_sec: 1
    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 region backend service
  google.cloud.gcp_compute_region_backend_service:
    name: "{{ resource_name }}"
    region: us-central1
    health_checks:
    - "{{ healthcheck.selfLink }}"
    protocol: HTTP
    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 region URL map
  google.cloud.gcp_compute_region_url_map:
    name: test_object
    region: us-central1
    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 mappings. Requests to update this UrlMap will succeed only
      if all of the test cases pass.
    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:
        - A reference to expected RegionBackendService resource the given URL should be
          mapped to.
        - 'This field represents a link to a RegionBackendService 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_region_backend_service task and then set
          this service field to "{{ name-of-resource }}"'
        required: true
        type: dict
    type: list

region:
    description:
    - A reference to the region where the url map resides.
    required: true
    type: str

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 HostRule. 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

path_matchers:
    description:
    - The list of named PathMatchers to use against the URL.
    elements: dict
    required: false
    suboptions:
      default_service:
        description:
        - A reference to a RegionBackendService resource. This will be used if none of
          the pathRules defined by this PathMatcher is matched by the URL's path portion.
        - 'This field represents a link to a RegionBackendService 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_region_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.
        required: false
        type: str
      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 RegionBackendService resource being mirrored to.
                    - 'This field represents a link to a RegionBackendService 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_region_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 RegionBackendService 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 RegionBackendService 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_region_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 region 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 RegionBackendService 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_region_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 RegionBackendService resource being mirrored to.
                    - 'This field represents a link to a RegionBackendService 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_region_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.
                    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 RegionBackendService 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 RegionBackendService 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_region_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 region 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 RegionBackendService 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_region_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.
                  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 value is 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 RegionBackendService 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_region_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

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
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.
      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. This field is used internally during updates of
    this resource.
  returned: success
  type: str
hostRules:
  contains:
    description:
      description:
      - An optional description of this HostRule. 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:
    defaultService:
      description:
      - A reference to a RegionBackendService resource. This will be used if none
        of the pathRules defined by this PathMatcher is matched by the URL's path
        portion.
      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.
      returned: success
      type: str
    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 RegionBackendService 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 RegionBackendService 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 region 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 RegionBackendService 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 RegionBackendService 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 region 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. The default value is
                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
region:
  description:
  - A reference to the region where the url map resides.
  returned: success
  type: str
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:
      - A reference to expected RegionBackendService resource the given URL should
        be mapped to.
      returned: success
      type: dict
  description:
  - The list of expected URL mappings. Requests to update this UrlMap will succeed
    only if all of the test cases pass.
  returned: success
  type: complex