1348 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			1348 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			Ruby
		
	
	
	
|  | # Copyright 2015 Google Inc. | ||
|  | # | ||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | # you may not use this file except in compliance with the License. | ||
|  | # You may obtain a copy of the License at | ||
|  | # | ||
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | ||
|  | # | ||
|  | # Unless required by applicable law or agreed to in writing, software | ||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | # See the License for the specific language governing permissions and | ||
|  | # limitations under the License. | ||
|  | 
 | ||
|  | require 'date' | ||
|  | require 'google/apis/core/base_service' | ||
|  | require 'google/apis/core/json_representation' | ||
|  | require 'google/apis/core/hashable' | ||
|  | require 'google/apis/errors' | ||
|  | 
 | ||
|  | module Google | ||
|  |   module Apis | ||
|  |     module TrafficdirectorV2 | ||
|  |        | ||
|  |       # 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. | ||
|  |       class Address | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `pipe` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::Pipe] | ||
|  |         attr_accessor :pipe | ||
|  |        | ||
|  |         # [#next-free-field: 7] | ||
|  |         # Corresponds to the JSON property `socketAddress` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::SocketAddress] | ||
|  |         attr_accessor :socket_address | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @pipe = args[:pipe] if args.key?(:pipe) | ||
|  |           @socket_address = args[:socket_address] if args.key?(:socket_address) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # BuildVersion combines SemVer version of extension with free-form build | ||
|  |       # information (i.e. 'alpha', 'private-build') as a set of strings. | ||
|  |       class BuildVersion | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Free-form build information. Envoy defines several well known keys in the | ||
|  |         # source/common/version/version.h file | ||
|  |         # Corresponds to the JSON property `metadata` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :metadata | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `version` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::SemanticVersion] | ||
|  |         attr_accessor :version | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @metadata = args[:metadata] if args.key?(:metadata) | ||
|  |           @version = args[:version] if args.key?(:version) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # All xds configs for a particular client. | ||
|  |       class ClientConfig | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # 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] | ||
|  |         # Corresponds to the JSON property `node` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::Node] | ||
|  |         attr_accessor :node | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `xdsConfig` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::PerXdsConfig>] | ||
|  |         attr_accessor :xds_config | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @node = args[:node] if args.key?(:node) | ||
|  |           @xds_config = args[:xds_config] if args.key?(:xds_config) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Request for client status of clients identified by a list of NodeMatchers. | ||
|  |       class ClientStatusRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Management server can use these match criteria to identify clients. The match | ||
|  |         # follows OR semantics. | ||
|  |         # Corresponds to the JSON property `nodeMatchers` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::NodeMatcher>] | ||
|  |         attr_accessor :node_matchers | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @node_matchers = args[:node_matchers] if args.key?(:node_matchers) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class ClientStatusResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Client configs for the clients specified in the ClientStatusRequest. | ||
|  |         # Corresponds to the JSON property `config` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::ClientConfig>] | ||
|  |         attr_accessor :config | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @config = args[:config] if args.key?(:config) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Envoy'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. | ||
|  |       class ClustersConfigDump | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The dynamically loaded active clusters. These are clusters that are available | ||
|  |         # to service data plane traffic. | ||
|  |         # Corresponds to the JSON property `dynamicActiveClusters` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::DynamicCluster>] | ||
|  |         attr_accessor :dynamic_active_clusters | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `dynamicWarmingClusters` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::DynamicCluster>] | ||
|  |         attr_accessor :dynamic_warming_clusters | ||
|  |        | ||
|  |         # The statically loaded cluster configs. | ||
|  |         # Corresponds to the JSON property `staticClusters` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::StaticCluster>] | ||
|  |         attr_accessor :static_clusters | ||
|  |        | ||
|  |         # This is the :ref:`version_info ` in the last processed CDS discovery response. | ||
|  |         # If there are only static bootstrap clusters, this field will be "". | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @dynamic_active_clusters = args[:dynamic_active_clusters] if args.key?(:dynamic_active_clusters) | ||
|  |           @dynamic_warming_clusters = args[:dynamic_warming_clusters] if args.key?(:dynamic_warming_clusters) | ||
|  |           @static_clusters = args[:static_clusters] if args.key?(:static_clusters) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the way to match a double value. | ||
|  |       class DoubleMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # If specified, the input double value must be equal to the value specified here. | ||
|  |         # Corresponds to the JSON property `exact` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :exact | ||
|  |        | ||
|  |         # Specifies the double start and end of the range using half-open interval | ||
|  |         # semantics [start, end). | ||
|  |         # Corresponds to the JSON property `range` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::DoubleRange] | ||
|  |         attr_accessor :range | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @exact = args[:exact] if args.key?(:exact) | ||
|  |           @range = args[:range] if args.key?(:range) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the double start and end of the range using half-open interval | ||
|  |       # semantics [start, end). | ||
|  |       class DoubleRange | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # end of the range (exclusive) | ||
|  |         # Corresponds to the JSON property `end` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :end | ||
|  |        | ||
|  |         # start of the range (inclusive) | ||
|  |         # Corresponds to the JSON property `start` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :start | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @end = args[:end] if args.key?(:end) | ||
|  |           @start = args[:start] if args.key?(:start) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Describes a dynamically loaded cluster via the CDS API. | ||
|  |       class DynamicCluster | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The cluster config. | ||
|  |         # Corresponds to the JSON property `cluster` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :cluster | ||
|  |        | ||
|  |         # The timestamp when the Cluster was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @cluster = args[:cluster] if args.key?(:cluster) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Describes a dynamically loaded listener via the LDS API. [#next-free-field: 6] | ||
|  |       class DynamicListener | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The listener state for any active listener by this name. These are listeners | ||
|  |         # that are available to service data plane traffic. | ||
|  |         # Corresponds to the JSON property `activeState` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::DynamicListenerState] | ||
|  |         attr_accessor :active_state | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `drainingState` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::DynamicListenerState] | ||
|  |         attr_accessor :draining_state | ||
|  |        | ||
|  |         # Set if the last update failed, cleared after the next successful update. | ||
|  |         # Corresponds to the JSON property `errorState` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::UpdateFailureState] | ||
|  |         attr_accessor :error_state | ||
|  |        | ||
|  |         # The name or unique id of this listener, pulled from the DynamicListenerState | ||
|  |         # config. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `warmingState` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::DynamicListenerState] | ||
|  |         attr_accessor :warming_state | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @active_state = args[:active_state] if args.key?(:active_state) | ||
|  |           @draining_state = args[:draining_state] if args.key?(:draining_state) | ||
|  |           @error_state = args[:error_state] if args.key?(:error_state) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @warming_state = args[:warming_state] if args.key?(:warming_state) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class DynamicListenerState | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the Listener was last successfully updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The listener config. | ||
|  |         # Corresponds to the JSON property `listener` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :listener | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @listener = args[:listener] if args.key?(:listener) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class DynamicRouteConfig | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the Route was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The route config. | ||
|  |         # Corresponds to the JSON property `routeConfig` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :route_config | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @route_config = args[:route_config] if args.key?(:route_config) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class DynamicScopedRouteConfigs | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the scoped route config set was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The name assigned to the scoped route configurations. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # The scoped route configurations. | ||
|  |         # Corresponds to the JSON property `scopedRouteConfigs` | ||
|  |         # @return [Array<Hash<String,Object>>] | ||
|  |         attr_accessor :scoped_route_configs | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @scoped_route_configs = args[:scoped_route_configs] if args.key?(:scoped_route_configs) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Version and identification for an Envoy extension. [#next-free-field: 6] | ||
|  |       class Extension | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Category of the extension. Extension category names use reverse DNS notation. | ||
|  |         # For instance "envoy.filters.listener" for Envoy's built-in listener filters or | ||
|  |         # "com.acme.filters.http" for HTTP filters from acme.com vendor. [#comment: | ||
|  |         # Corresponds to the JSON property `category` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :category | ||
|  |        | ||
|  |         # Indicates that the extension is present but was disabled via dynamic | ||
|  |         # configuration. | ||
|  |         # Corresponds to the JSON property `disabled` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :disabled | ||
|  |         alias_method :disabled?, :disabled | ||
|  |        | ||
|  |         # This is the name of the Envoy filter as specified in the Envoy configuration, | ||
|  |         # e.g. envoy.filters.http.router, com.acme.widget. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # [#not-implemented-hide:] Type descriptor of extension configuration proto. [# | ||
|  |         # comment: | ||
|  |         # Corresponds to the JSON property `typeDescriptor` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :type_descriptor | ||
|  |        | ||
|  |         # BuildVersion combines SemVer version of extension with free-form build | ||
|  |         # information (i.e. 'alpha', 'private-build') as a set of strings. | ||
|  |         # Corresponds to the JSON property `version` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::BuildVersion] | ||
|  |         attr_accessor :version | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @category = args[:category] if args.key?(:category) | ||
|  |           @disabled = args[:disabled] if args.key?(:disabled) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @type_descriptor = args[:type_descriptor] if args.key?(:type_descriptor) | ||
|  |           @version = args[:version] if args.key?(:version) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Google'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. | ||
|  |       class GoogleRe2 | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # This field controls the RE2 "program size" 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. | ||
|  |         # Corresponds to the JSON property `maxProgramSize` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :max_program_size | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @max_program_size = args[:max_program_size] if args.key?(:max_program_size) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class InlineScopedRouteConfigs | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the scoped route config set was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The name assigned to the scoped route configurations. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # The scoped route configurations. | ||
|  |         # Corresponds to the JSON property `scopedRouteConfigs` | ||
|  |         # @return [Array<Hash<String,Object>>] | ||
|  |         attr_accessor :scoped_route_configs | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @scoped_route_configs = args[:scoped_route_configs] if args.key?(:scoped_route_configs) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the way to match a list value. | ||
|  |       class ListMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # 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] | ||
|  |         # Corresponds to the JSON property `oneOf` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ValueMatcher] | ||
|  |         attr_accessor :one_of | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @one_of = args[:one_of] if args.key?(:one_of) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Envoy'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. | ||
|  |       class ListenersConfigDump | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # State for any warming, active, or draining listeners. | ||
|  |         # Corresponds to the JSON property `dynamicListeners` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::DynamicListener>] | ||
|  |         attr_accessor :dynamic_listeners | ||
|  |        | ||
|  |         # The statically loaded listener configs. | ||
|  |         # Corresponds to the JSON property `staticListeners` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::StaticListener>] | ||
|  |         attr_accessor :static_listeners | ||
|  |        | ||
|  |         # This is the :ref:`version_info ` in the last processed LDS discovery response. | ||
|  |         # If there are only static bootstrap listeners, this field will be "". | ||
|  |         # Corresponds to the JSON property `versionInfo` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :version_info | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @dynamic_listeners = args[:dynamic_listeners] if args.key?(:dynamic_listeners) | ||
|  |           @static_listeners = args[:static_listeners] if args.key?(:static_listeners) | ||
|  |           @version_info = args[:version_info] if args.key?(:version_info) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Identifies location of where either Envoy runs or where upstream hosts run. | ||
|  |       class Locality | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Region this :ref:`zone ` belongs to. | ||
|  |         # Corresponds to the JSON property `region` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :region | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `subZone` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :sub_zone | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `zone` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :zone | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @region = args[:region] if args.key?(:region) | ||
|  |           @sub_zone = args[:sub_zone] if args.key?(:sub_zone) | ||
|  |           @zone = args[:zone] if args.key?(:zone) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # 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] | ||
|  |       class Node | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `buildVersion` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :build_version | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `clientFeatures` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :client_features | ||
|  |        | ||
|  |         # 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`. | ||
|  |         # Corresponds to the JSON property `cluster` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :cluster | ||
|  |        | ||
|  |         # List of extensions and their versions supported by the node. | ||
|  |         # Corresponds to the JSON property `extensions` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::Extension>] | ||
|  |         attr_accessor :extensions | ||
|  |        | ||
|  |         # 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`. | ||
|  |         # Corresponds to the JSON property `id` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :id | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `listeningAddresses` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::Address>] | ||
|  |         attr_accessor :listening_addresses | ||
|  |        | ||
|  |         # Identifies location of where either Envoy runs or where upstream hosts run. | ||
|  |         # Corresponds to the JSON property `locality` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::Locality] | ||
|  |         attr_accessor :locality | ||
|  |        | ||
|  |         # Opaque metadata extending the node identifier. Envoy will pass this directly | ||
|  |         # to the management server. | ||
|  |         # Corresponds to the JSON property `metadata` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :metadata | ||
|  |        | ||
|  |         # BuildVersion combines SemVer version of extension with free-form build | ||
|  |         # information (i.e. 'alpha', 'private-build') as a set of strings. | ||
|  |         # Corresponds to the JSON property `userAgentBuildVersion` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::BuildVersion] | ||
|  |         attr_accessor :user_agent_build_version | ||
|  |        | ||
|  |         # Free-form string that identifies the entity requesting config. E.g. "envoy" or | ||
|  |         # "grpc" | ||
|  |         # Corresponds to the JSON property `userAgentName` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :user_agent_name | ||
|  |        | ||
|  |         # Free-form string that identifies the version of the entity requesting config. | ||
|  |         # E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild" | ||
|  |         # Corresponds to the JSON property `userAgentVersion` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :user_agent_version | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @build_version = args[:build_version] if args.key?(:build_version) | ||
|  |           @client_features = args[:client_features] if args.key?(:client_features) | ||
|  |           @cluster = args[:cluster] if args.key?(:cluster) | ||
|  |           @extensions = args[:extensions] if args.key?(:extensions) | ||
|  |           @id = args[:id] if args.key?(:id) | ||
|  |           @listening_addresses = args[:listening_addresses] if args.key?(:listening_addresses) | ||
|  |           @locality = args[:locality] if args.key?(:locality) | ||
|  |           @metadata = args[:metadata] if args.key?(:metadata) | ||
|  |           @user_agent_build_version = args[:user_agent_build_version] if args.key?(:user_agent_build_version) | ||
|  |           @user_agent_name = args[:user_agent_name] if args.key?(:user_agent_name) | ||
|  |           @user_agent_version = args[:user_agent_version] if args.key?(:user_agent_version) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the way to match a Node. The match follows AND semantics. | ||
|  |       class NodeMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Specifies the way to match a string. [#next-free-field: 7] | ||
|  |         # Corresponds to the JSON property `nodeId` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::StringMatcher] | ||
|  |         attr_accessor :node_id | ||
|  |        | ||
|  |         # Specifies match criteria on the node metadata. | ||
|  |         # Corresponds to the JSON property `nodeMetadatas` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::StructMatcher>] | ||
|  |         attr_accessor :node_metadatas | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @node_id = args[:node_id] if args.key?(:node_id) | ||
|  |           @node_metadatas = args[:node_metadatas] if args.key?(:node_metadatas) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # NullMatch is an empty message to specify a null value. | ||
|  |       class NullMatch | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the segment in a path to retrieve value from Struct. | ||
|  |       class PathSegment | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # If specified, use the key to retrieve the value in a Struct. | ||
|  |         # Corresponds to the JSON property `key` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :key | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @key = args[:key] if args.key?(:key) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Detailed config (per xDS) with status. [#next-free-field: 6] | ||
|  |       class PerXdsConfig | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Envoy'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. | ||
|  |         # Corresponds to the JSON property `clusterConfig` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ClustersConfigDump] | ||
|  |         attr_accessor :cluster_config | ||
|  |        | ||
|  |         # Envoy'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. | ||
|  |         # Corresponds to the JSON property `listenerConfig` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ListenersConfigDump] | ||
|  |         attr_accessor :listener_config | ||
|  |        | ||
|  |         # Envoy'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. | ||
|  |         # Corresponds to the JSON property `routeConfig` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::RoutesConfigDump] | ||
|  |         attr_accessor :route_config | ||
|  |        | ||
|  |         # Envoy'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. | ||
|  |         # Corresponds to the JSON property `scopedRouteConfig` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ScopedRoutesConfigDump] | ||
|  |         attr_accessor :scoped_route_config | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `status` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :status | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @cluster_config = args[:cluster_config] if args.key?(:cluster_config) | ||
|  |           @listener_config = args[:listener_config] if args.key?(:listener_config) | ||
|  |           @route_config = args[:route_config] if args.key?(:route_config) | ||
|  |           @scoped_route_config = args[:scoped_route_config] if args.key?(:scoped_route_config) | ||
|  |           @status = args[:status] if args.key?(:status) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class Pipe | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The mode for the Pipe. Not applicable for abstract sockets. | ||
|  |         # Corresponds to the JSON property `mode` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :mode | ||
|  |        | ||
|  |         # Unix Domain Socket path. On Linux, paths starting with '@' will use the | ||
|  |         # abstract namespace. The starting '@' is replaced by a null byte by Envoy. | ||
|  |         # Paths starting with '@' will result in an error in environments other than | ||
|  |         # Linux. | ||
|  |         # Corresponds to the JSON property `path` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :path | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @mode = args[:mode] if args.key?(:mode) | ||
|  |           @path = args[:path] if args.key?(:path) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A regex matcher designed for safety when used with untrusted input. | ||
|  |       class RegexMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Google'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. | ||
|  |         # Corresponds to the JSON property `googleRe2` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::GoogleRe2] | ||
|  |         attr_accessor :google_re2 | ||
|  |        | ||
|  |         # The regex match string. The string must be supported by the configured engine. | ||
|  |         # Corresponds to the JSON property `regex` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :regex | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @google_re2 = args[:google_re2] if args.key?(:google_re2) | ||
|  |           @regex = args[:regex] if args.key?(:regex) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Envoy'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. | ||
|  |       class RoutesConfigDump | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The dynamically loaded route configs. | ||
|  |         # Corresponds to the JSON property `dynamicRouteConfigs` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::DynamicRouteConfig>] | ||
|  |         attr_accessor :dynamic_route_configs | ||
|  |        | ||
|  |         # The statically loaded route configs. | ||
|  |         # Corresponds to the JSON property `staticRouteConfigs` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::StaticRouteConfig>] | ||
|  |         attr_accessor :static_route_configs | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @dynamic_route_configs = args[:dynamic_route_configs] if args.key?(:dynamic_route_configs) | ||
|  |           @static_route_configs = args[:static_route_configs] if args.key?(:static_route_configs) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Envoy'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. | ||
|  |       class ScopedRoutesConfigDump | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The dynamically loaded scoped route configs. | ||
|  |         # Corresponds to the JSON property `dynamicScopedRouteConfigs` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::DynamicScopedRouteConfigs>] | ||
|  |         attr_accessor :dynamic_scoped_route_configs | ||
|  |        | ||
|  |         # The statically loaded scoped route configs. | ||
|  |         # Corresponds to the JSON property `inlineScopedRouteConfigs` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::InlineScopedRouteConfigs>] | ||
|  |         attr_accessor :inline_scoped_route_configs | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @dynamic_scoped_route_configs = args[:dynamic_scoped_route_configs] if args.key?(:dynamic_scoped_route_configs) | ||
|  |           @inline_scoped_route_configs = args[:inline_scoped_route_configs] if args.key?(:inline_scoped_route_configs) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # 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. | ||
|  |       class SemanticVersion | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `majorNumber` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :major_number | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `minorNumber` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :minor_number | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `patch` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :patch | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @major_number = args[:major_number] if args.key?(:major_number) | ||
|  |           @minor_number = args[:minor_number] if args.key?(:minor_number) | ||
|  |           @patch = args[:patch] if args.key?(:patch) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # [#next-free-field: 7] | ||
|  |       class SocketAddress | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # 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 `. | ||
|  |         # Corresponds to the JSON property `address` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :address | ||
|  |        | ||
|  |         # 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:``. | ||
|  |         # Corresponds to the JSON property `ipv4Compat` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :ipv4_compat | ||
|  |         alias_method :ipv4_compat?, :ipv4_compat | ||
|  |        | ||
|  |         # This is only valid if :ref:`resolver_name ` is specified below and the named | ||
|  |         # resolver is capable of named port resolution. | ||
|  |         # Corresponds to the JSON property `namedPort` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :named_port | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `portValue` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :port_value | ||
|  |        | ||
|  |         #  | ||
|  |         # Corresponds to the JSON property `protocol` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :protocol | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `resolverName` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :resolver_name | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @address = args[:address] if args.key?(:address) | ||
|  |           @ipv4_compat = args[:ipv4_compat] if args.key?(:ipv4_compat) | ||
|  |           @named_port = args[:named_port] if args.key?(:named_port) | ||
|  |           @port_value = args[:port_value] if args.key?(:port_value) | ||
|  |           @protocol = args[:protocol] if args.key?(:protocol) | ||
|  |           @resolver_name = args[:resolver_name] if args.key?(:resolver_name) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Describes a statically loaded cluster. | ||
|  |       class StaticCluster | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The cluster config. | ||
|  |         # Corresponds to the JSON property `cluster` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :cluster | ||
|  |        | ||
|  |         # The timestamp when the Cluster was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @cluster = args[:cluster] if args.key?(:cluster) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Describes a statically loaded listener. | ||
|  |       class StaticListener | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the Listener was last successfully updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The listener config. | ||
|  |         # Corresponds to the JSON property `listener` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :listener | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @listener = args[:listener] if args.key?(:listener) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class StaticRouteConfig | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The timestamp when the Route was last updated. | ||
|  |         # Corresponds to the JSON property `lastUpdated` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_updated | ||
|  |        | ||
|  |         # The route config. | ||
|  |         # Corresponds to the JSON property `routeConfig` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :route_config | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @last_updated = args[:last_updated] if args.key?(:last_updated) | ||
|  |           @route_config = args[:route_config] if args.key?(:route_config) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the way to match a string. [#next-free-field: 7] | ||
|  |       class StringMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The input string must match exactly the string specified here. Examples: * * | ||
|  |         # abc* only matches the value *abc*. | ||
|  |         # Corresponds to the JSON property `exact` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :exact | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `ignoreCase` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :ignore_case | ||
|  |         alias_method :ignore_case?, :ignore_case | ||
|  |        | ||
|  |         # 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* | ||
|  |         # Corresponds to the JSON property `prefix` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :prefix | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `regex` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :regex | ||
|  |        | ||
|  |         # A regex matcher designed for safety when used with untrusted input. | ||
|  |         # Corresponds to the JSON property `safeRegex` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::RegexMatcher] | ||
|  |         attr_accessor :safe_regex | ||
|  |        | ||
|  |         # 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* | ||
|  |         # Corresponds to the JSON property `suffix` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :suffix | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @exact = args[:exact] if args.key?(:exact) | ||
|  |           @ignore_case = args[:ignore_case] if args.key?(:ignore_case) | ||
|  |           @prefix = args[:prefix] if args.key?(:prefix) | ||
|  |           @regex = args[:regex] if args.key?(:regex) | ||
|  |           @safe_regex = args[:safe_regex] if args.key?(:safe_regex) | ||
|  |           @suffix = args[:suffix] if args.key?(:suffix) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # 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'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 "pro" 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. | ||
|  |       class StructMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The path to retrieve the Value from the Struct. | ||
|  |         # Corresponds to the JSON property `path` | ||
|  |         # @return [Array<Google::Apis::TrafficdirectorV2::PathSegment>] | ||
|  |         attr_accessor :path | ||
|  |        | ||
|  |         # 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] | ||
|  |         # Corresponds to the JSON property `value` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ValueMatcher] | ||
|  |         attr_accessor :value | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @path = args[:path] if args.key?(:path) | ||
|  |           @value = args[:value] if args.key?(:value) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       #  | ||
|  |       class UpdateFailureState | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Details about the last failed update attempt. | ||
|  |         # Corresponds to the JSON property `details` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :details | ||
|  |        | ||
|  |         # What the component configuration would have been if the update had succeeded. | ||
|  |         # Corresponds to the JSON property `failedConfiguration` | ||
|  |         # @return [Hash<String,Object>] | ||
|  |         attr_accessor :failed_configuration | ||
|  |        | ||
|  |         # Time of the latest failed update attempt. | ||
|  |         # Corresponds to the JSON property `lastUpdateAttempt` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :last_update_attempt | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @details = args[:details] if args.key?(:details) | ||
|  |           @failed_configuration = args[:failed_configuration] if args.key?(:failed_configuration) | ||
|  |           @last_update_attempt = args[:last_update_attempt] if args.key?(:last_update_attempt) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # 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] | ||
|  |       class ValueMatcher | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # If specified, a match occurs if and only if the target value is a bool value | ||
|  |         # and is equal to this field. | ||
|  |         # Corresponds to the JSON property `boolMatch` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :bool_match | ||
|  |         alias_method :bool_match?, :bool_match | ||
|  |        | ||
|  |         # Specifies the way to match a double value. | ||
|  |         # Corresponds to the JSON property `doubleMatch` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::DoubleMatcher] | ||
|  |         attr_accessor :double_match | ||
|  |        | ||
|  |         # Specifies the way to match a list value. | ||
|  |         # Corresponds to the JSON property `listMatch` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::ListMatcher] | ||
|  |         attr_accessor :list_match | ||
|  |        | ||
|  |         # NullMatch is an empty message to specify a null value. | ||
|  |         # Corresponds to the JSON property `nullMatch` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::NullMatch] | ||
|  |         attr_accessor :null_match | ||
|  |        | ||
|  |         # 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. | ||
|  |         # Corresponds to the JSON property `presentMatch` | ||
|  |         # @return [Boolean] | ||
|  |         attr_accessor :present_match | ||
|  |         alias_method :present_match?, :present_match | ||
|  |        | ||
|  |         # Specifies the way to match a string. [#next-free-field: 7] | ||
|  |         # Corresponds to the JSON property `stringMatch` | ||
|  |         # @return [Google::Apis::TrafficdirectorV2::StringMatcher] | ||
|  |         attr_accessor :string_match | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @bool_match = args[:bool_match] if args.key?(:bool_match) | ||
|  |           @double_match = args[:double_match] if args.key?(:double_match) | ||
|  |           @list_match = args[:list_match] if args.key?(:list_match) | ||
|  |           @null_match = args[:null_match] if args.key?(:null_match) | ||
|  |           @present_match = args[:present_match] if args.key?(:present_match) | ||
|  |           @string_match = args[:string_match] if args.key?(:string_match) | ||
|  |         end | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |