<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="trafficdirector_v2.html">Traffic Director API</a> . <a href="trafficdirector_v2.discovery.html">discovery</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#client_status">client_status(body=None, x__xgafv=None)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="client_status">client_status(body=None, x__xgafv=None)</code>
  <pre>

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request for client status of clients identified by a list of NodeMatchers.
  &quot;nodeMatchers&quot;: [ # Management server can use these match criteria to identify clients. The match follows OR semantics.
    { # Specifies the way to match a Node. The match follows AND semantics.
      &quot;nodeId&quot;: { # Specifies the way to match a string. [#next-free-field: 7] # Specifies match criteria on the node id.
        &quot;exact&quot;: &quot;A String&quot;, # The input string must match exactly the string specified here. Examples: * *abc* only matches the value *abc*.
        &quot;ignoreCase&quot;: True or False, # If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no effect for the safe_regex match. For example, the matcher *data* will match both input string *Data* and *data* if set to true.
        &quot;prefix&quot;: &quot;A String&quot;, # The input string must have the prefix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *abc.xyz*
        &quot;regex&quot;: &quot;A String&quot;, # The input string must match the regular expression specified here. The regex grammar is defined `here `_. Examples: * The regex ``\d{3}`` matches the value *123* * The regex ``\d{3}`` does not match the value *1234* * The regex ``\d{3}`` does not match the value *123.456* .. attention:: This field has been deprecated in favor of `safe_regex` as it is not safe for use with untrusted input in all cases.
        &quot;safeRegex&quot;: { # A regex matcher designed for safety when used with untrusted input. # The input string must match the regular expression specified here.
          &quot;googleRe2&quot;: { # Google&#x27;s `RE2 `_ regex engine. The regex string must adhere to the documented `syntax `_. The engine is designed to complete execution in linear time as well as limit the amount of memory used. Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` and `re2.max_program_size.warn_level` can be set to integers as the maximum program size or complexity that a compiled regex can have before an exception is thrown or a warning is logged, respectively. `re2.max_program_size.error_level` defaults to 100, and `re2.max_program_size.warn_level` has no default if unset (will not check/log a warning). Envoy emits two stats for tracking the program size of regexes: the histogram `re2.program_size`, which records the program size, and the counter `re2.exceeded_warn_level`, which is incremented each time the program size exceeds the warn level threshold. # Google&#x27;s RE2 regex engine.
            &quot;maxProgramSize&quot;: 42, # This field controls the RE2 &quot;program size&quot; which is a rough estimate of how complex a compiled regex is to evaluate. A regex that has a program size greater than the configured value will fail to compile. In this case, the configured max program size can be increased or the regex can be simplified. If not specified, the default is 100. This field is deprecated; regexp validation should be performed on the management server instead of being done by each individual client.
          },
          &quot;regex&quot;: &quot;A String&quot;, # The regex match string. The string must be supported by the configured engine.
        },
        &quot;suffix&quot;: &quot;A String&quot;, # The input string must have the suffix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *xyz.abc*
      },
      &quot;nodeMetadatas&quot;: [ # Specifies match criteria on the node metadata.
        { # StructMatcher provides a general interface to check if a given value is matched in google.protobuf.Struct. It uses `path` to retrieve the value from the struct and then check if it&#x27;s matched to the specified value. For example, for the following Struct: .. code-block:: yaml fields: a: struct_value: fields: b: struct_value: fields: c: string_value: pro t: list_value: values: - string_value: m - string_value: n The following MetadataMatcher is matched as the path [a, b, c] will retrieve a string value &quot;pro&quot; from the Metadata which is matched to the specified prefix match. .. code-block:: yaml path: - key: a - key: b - key: c value: string_match: prefix: pr The following StructMatcher is matched as the code will match one of the string values in the list at the path [a, t]. .. code-block:: yaml path: - key: a - key: t value: list_match: one_of: string_match: exact: m An example use of StructMatcher is to match metadata in envoy.v*.core.Node.
          &quot;path&quot;: [ # The path to retrieve the Value from the Struct.
            { # Specifies the segment in a path to retrieve value from Struct.
              &quot;key&quot;: &quot;A String&quot;, # If specified, use the key to retrieve the value in a Struct.
            },
          ],
          &quot;value&quot;: { # Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported. StructValue is not supported and is always not matched. [#next-free-field: 7] # The StructMatcher is matched if the value retrieved by path is matched to this value.
            &quot;boolMatch&quot;: True or False, # If specified, a match occurs if and only if the target value is a bool value and is equal to this field.
            &quot;doubleMatch&quot;: { # Specifies the way to match a double value. # If specified, a match occurs if and only if the target value is a double value and is matched to this field.
              &quot;exact&quot;: 3.14, # If specified, the input double value must be equal to the value specified here.
              &quot;range&quot;: { # Specifies the double start and end of the range using half-open interval semantics [start, end). # If specified, the input double value must be in the range specified here. Note: The range is using half-open interval semantics [start, end).
                &quot;end&quot;: 3.14, # end of the range (exclusive)
                &quot;start&quot;: 3.14, # start of the range (inclusive)
              },
            },
            &quot;listMatch&quot;: { # Specifies the way to match a list value. # If specified, a match occurs if and only if the target value is a list value and is matched to this field.
              &quot;oneOf&quot;: # Object with schema name: ValueMatcher # If specified, at least one of the values in the list must match the value specified.
            },
            &quot;nullMatch&quot;: { # NullMatch is an empty message to specify a null value. # If specified, a match occurs if and only if the target value is a NullValue.
            },
            &quot;presentMatch&quot;: True or False, # If specified, value match will be performed based on whether the path is referring to a valid primitive value in the metadata. If the path is referring to a non-primitive value, the result is always not matched.
            &quot;stringMatch&quot;: { # Specifies the way to match a string. [#next-free-field: 7] # If specified, a match occurs if and only if the target value is a string value and is matched to this field.
              &quot;exact&quot;: &quot;A String&quot;, # The input string must match exactly the string specified here. Examples: * *abc* only matches the value *abc*.
              &quot;ignoreCase&quot;: True or False, # If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no effect for the safe_regex match. For example, the matcher *data* will match both input string *Data* and *data* if set to true.
              &quot;prefix&quot;: &quot;A String&quot;, # The input string must have the prefix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *abc.xyz*
              &quot;regex&quot;: &quot;A String&quot;, # The input string must match the regular expression specified here. The regex grammar is defined `here `_. Examples: * The regex ``\d{3}`` matches the value *123* * The regex ``\d{3}`` does not match the value *1234* * The regex ``\d{3}`` does not match the value *123.456* .. attention:: This field has been deprecated in favor of `safe_regex` as it is not safe for use with untrusted input in all cases.
              &quot;safeRegex&quot;: { # A regex matcher designed for safety when used with untrusted input. # The input string must match the regular expression specified here.
                &quot;googleRe2&quot;: { # Google&#x27;s `RE2 `_ regex engine. The regex string must adhere to the documented `syntax `_. The engine is designed to complete execution in linear time as well as limit the amount of memory used. Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` and `re2.max_program_size.warn_level` can be set to integers as the maximum program size or complexity that a compiled regex can have before an exception is thrown or a warning is logged, respectively. `re2.max_program_size.error_level` defaults to 100, and `re2.max_program_size.warn_level` has no default if unset (will not check/log a warning). Envoy emits two stats for tracking the program size of regexes: the histogram `re2.program_size`, which records the program size, and the counter `re2.exceeded_warn_level`, which is incremented each time the program size exceeds the warn level threshold. # Google&#x27;s RE2 regex engine.
                  &quot;maxProgramSize&quot;: 42, # This field controls the RE2 &quot;program size&quot; which is a rough estimate of how complex a compiled regex is to evaluate. A regex that has a program size greater than the configured value will fail to compile. In this case, the configured max program size can be increased or the regex can be simplified. If not specified, the default is 100. This field is deprecated; regexp validation should be performed on the management server instead of being done by each individual client.
                },
                &quot;regex&quot;: &quot;A String&quot;, # The regex match string. The string must be supported by the configured engine.
              },
              &quot;suffix&quot;: &quot;A String&quot;, # The input string must have the suffix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *xyz.abc*
            },
          },
        },
      ],
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;config&quot;: [ # Client configs for the clients specified in the ClientStatusRequest.
    { # All xds configs for a particular client.
      &quot;node&quot;: { # Identifies a specific Envoy instance. The node identifier is presented to the management server, which may use this identifier to distinguish per Envoy configuration for serving. [#next-free-field: 12] # Node for a particular client.
        &quot;buildVersion&quot;: &quot;A String&quot;, # This is motivated by informing a management server during canary which version of Envoy is being tested in a heterogeneous fleet. This will be set by Envoy in management server RPCs. This field is deprecated in favor of the user_agent_name and user_agent_version values.
        &quot;clientFeatures&quot;: [ # Client feature support list. These are well known features described in the Envoy API repository for a given major version of an API. Client features use reverse DNS naming scheme, for example `com.acme.feature`. See :ref:`the list of features ` that xDS client may support.
          &quot;A String&quot;,
        ],
        &quot;cluster&quot;: &quot;A String&quot;, # Defines the local service cluster name where Envoy is running. Though optional, it should be set if any of the following features are used: :ref:`statsd `, :ref:`health check cluster verification `, :ref:`runtime override directory `, :ref:`user agent addition `, :ref:`HTTP global rate limiting `, :ref:`CDS `, and :ref:`HTTP tracing `, either in this message or via :option:`--service-cluster`.
        &quot;extensions&quot;: [ # List of extensions and their versions supported by the node.
          { # Version and identification for an Envoy extension. [#next-free-field: 6]
            &quot;category&quot;: &quot;A String&quot;, # Category of the extension. Extension category names use reverse DNS notation. For instance &quot;envoy.filters.listener&quot; for Envoy&#x27;s built-in listener filters or &quot;com.acme.filters.http&quot; for HTTP filters from acme.com vendor. [#comment:
            &quot;disabled&quot;: True or False, # Indicates that the extension is present but was disabled via dynamic configuration.
            &quot;name&quot;: &quot;A String&quot;, # This is the name of the Envoy filter as specified in the Envoy configuration, e.g. envoy.filters.http.router, com.acme.widget.
            &quot;typeDescriptor&quot;: &quot;A String&quot;, # [#not-implemented-hide:] Type descriptor of extension configuration proto. [#comment:
            &quot;version&quot;: { # BuildVersion combines SemVer version of extension with free-form build information (i.e. &#x27;alpha&#x27;, &#x27;private-build&#x27;) as a set of strings. # The version is a property of the extension and maintained independently of other extensions and the Envoy API. This field is not set when extension did not provide version information.
              &quot;metadata&quot;: { # Free-form build information. Envoy defines several well known keys in the source/common/version/version.h file
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;version&quot;: { # Envoy uses SemVer (https://semver.org/). Major/minor versions indicate expected behaviors and APIs, the patch version field is used only for security fixes and can be generally ignored. # SemVer version of extension.
                &quot;majorNumber&quot;: 42,
                &quot;minorNumber&quot;: 42,
                &quot;patch&quot;: 42,
              },
            },
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # An opaque node identifier for the Envoy node. This also provides the local service node name. It should be set if any of the following features are used: :ref:`statsd `, :ref:`CDS `, and :ref:`HTTP tracing `, either in this message or via :option:`--service-node`.
        &quot;listeningAddresses&quot;: [ # Known listening ports on the node as a generic hint to the management server for filtering :ref:`listeners ` to be returned. For example, if there is a listener bound to port 80, the list can optionally contain the SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint.
          { # Addresses specify either a logical or physical address and port, which are used to tell Envoy where to bind/listen, connect to upstream and find management servers.
            &quot;pipe&quot;: {
              &quot;mode&quot;: 42, # The mode for the Pipe. Not applicable for abstract sockets.
              &quot;path&quot;: &quot;A String&quot;, # Unix Domain Socket path. On Linux, paths starting with &#x27;@&#x27; will use the abstract namespace. The starting &#x27;@&#x27; is replaced by a null byte by Envoy. Paths starting with &#x27;@&#x27; will result in an error in environments other than Linux.
            },
            &quot;socketAddress&quot;: { # [#next-free-field: 7]
              &quot;address&quot;: &quot;A String&quot;, # The address for this socket. :ref:`Listeners ` will bind to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::`` to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: It is possible to distinguish a Listener address via the prefix/suffix matching in :ref:`FilterChainMatch `.] When used within an upstream :ref:`BindConfig `, the address controls the source address of outbound connections. For :ref:`clusters `, the cluster type determines whether the address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized via :ref:`resolver_name `.
              &quot;ipv4Compat&quot;: True or False, # When binding to an IPv6 address above, this enables `IPv4 compatibility `_. Binding to ``::`` will allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into IPv6 space as ``::FFFF:``.
              &quot;namedPort&quot;: &quot;A String&quot;, # This is only valid if :ref:`resolver_name ` is specified below and the named resolver is capable of named port resolution.
              &quot;portValue&quot;: 42,
              &quot;protocol&quot;: &quot;A String&quot;,
              &quot;resolverName&quot;: &quot;A String&quot;, # The name of the custom resolver. This must have been registered with Envoy. If this is empty, a context dependent default applies. If the address is a concrete IP address, no resolution will occur. If address is a hostname this should be set for resolution other than DNS. Specifying a custom resolver with *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.
            },
          },
        ],
        &quot;locality&quot;: { # Identifies location of where either Envoy runs or where upstream hosts run. # Locality specifying where the Envoy instance is running.
          &quot;region&quot;: &quot;A String&quot;, # Region this :ref:`zone ` belongs to.
          &quot;subZone&quot;: &quot;A String&quot;, # When used for locality of upstream hosts, this field further splits zone into smaller chunks of sub-zones so they can be load balanced independently.
          &quot;zone&quot;: &quot;A String&quot;, # Defines the local service zone where Envoy is running. Though optional, it should be set if discovery service routing is used and the discovery service exposes :ref:`zone data `, either in this message or via :option:`--service-zone`. The meaning of zone is context dependent, e.g. `Availability Zone (AZ) `_ on AWS, `Zone `_ on GCP, etc.
        },
        &quot;metadata&quot;: { # Opaque metadata extending the node identifier. Envoy will pass this directly to the management server.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;userAgentBuildVersion&quot;: { # BuildVersion combines SemVer version of extension with free-form build information (i.e. &#x27;alpha&#x27;, &#x27;private-build&#x27;) as a set of strings. # Structured version of the entity requesting config.
          &quot;metadata&quot;: { # Free-form build information. Envoy defines several well known keys in the source/common/version/version.h file
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;version&quot;: { # Envoy uses SemVer (https://semver.org/). Major/minor versions indicate expected behaviors and APIs, the patch version field is used only for security fixes and can be generally ignored. # SemVer version of extension.
            &quot;majorNumber&quot;: 42,
            &quot;minorNumber&quot;: 42,
            &quot;patch&quot;: 42,
          },
        },
        &quot;userAgentName&quot;: &quot;A String&quot;, # Free-form string that identifies the entity requesting config. E.g. &quot;envoy&quot; or &quot;grpc&quot;
        &quot;userAgentVersion&quot;: &quot;A String&quot;, # Free-form string that identifies the version of the entity requesting config. E.g. &quot;1.12.2&quot; or &quot;abcd1234&quot;, or &quot;SpecialEnvoyBuild&quot;
      },
      &quot;xdsConfig&quot;: [
        { # Detailed config (per xDS) with status. [#next-free-field: 6]
          &quot;clusterConfig&quot;: { # Envoy&#x27;s cluster manager fills this message with all currently known clusters. Cluster configuration information can be used to recreate an Envoy configuration by populating all clusters as static clusters or by returning them in a CDS response.
            &quot;dynamicActiveClusters&quot;: [ # The dynamically loaded active clusters. These are clusters that are available to service data plane traffic.
              { # Describes a dynamically loaded cluster via the CDS API.
                &quot;cluster&quot;: { # The cluster config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Cluster was last updated.
                &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the cluster was loaded. In the future, discrete per-cluster versions may be supported by the API.
              },
            ],
            &quot;dynamicWarmingClusters&quot;: [ # The dynamically loaded warming clusters. These are clusters that are currently undergoing warming in preparation to service data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the warming clusters should generally be discarded.
              { # Describes a dynamically loaded cluster via the CDS API.
                &quot;cluster&quot;: { # The cluster config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Cluster was last updated.
                &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the cluster was loaded. In the future, discrete per-cluster versions may be supported by the API.
              },
            ],
            &quot;staticClusters&quot;: [ # The statically loaded cluster configs.
              { # Describes a statically loaded cluster.
                &quot;cluster&quot;: { # The cluster config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Cluster was last updated.
              },
            ],
            &quot;versionInfo&quot;: &quot;A String&quot;, # This is the :ref:`version_info ` in the last processed CDS discovery response. If there are only static bootstrap clusters, this field will be &quot;&quot;.
          },
          &quot;listenerConfig&quot;: { # Envoy&#x27;s listener manager fills this message with all currently known listeners. Listener configuration information can be used to recreate an Envoy configuration by populating all listeners as static listeners or by returning them in a LDS response.
            &quot;dynamicListeners&quot;: [ # State for any warming, active, or draining listeners.
              { # Describes a dynamically loaded listener via the LDS API. [#next-free-field: 6]
                &quot;activeState&quot;: { # The listener state for any active listener by this name. These are listeners that are available to service data plane traffic.
                  &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Listener was last successfully updated.
                  &quot;listener&quot;: { # The listener config.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the listener was loaded. In the future, discrete per-listener versions may be supported by the API.
                },
                &quot;drainingState&quot;: { # The listener state for any draining listener by this name. These are listeners that are currently undergoing draining in preparation to stop servicing data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the draining listeners should generally be discarded.
                  &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Listener was last successfully updated.
                  &quot;listener&quot;: { # The listener config.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the listener was loaded. In the future, discrete per-listener versions may be supported by the API.
                },
                &quot;errorState&quot;: { # Set if the last update failed, cleared after the next successful update.
                  &quot;details&quot;: &quot;A String&quot;, # Details about the last failed update attempt.
                  &quot;failedConfiguration&quot;: { # What the component configuration would have been if the update had succeeded.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;lastUpdateAttempt&quot;: &quot;A String&quot;, # Time of the latest failed update attempt.
                },
                &quot;name&quot;: &quot;A String&quot;, # The name or unique id of this listener, pulled from the DynamicListenerState config.
                &quot;warmingState&quot;: { # The listener state for any warming listener by this name. These are listeners that are currently undergoing warming in preparation to service data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the warming listeners should generally be discarded.
                  &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Listener was last successfully updated.
                  &quot;listener&quot;: { # The listener config.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the listener was loaded. In the future, discrete per-listener versions may be supported by the API.
                },
              },
            ],
            &quot;staticListeners&quot;: [ # The statically loaded listener configs.
              { # Describes a statically loaded listener.
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Listener was last successfully updated.
                &quot;listener&quot;: { # The listener config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              },
            ],
            &quot;versionInfo&quot;: &quot;A String&quot;, # This is the :ref:`version_info ` in the last processed LDS discovery response. If there are only static bootstrap listeners, this field will be &quot;&quot;.
          },
          &quot;routeConfig&quot;: { # Envoy&#x27;s RDS implementation fills this message with all currently loaded routes, as described by their RouteConfiguration objects. Static routes that are either defined in the bootstrap configuration or defined inline while configuring listeners are separated from those configured dynamically via RDS. Route configuration information can be used to recreate an Envoy configuration by populating all routes as static routes or by returning them in RDS responses.
            &quot;dynamicRouteConfigs&quot;: [ # The dynamically loaded route configs.
              {
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Route was last updated.
                &quot;routeConfig&quot;: { # The route config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the route configuration was loaded.
              },
            ],
            &quot;staticRouteConfigs&quot;: [ # The statically loaded route configs.
              {
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the Route was last updated.
                &quot;routeConfig&quot;: { # The route config.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              },
            ],
          },
          &quot;scopedRouteConfig&quot;: { # Envoy&#x27;s scoped RDS implementation fills this message with all currently loaded route configuration scopes (defined via ScopedRouteConfigurationsSet protos). This message lists both the scopes defined inline with the higher order object (i.e., the HttpConnectionManager) and the dynamically obtained scopes via the SRDS API.
            &quot;dynamicScopedRouteConfigs&quot;: [ # The dynamically loaded scoped route configs.
              {
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the scoped route config set was last updated.
                &quot;name&quot;: &quot;A String&quot;, # The name assigned to the scoped route configurations.
                &quot;scopedRouteConfigs&quot;: [ # The scoped route configurations.
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
                &quot;versionInfo&quot;: &quot;A String&quot;, # This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the scoped routes configuration was loaded.
              },
            ],
            &quot;inlineScopedRouteConfigs&quot;: [ # The statically loaded scoped route configs.
              {
                &quot;lastUpdated&quot;: &quot;A String&quot;, # The timestamp when the scoped route config set was last updated.
                &quot;name&quot;: &quot;A String&quot;, # The name assigned to the scoped route configurations.
                &quot;scopedRouteConfigs&quot;: [ # The scoped route configurations.
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
              },
            ],
          },
          &quot;status&quot;: &quot;A String&quot;,
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

</body></html>