google-apis-trafficdirector_v3 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1703 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module TrafficdirectorV3
24
+
25
+ # Addresses specify either a logical or physical address and port, which are
26
+ # used to tell Envoy where to bind/listen, connect to upstream and find
27
+ # management servers.
28
+ class Address
29
+ include Google::Apis::Core::Hashable
30
+
31
+ # The address represents an envoy internal listener. [#comment:
32
+ # Corresponds to the JSON property `envoyInternalAddress`
33
+ # @return [Google::Apis::TrafficdirectorV3::EnvoyInternalAddress]
34
+ attr_accessor :envoy_internal_address
35
+
36
+ #
37
+ # Corresponds to the JSON property `pipe`
38
+ # @return [Google::Apis::TrafficdirectorV3::Pipe]
39
+ attr_accessor :pipe
40
+
41
+ # [#next-free-field: 7]
42
+ # Corresponds to the JSON property `socketAddress`
43
+ # @return [Google::Apis::TrafficdirectorV3::SocketAddress]
44
+ attr_accessor :socket_address
45
+
46
+ def initialize(**args)
47
+ update!(**args)
48
+ end
49
+
50
+ # Update properties of this object
51
+ def update!(**args)
52
+ @envoy_internal_address = args[:envoy_internal_address] if args.key?(:envoy_internal_address)
53
+ @pipe = args[:pipe] if args.key?(:pipe)
54
+ @socket_address = args[:socket_address] if args.key?(:socket_address)
55
+ end
56
+ end
57
+
58
+ # BuildVersion combines SemVer version of extension with free-form build
59
+ # information (i.e. 'alpha', 'private-build') as a set of strings.
60
+ class BuildVersion
61
+ include Google::Apis::Core::Hashable
62
+
63
+ # Free-form build information. Envoy defines several well known keys in the
64
+ # source/common/version/version.h file
65
+ # Corresponds to the JSON property `metadata`
66
+ # @return [Hash<String,Object>]
67
+ attr_accessor :metadata
68
+
69
+ # Envoy uses SemVer (https://semver.org/). Major/minor versions indicate
70
+ # expected behaviors and APIs, the patch version field is used only for security
71
+ # fixes and can be generally ignored.
72
+ # Corresponds to the JSON property `version`
73
+ # @return [Google::Apis::TrafficdirectorV3::SemanticVersion]
74
+ attr_accessor :version
75
+
76
+ def initialize(**args)
77
+ update!(**args)
78
+ end
79
+
80
+ # Update properties of this object
81
+ def update!(**args)
82
+ @metadata = args[:metadata] if args.key?(:metadata)
83
+ @version = args[:version] if args.key?(:version)
84
+ end
85
+ end
86
+
87
+ # All xds configs for a particular client.
88
+ class ClientConfig
89
+ include Google::Apis::Core::Hashable
90
+
91
+ # Represents generic xDS config and the exact config structure depends on the
92
+ # type URL (like Cluster if it is CDS)
93
+ # Corresponds to the JSON property `genericXdsConfigs`
94
+ # @return [Array<Google::Apis::TrafficdirectorV3::GenericXdsConfig>]
95
+ attr_accessor :generic_xds_configs
96
+
97
+ # Identifies a specific Envoy instance. The node identifier is presented to the
98
+ # management server, which may use this identifier to distinguish per Envoy
99
+ # configuration for serving. [#next-free-field: 13]
100
+ # Corresponds to the JSON property `node`
101
+ # @return [Google::Apis::TrafficdirectorV3::Node]
102
+ attr_accessor :node
103
+
104
+ # This field is deprecated in favor of generic_xds_configs which is much simpler
105
+ # and uniform in structure.
106
+ # Corresponds to the JSON property `xdsConfig`
107
+ # @return [Array<Google::Apis::TrafficdirectorV3::PerXdsConfig>]
108
+ attr_accessor :xds_config
109
+
110
+ def initialize(**args)
111
+ update!(**args)
112
+ end
113
+
114
+ # Update properties of this object
115
+ def update!(**args)
116
+ @generic_xds_configs = args[:generic_xds_configs] if args.key?(:generic_xds_configs)
117
+ @node = args[:node] if args.key?(:node)
118
+ @xds_config = args[:xds_config] if args.key?(:xds_config)
119
+ end
120
+ end
121
+
122
+ # Request for client status of clients identified by a list of NodeMatchers.
123
+ class ClientStatusRequest
124
+ include Google::Apis::Core::Hashable
125
+
126
+ # If true, the server will not include the resource contents in the response (i.
127
+ # e., the generic_xds_configs.xds_config field will not be populated). [#not-
128
+ # implemented-hide:]
129
+ # Corresponds to the JSON property `excludeResourceContents`
130
+ # @return [Boolean]
131
+ attr_accessor :exclude_resource_contents
132
+ alias_method :exclude_resource_contents?, :exclude_resource_contents
133
+
134
+ # Identifies a specific Envoy instance. The node identifier is presented to the
135
+ # management server, which may use this identifier to distinguish per Envoy
136
+ # configuration for serving. [#next-free-field: 13]
137
+ # Corresponds to the JSON property `node`
138
+ # @return [Google::Apis::TrafficdirectorV3::Node]
139
+ attr_accessor :node
140
+
141
+ # Management server can use these match criteria to identify clients. The match
142
+ # follows OR semantics.
143
+ # Corresponds to the JSON property `nodeMatchers`
144
+ # @return [Array<Google::Apis::TrafficdirectorV3::NodeMatcher>]
145
+ attr_accessor :node_matchers
146
+
147
+ def initialize(**args)
148
+ update!(**args)
149
+ end
150
+
151
+ # Update properties of this object
152
+ def update!(**args)
153
+ @exclude_resource_contents = args[:exclude_resource_contents] if args.key?(:exclude_resource_contents)
154
+ @node = args[:node] if args.key?(:node)
155
+ @node_matchers = args[:node_matchers] if args.key?(:node_matchers)
156
+ end
157
+ end
158
+
159
+ #
160
+ class ClientStatusResponse
161
+ include Google::Apis::Core::Hashable
162
+
163
+ # Client configs for the clients specified in the ClientStatusRequest.
164
+ # Corresponds to the JSON property `config`
165
+ # @return [Array<Google::Apis::TrafficdirectorV3::ClientConfig>]
166
+ attr_accessor :config
167
+
168
+ def initialize(**args)
169
+ update!(**args)
170
+ end
171
+
172
+ # Update properties of this object
173
+ def update!(**args)
174
+ @config = args[:config] if args.key?(:config)
175
+ end
176
+ end
177
+
178
+ # Envoy's cluster manager fills this message with all currently known clusters.
179
+ # Cluster configuration information can be used to recreate an Envoy
180
+ # configuration by populating all clusters as static clusters or by returning
181
+ # them in a CDS response.
182
+ class ClustersConfigDump
183
+ include Google::Apis::Core::Hashable
184
+
185
+ # The dynamically loaded active clusters. These are clusters that are available
186
+ # to service data plane traffic.
187
+ # Corresponds to the JSON property `dynamicActiveClusters`
188
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicCluster>]
189
+ attr_accessor :dynamic_active_clusters
190
+
191
+ # The dynamically loaded warming clusters. These are clusters that are currently
192
+ # undergoing warming in preparation to service data plane traffic. Note that if
193
+ # attempting to recreate an Envoy configuration from a configuration dump, the
194
+ # warming clusters should generally be discarded.
195
+ # Corresponds to the JSON property `dynamicWarmingClusters`
196
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicCluster>]
197
+ attr_accessor :dynamic_warming_clusters
198
+
199
+ # The statically loaded cluster configs.
200
+ # Corresponds to the JSON property `staticClusters`
201
+ # @return [Array<Google::Apis::TrafficdirectorV3::StaticCluster>]
202
+ attr_accessor :static_clusters
203
+
204
+ # This is the :ref:`version_info ` in the last processed CDS discovery response.
205
+ # If there are only static bootstrap clusters, this field will be "".
206
+ # Corresponds to the JSON property `versionInfo`
207
+ # @return [String]
208
+ attr_accessor :version_info
209
+
210
+ def initialize(**args)
211
+ update!(**args)
212
+ end
213
+
214
+ # Update properties of this object
215
+ def update!(**args)
216
+ @dynamic_active_clusters = args[:dynamic_active_clusters] if args.key?(:dynamic_active_clusters)
217
+ @dynamic_warming_clusters = args[:dynamic_warming_clusters] if args.key?(:dynamic_warming_clusters)
218
+ @static_clusters = args[:static_clusters] if args.key?(:static_clusters)
219
+ @version_info = args[:version_info] if args.key?(:version_info)
220
+ end
221
+ end
222
+
223
+ # Additional parameters that can be used to select resource variants. These
224
+ # include any global context parameters, per-resource type client feature
225
+ # capabilities and per-resource type functional attributes. All per-resource
226
+ # type attributes will be `xds.resource.` prefixed and some of these are
227
+ # documented below: `xds.resource.listening_address`: The value is "IP:port" (e.
228
+ # g. "10.1.1.3:8080") which is the listening address of a Listener. Used in a
229
+ # Listener resource query.
230
+ class ContextParams
231
+ include Google::Apis::Core::Hashable
232
+
233
+ #
234
+ # Corresponds to the JSON property `params`
235
+ # @return [Hash<String,String>]
236
+ attr_accessor :params
237
+
238
+ def initialize(**args)
239
+ update!(**args)
240
+ end
241
+
242
+ # Update properties of this object
243
+ def update!(**args)
244
+ @params = args[:params] if args.key?(:params)
245
+ end
246
+ end
247
+
248
+ # Specifies the way to match a double value.
249
+ class DoubleMatcher
250
+ include Google::Apis::Core::Hashable
251
+
252
+ # If specified, the input double value must be equal to the value specified here.
253
+ # Corresponds to the JSON property `exact`
254
+ # @return [Float]
255
+ attr_accessor :exact
256
+
257
+ # Specifies the double start and end of the range using half-open interval
258
+ # semantics [start, end).
259
+ # Corresponds to the JSON property `range`
260
+ # @return [Google::Apis::TrafficdirectorV3::DoubleRange]
261
+ attr_accessor :range
262
+
263
+ def initialize(**args)
264
+ update!(**args)
265
+ end
266
+
267
+ # Update properties of this object
268
+ def update!(**args)
269
+ @exact = args[:exact] if args.key?(:exact)
270
+ @range = args[:range] if args.key?(:range)
271
+ end
272
+ end
273
+
274
+ # Specifies the double start and end of the range using half-open interval
275
+ # semantics [start, end).
276
+ class DoubleRange
277
+ include Google::Apis::Core::Hashable
278
+
279
+ # end of the range (exclusive)
280
+ # Corresponds to the JSON property `end`
281
+ # @return [Float]
282
+ attr_accessor :end
283
+
284
+ # start of the range (inclusive)
285
+ # Corresponds to the JSON property `start`
286
+ # @return [Float]
287
+ attr_accessor :start
288
+
289
+ def initialize(**args)
290
+ update!(**args)
291
+ end
292
+
293
+ # Update properties of this object
294
+ def update!(**args)
295
+ @end = args[:end] if args.key?(:end)
296
+ @start = args[:start] if args.key?(:start)
297
+ end
298
+ end
299
+
300
+ # Describes a dynamically loaded cluster via the CDS API. [#next-free-field: 6]
301
+ class DynamicCluster
302
+ include Google::Apis::Core::Hashable
303
+
304
+ # The client status of this resource. [#not-implemented-hide:]
305
+ # Corresponds to the JSON property `clientStatus`
306
+ # @return [String]
307
+ attr_accessor :client_status
308
+
309
+ # The cluster config.
310
+ # Corresponds to the JSON property `cluster`
311
+ # @return [Hash<String,Object>]
312
+ attr_accessor :cluster
313
+
314
+ # Set if the last update failed, cleared after the next successful update. The ``
315
+ # error_state`` field contains the rejected version of this particular resource
316
+ # along with the reason and timestamp. For successfully updated or acknowledged
317
+ # resource, this field should be empty. [#not-implemented-hide:]
318
+ # Corresponds to the JSON property `errorState`
319
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
320
+ attr_accessor :error_state
321
+
322
+ # The timestamp when the Cluster was last updated.
323
+ # Corresponds to the JSON property `lastUpdated`
324
+ # @return [String]
325
+ attr_accessor :last_updated
326
+
327
+ # This is the per-resource version information. This version is currently taken
328
+ # from the :ref:`version_info ` field at the time that the cluster was loaded.
329
+ # In the future, discrete per-cluster versions may be supported by the API.
330
+ # Corresponds to the JSON property `versionInfo`
331
+ # @return [String]
332
+ attr_accessor :version_info
333
+
334
+ def initialize(**args)
335
+ update!(**args)
336
+ end
337
+
338
+ # Update properties of this object
339
+ def update!(**args)
340
+ @client_status = args[:client_status] if args.key?(:client_status)
341
+ @cluster = args[:cluster] if args.key?(:cluster)
342
+ @error_state = args[:error_state] if args.key?(:error_state)
343
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
344
+ @version_info = args[:version_info] if args.key?(:version_info)
345
+ end
346
+ end
347
+
348
+ # [#next-free-field: 6]
349
+ class DynamicEndpointConfig
350
+ include Google::Apis::Core::Hashable
351
+
352
+ # The client status of this resource. [#not-implemented-hide:]
353
+ # Corresponds to the JSON property `clientStatus`
354
+ # @return [String]
355
+ attr_accessor :client_status
356
+
357
+ # The endpoint config.
358
+ # Corresponds to the JSON property `endpointConfig`
359
+ # @return [Hash<String,Object>]
360
+ attr_accessor :endpoint_config
361
+
362
+ # Set if the last update failed, cleared after the next successful update. The ``
363
+ # error_state`` field contains the rejected version of this particular resource
364
+ # along with the reason and timestamp. For successfully updated or acknowledged
365
+ # resource, this field should be empty. [#not-implemented-hide:]
366
+ # Corresponds to the JSON property `errorState`
367
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
368
+ attr_accessor :error_state
369
+
370
+ # [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
371
+ # Corresponds to the JSON property `lastUpdated`
372
+ # @return [String]
373
+ attr_accessor :last_updated
374
+
375
+ # [#not-implemented-hide:] This is the per-resource version information. This
376
+ # version is currently taken from the :ref:`version_info ` field at the time
377
+ # that the endpoint configuration was loaded.
378
+ # Corresponds to the JSON property `versionInfo`
379
+ # @return [String]
380
+ attr_accessor :version_info
381
+
382
+ def initialize(**args)
383
+ update!(**args)
384
+ end
385
+
386
+ # Update properties of this object
387
+ def update!(**args)
388
+ @client_status = args[:client_status] if args.key?(:client_status)
389
+ @endpoint_config = args[:endpoint_config] if args.key?(:endpoint_config)
390
+ @error_state = args[:error_state] if args.key?(:error_state)
391
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
392
+ @version_info = args[:version_info] if args.key?(:version_info)
393
+ end
394
+ end
395
+
396
+ # Describes a dynamically loaded listener via the LDS API. [#next-free-field: 7]
397
+ class DynamicListener
398
+ include Google::Apis::Core::Hashable
399
+
400
+ # The listener state for any active listener by this name. These are listeners
401
+ # that are available to service data plane traffic.
402
+ # Corresponds to the JSON property `activeState`
403
+ # @return [Google::Apis::TrafficdirectorV3::DynamicListenerState]
404
+ attr_accessor :active_state
405
+
406
+ # The client status of this resource. [#not-implemented-hide:]
407
+ # Corresponds to the JSON property `clientStatus`
408
+ # @return [String]
409
+ attr_accessor :client_status
410
+
411
+ # The listener state for any draining listener by this name. These are listeners
412
+ # that are currently undergoing draining in preparation to stop servicing data
413
+ # plane traffic. Note that if attempting to recreate an Envoy configuration from
414
+ # a configuration dump, the draining listeners should generally be discarded.
415
+ # Corresponds to the JSON property `drainingState`
416
+ # @return [Google::Apis::TrafficdirectorV3::DynamicListenerState]
417
+ attr_accessor :draining_state
418
+
419
+ # Set if the last update failed, cleared after the next successful update. The ``
420
+ # error_state`` field contains the rejected version of this particular resource
421
+ # along with the reason and timestamp. For successfully updated or acknowledged
422
+ # resource, this field should be empty.
423
+ # Corresponds to the JSON property `errorState`
424
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
425
+ attr_accessor :error_state
426
+
427
+ # The name or unique id of this listener, pulled from the DynamicListenerState
428
+ # config.
429
+ # Corresponds to the JSON property `name`
430
+ # @return [String]
431
+ attr_accessor :name
432
+
433
+ # The listener state for any warming listener by this name. These are listeners
434
+ # that are currently undergoing warming in preparation to service data plane
435
+ # traffic. Note that if attempting to recreate an Envoy configuration from a
436
+ # configuration dump, the warming listeners should generally be discarded.
437
+ # Corresponds to the JSON property `warmingState`
438
+ # @return [Google::Apis::TrafficdirectorV3::DynamicListenerState]
439
+ attr_accessor :warming_state
440
+
441
+ def initialize(**args)
442
+ update!(**args)
443
+ end
444
+
445
+ # Update properties of this object
446
+ def update!(**args)
447
+ @active_state = args[:active_state] if args.key?(:active_state)
448
+ @client_status = args[:client_status] if args.key?(:client_status)
449
+ @draining_state = args[:draining_state] if args.key?(:draining_state)
450
+ @error_state = args[:error_state] if args.key?(:error_state)
451
+ @name = args[:name] if args.key?(:name)
452
+ @warming_state = args[:warming_state] if args.key?(:warming_state)
453
+ end
454
+ end
455
+
456
+ #
457
+ class DynamicListenerState
458
+ include Google::Apis::Core::Hashable
459
+
460
+ # The timestamp when the Listener was last successfully updated.
461
+ # Corresponds to the JSON property `lastUpdated`
462
+ # @return [String]
463
+ attr_accessor :last_updated
464
+
465
+ # The listener config.
466
+ # Corresponds to the JSON property `listener`
467
+ # @return [Hash<String,Object>]
468
+ attr_accessor :listener
469
+
470
+ # This is the per-resource version information. This version is currently taken
471
+ # from the :ref:`version_info ` field at the time that the listener was loaded.
472
+ # In the future, discrete per-listener versions may be supported by the API.
473
+ # Corresponds to the JSON property `versionInfo`
474
+ # @return [String]
475
+ attr_accessor :version_info
476
+
477
+ def initialize(**args)
478
+ update!(**args)
479
+ end
480
+
481
+ # Update properties of this object
482
+ def update!(**args)
483
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
484
+ @listener = args[:listener] if args.key?(:listener)
485
+ @version_info = args[:version_info] if args.key?(:version_info)
486
+ end
487
+ end
488
+
489
+ # [#next-free-field: 6]
490
+ class DynamicRouteConfig
491
+ include Google::Apis::Core::Hashable
492
+
493
+ # The client status of this resource. [#not-implemented-hide:]
494
+ # Corresponds to the JSON property `clientStatus`
495
+ # @return [String]
496
+ attr_accessor :client_status
497
+
498
+ # Set if the last update failed, cleared after the next successful update. The ``
499
+ # error_state`` field contains the rejected version of this particular resource
500
+ # along with the reason and timestamp. For successfully updated or acknowledged
501
+ # resource, this field should be empty. [#not-implemented-hide:]
502
+ # Corresponds to the JSON property `errorState`
503
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
504
+ attr_accessor :error_state
505
+
506
+ # The timestamp when the Route was last updated.
507
+ # Corresponds to the JSON property `lastUpdated`
508
+ # @return [String]
509
+ attr_accessor :last_updated
510
+
511
+ # The route config.
512
+ # Corresponds to the JSON property `routeConfig`
513
+ # @return [Hash<String,Object>]
514
+ attr_accessor :route_config
515
+
516
+ # This is the per-resource version information. This version is currently taken
517
+ # from the :ref:`version_info ` field at the time that the route configuration
518
+ # was loaded.
519
+ # Corresponds to the JSON property `versionInfo`
520
+ # @return [String]
521
+ attr_accessor :version_info
522
+
523
+ def initialize(**args)
524
+ update!(**args)
525
+ end
526
+
527
+ # Update properties of this object
528
+ def update!(**args)
529
+ @client_status = args[:client_status] if args.key?(:client_status)
530
+ @error_state = args[:error_state] if args.key?(:error_state)
531
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
532
+ @route_config = args[:route_config] if args.key?(:route_config)
533
+ @version_info = args[:version_info] if args.key?(:version_info)
534
+ end
535
+ end
536
+
537
+ # [#next-free-field: 7]
538
+ class DynamicScopedRouteConfigs
539
+ include Google::Apis::Core::Hashable
540
+
541
+ # The client status of this resource. [#not-implemented-hide:]
542
+ # Corresponds to the JSON property `clientStatus`
543
+ # @return [String]
544
+ attr_accessor :client_status
545
+
546
+ # Set if the last update failed, cleared after the next successful update. The ``
547
+ # error_state`` field contains the rejected version of this particular resource
548
+ # along with the reason and timestamp. For successfully updated or acknowledged
549
+ # resource, this field should be empty. [#not-implemented-hide:]
550
+ # Corresponds to the JSON property `errorState`
551
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
552
+ attr_accessor :error_state
553
+
554
+ # The timestamp when the scoped route config set was last updated.
555
+ # Corresponds to the JSON property `lastUpdated`
556
+ # @return [String]
557
+ attr_accessor :last_updated
558
+
559
+ # The name assigned to the scoped route configurations.
560
+ # Corresponds to the JSON property `name`
561
+ # @return [String]
562
+ attr_accessor :name
563
+
564
+ # The scoped route configurations.
565
+ # Corresponds to the JSON property `scopedRouteConfigs`
566
+ # @return [Array<Hash<String,Object>>]
567
+ attr_accessor :scoped_route_configs
568
+
569
+ # This is the per-resource version information. This version is currently taken
570
+ # from the :ref:`version_info ` field at the time that the scoped routes
571
+ # configuration was loaded.
572
+ # Corresponds to the JSON property `versionInfo`
573
+ # @return [String]
574
+ attr_accessor :version_info
575
+
576
+ def initialize(**args)
577
+ update!(**args)
578
+ end
579
+
580
+ # Update properties of this object
581
+ def update!(**args)
582
+ @client_status = args[:client_status] if args.key?(:client_status)
583
+ @error_state = args[:error_state] if args.key?(:error_state)
584
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
585
+ @name = args[:name] if args.key?(:name)
586
+ @scoped_route_configs = args[:scoped_route_configs] if args.key?(:scoped_route_configs)
587
+ @version_info = args[:version_info] if args.key?(:version_info)
588
+ end
589
+ end
590
+
591
+ # Envoy's admin fill this message with all currently known endpoints. Endpoint
592
+ # configuration information can be used to recreate an Envoy configuration by
593
+ # populating all endpoints as static endpoints or by returning them in an EDS
594
+ # response.
595
+ class EndpointsConfigDump
596
+ include Google::Apis::Core::Hashable
597
+
598
+ # The dynamically loaded endpoint configs.
599
+ # Corresponds to the JSON property `dynamicEndpointConfigs`
600
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicEndpointConfig>]
601
+ attr_accessor :dynamic_endpoint_configs
602
+
603
+ # The statically loaded endpoint configs.
604
+ # Corresponds to the JSON property `staticEndpointConfigs`
605
+ # @return [Array<Google::Apis::TrafficdirectorV3::StaticEndpointConfig>]
606
+ attr_accessor :static_endpoint_configs
607
+
608
+ def initialize(**args)
609
+ update!(**args)
610
+ end
611
+
612
+ # Update properties of this object
613
+ def update!(**args)
614
+ @dynamic_endpoint_configs = args[:dynamic_endpoint_configs] if args.key?(:dynamic_endpoint_configs)
615
+ @static_endpoint_configs = args[:static_endpoint_configs] if args.key?(:static_endpoint_configs)
616
+ end
617
+ end
618
+
619
+ # The address represents an envoy internal listener. [#comment:
620
+ class EnvoyInternalAddress
621
+ include Google::Apis::Core::Hashable
622
+
623
+ # Specifies an endpoint identifier to distinguish between multiple endpoints for
624
+ # the same internal listener in a single upstream pool. Only used in the
625
+ # upstream addresses for tracking changes to individual endpoints. This, for
626
+ # example, may be set to the final destination IP for the target internal
627
+ # listener.
628
+ # Corresponds to the JSON property `endpointId`
629
+ # @return [String]
630
+ attr_accessor :endpoint_id
631
+
632
+ # Specifies the :ref:`name ` of the internal listener.
633
+ # Corresponds to the JSON property `serverListenerName`
634
+ # @return [String]
635
+ attr_accessor :server_listener_name
636
+
637
+ def initialize(**args)
638
+ update!(**args)
639
+ end
640
+
641
+ # Update properties of this object
642
+ def update!(**args)
643
+ @endpoint_id = args[:endpoint_id] if args.key?(:endpoint_id)
644
+ @server_listener_name = args[:server_listener_name] if args.key?(:server_listener_name)
645
+ end
646
+ end
647
+
648
+ # Version and identification for an Envoy extension. [#next-free-field: 7]
649
+ class Extension
650
+ include Google::Apis::Core::Hashable
651
+
652
+ # Category of the extension. Extension category names use reverse DNS notation.
653
+ # For instance "envoy.filters.listener" for Envoy's built-in listener filters or
654
+ # "com.acme.filters.http" for HTTP filters from acme.com vendor. [#comment:
655
+ # Corresponds to the JSON property `category`
656
+ # @return [String]
657
+ attr_accessor :category
658
+
659
+ # Indicates that the extension is present but was disabled via dynamic
660
+ # configuration.
661
+ # Corresponds to the JSON property `disabled`
662
+ # @return [Boolean]
663
+ attr_accessor :disabled
664
+ alias_method :disabled?, :disabled
665
+
666
+ # This is the name of the Envoy filter as specified in the Envoy configuration,
667
+ # e.g. envoy.filters.http.router, com.acme.widget.
668
+ # Corresponds to the JSON property `name`
669
+ # @return [String]
670
+ attr_accessor :name
671
+
672
+ # [#not-implemented-hide:] Type descriptor of extension configuration proto. [#
673
+ # comment:
674
+ # Corresponds to the JSON property `typeDescriptor`
675
+ # @return [String]
676
+ attr_accessor :type_descriptor
677
+
678
+ # Type URLs of extension configuration protos.
679
+ # Corresponds to the JSON property `typeUrls`
680
+ # @return [Array<String>]
681
+ attr_accessor :type_urls
682
+
683
+ # BuildVersion combines SemVer version of extension with free-form build
684
+ # information (i.e. 'alpha', 'private-build') as a set of strings.
685
+ # Corresponds to the JSON property `version`
686
+ # @return [Google::Apis::TrafficdirectorV3::BuildVersion]
687
+ attr_accessor :version
688
+
689
+ def initialize(**args)
690
+ update!(**args)
691
+ end
692
+
693
+ # Update properties of this object
694
+ def update!(**args)
695
+ @category = args[:category] if args.key?(:category)
696
+ @disabled = args[:disabled] if args.key?(:disabled)
697
+ @name = args[:name] if args.key?(:name)
698
+ @type_descriptor = args[:type_descriptor] if args.key?(:type_descriptor)
699
+ @type_urls = args[:type_urls] if args.key?(:type_urls)
700
+ @version = args[:version] if args.key?(:version)
701
+ end
702
+ end
703
+
704
+ # GenericXdsConfig is used to specify the config status and the dump of any xDS
705
+ # resource identified by their type URL. It is the generalized version of the
706
+ # now deprecated ListenersConfigDump, ClustersConfigDump etc [#next-free-field:
707
+ # 10]
708
+ class GenericXdsConfig
709
+ include Google::Apis::Core::Hashable
710
+
711
+ # Per xDS resource status from the view of a xDS client
712
+ # Corresponds to the JSON property `clientStatus`
713
+ # @return [String]
714
+ attr_accessor :client_status
715
+
716
+ # Per xDS resource config status. It is generated by management servers. It will
717
+ # not be present if the CSDS server is an xDS client.
718
+ # Corresponds to the JSON property `configStatus`
719
+ # @return [String]
720
+ attr_accessor :config_status
721
+
722
+ # Set if the last update failed, cleared after the next successful update. The *
723
+ # error_state* field contains the rejected version of this particular resource
724
+ # along with the reason and timestamp. For successfully updated or acknowledged
725
+ # resource, this field should be empty. [#not-implemented-hide:]
726
+ # Corresponds to the JSON property `errorState`
727
+ # @return [Google::Apis::TrafficdirectorV3::UpdateFailureState]
728
+ attr_accessor :error_state
729
+
730
+ # Is static resource is true if it is specified in the config supplied through
731
+ # the file at the startup.
732
+ # Corresponds to the JSON property `isStaticResource`
733
+ # @return [Boolean]
734
+ attr_accessor :is_static_resource
735
+ alias_method :is_static_resource?, :is_static_resource
736
+
737
+ # Timestamp when the xDS resource was last updated
738
+ # Corresponds to the JSON property `lastUpdated`
739
+ # @return [String]
740
+ attr_accessor :last_updated
741
+
742
+ # Name of the xDS resource
743
+ # Corresponds to the JSON property `name`
744
+ # @return [String]
745
+ attr_accessor :name
746
+
747
+ # Type_url represents the fully qualified name of xDS resource type like envoy.
748
+ # v3.Cluster, envoy.v3.ClusterLoadAssignment etc.
749
+ # Corresponds to the JSON property `typeUrl`
750
+ # @return [String]
751
+ attr_accessor :type_url
752
+
753
+ # This is the :ref:`version_info ` in the last processed xDS discovery response.
754
+ # If there are only static bootstrap listeners, this field will be ""
755
+ # Corresponds to the JSON property `versionInfo`
756
+ # @return [String]
757
+ attr_accessor :version_info
758
+
759
+ # The xDS resource config. Actual content depends on the type
760
+ # Corresponds to the JSON property `xdsConfig`
761
+ # @return [Hash<String,Object>]
762
+ attr_accessor :xds_config
763
+
764
+ def initialize(**args)
765
+ update!(**args)
766
+ end
767
+
768
+ # Update properties of this object
769
+ def update!(**args)
770
+ @client_status = args[:client_status] if args.key?(:client_status)
771
+ @config_status = args[:config_status] if args.key?(:config_status)
772
+ @error_state = args[:error_state] if args.key?(:error_state)
773
+ @is_static_resource = args[:is_static_resource] if args.key?(:is_static_resource)
774
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
775
+ @name = args[:name] if args.key?(:name)
776
+ @type_url = args[:type_url] if args.key?(:type_url)
777
+ @version_info = args[:version_info] if args.key?(:version_info)
778
+ @xds_config = args[:xds_config] if args.key?(:xds_config)
779
+ end
780
+ end
781
+
782
+ # Google's `RE2 `_ regex engine. The regex string must adhere to the documented `
783
+ # syntax `_. The engine is designed to complete execution in linear time as well
784
+ # as limit the amount of memory used. Envoy supports program size checking via
785
+ # runtime. The runtime keys ``re2.max_program_size.error_level`` and ``re2.
786
+ # max_program_size.warn_level`` can be set to integers as the maximum program
787
+ # size or complexity that a compiled regex can have before an exception is
788
+ # thrown or a warning is logged, respectively. ``re2.max_program_size.
789
+ # error_level`` defaults to 100, and ``re2.max_program_size.warn_level`` has no
790
+ # default if unset (will not check/log a warning). Envoy emits two stats for
791
+ # tracking the program size of regexes: the histogram ``re2.program_size``,
792
+ # which records the program size, and the counter ``re2.exceeded_warn_level``,
793
+ # which is incremented each time the program size exceeds the warn level
794
+ # threshold.
795
+ class GoogleRe2
796
+ include Google::Apis::Core::Hashable
797
+
798
+ # This field controls the RE2 "program size" which is a rough estimate of how
799
+ # complex a compiled regex is to evaluate. A regex that has a program size
800
+ # greater than the configured value will fail to compile. In this case, the
801
+ # configured max program size can be increased or the regex can be simplified.
802
+ # If not specified, the default is 100. This field is deprecated; regexp
803
+ # validation should be performed on the management server instead of being done
804
+ # by each individual client. .. note:: Although this field is deprecated, the
805
+ # program size will still be checked against the global ``re2.max_program_size.
806
+ # error_level`` runtime value.
807
+ # Corresponds to the JSON property `maxProgramSize`
808
+ # @return [Fixnum]
809
+ attr_accessor :max_program_size
810
+
811
+ def initialize(**args)
812
+ update!(**args)
813
+ end
814
+
815
+ # Update properties of this object
816
+ def update!(**args)
817
+ @max_program_size = args[:max_program_size] if args.key?(:max_program_size)
818
+ end
819
+ end
820
+
821
+ #
822
+ class InlineScopedRouteConfigs
823
+ include Google::Apis::Core::Hashable
824
+
825
+ # The timestamp when the scoped route config set was last updated.
826
+ # Corresponds to the JSON property `lastUpdated`
827
+ # @return [String]
828
+ attr_accessor :last_updated
829
+
830
+ # The name assigned to the scoped route configurations.
831
+ # Corresponds to the JSON property `name`
832
+ # @return [String]
833
+ attr_accessor :name
834
+
835
+ # The scoped route configurations.
836
+ # Corresponds to the JSON property `scopedRouteConfigs`
837
+ # @return [Array<Hash<String,Object>>]
838
+ attr_accessor :scoped_route_configs
839
+
840
+ def initialize(**args)
841
+ update!(**args)
842
+ end
843
+
844
+ # Update properties of this object
845
+ def update!(**args)
846
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
847
+ @name = args[:name] if args.key?(:name)
848
+ @scoped_route_configs = args[:scoped_route_configs] if args.key?(:scoped_route_configs)
849
+ end
850
+ end
851
+
852
+ # Specifies the way to match a list value.
853
+ class ListMatcher
854
+ include Google::Apis::Core::Hashable
855
+
856
+ # Specifies the way to match a ProtobufWkt::Value. Primitive values and
857
+ # ListValue are supported. StructValue is not supported and is always not
858
+ # matched. [#next-free-field: 7]
859
+ # Corresponds to the JSON property `oneOf`
860
+ # @return [Google::Apis::TrafficdirectorV3::ValueMatcher]
861
+ attr_accessor :one_of
862
+
863
+ def initialize(**args)
864
+ update!(**args)
865
+ end
866
+
867
+ # Update properties of this object
868
+ def update!(**args)
869
+ @one_of = args[:one_of] if args.key?(:one_of)
870
+ end
871
+ end
872
+
873
+ # Envoy's listener manager fills this message with all currently known listeners.
874
+ # Listener configuration information can be used to recreate an Envoy
875
+ # configuration by populating all listeners as static listeners or by returning
876
+ # them in a LDS response.
877
+ class ListenersConfigDump
878
+ include Google::Apis::Core::Hashable
879
+
880
+ # State for any warming, active, or draining listeners.
881
+ # Corresponds to the JSON property `dynamicListeners`
882
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicListener>]
883
+ attr_accessor :dynamic_listeners
884
+
885
+ # The statically loaded listener configs.
886
+ # Corresponds to the JSON property `staticListeners`
887
+ # @return [Array<Google::Apis::TrafficdirectorV3::StaticListener>]
888
+ attr_accessor :static_listeners
889
+
890
+ # This is the :ref:`version_info ` in the last processed LDS discovery response.
891
+ # If there are only static bootstrap listeners, this field will be "".
892
+ # Corresponds to the JSON property `versionInfo`
893
+ # @return [String]
894
+ attr_accessor :version_info
895
+
896
+ def initialize(**args)
897
+ update!(**args)
898
+ end
899
+
900
+ # Update properties of this object
901
+ def update!(**args)
902
+ @dynamic_listeners = args[:dynamic_listeners] if args.key?(:dynamic_listeners)
903
+ @static_listeners = args[:static_listeners] if args.key?(:static_listeners)
904
+ @version_info = args[:version_info] if args.key?(:version_info)
905
+ end
906
+ end
907
+
908
+ # Identifies location of where either Envoy runs or where upstream hosts run.
909
+ class Locality
910
+ include Google::Apis::Core::Hashable
911
+
912
+ # Region this :ref:`zone ` belongs to.
913
+ # Corresponds to the JSON property `region`
914
+ # @return [String]
915
+ attr_accessor :region
916
+
917
+ # When used for locality of upstream hosts, this field further splits zone into
918
+ # smaller chunks of sub-zones so they can be load balanced independently.
919
+ # Corresponds to the JSON property `subZone`
920
+ # @return [String]
921
+ attr_accessor :sub_zone
922
+
923
+ # Defines the local service zone where Envoy is running. Though optional, it
924
+ # should be set if discovery service routing is used and the discovery service
925
+ # exposes :ref:`zone data `, either in this message or via :option:`--service-
926
+ # zone`. The meaning of zone is context dependent, e.g. `Availability Zone (AZ) `
927
+ # _ on AWS, `Zone `_ on GCP, etc.
928
+ # Corresponds to the JSON property `zone`
929
+ # @return [String]
930
+ attr_accessor :zone
931
+
932
+ def initialize(**args)
933
+ update!(**args)
934
+ end
935
+
936
+ # Update properties of this object
937
+ def update!(**args)
938
+ @region = args[:region] if args.key?(:region)
939
+ @sub_zone = args[:sub_zone] if args.key?(:sub_zone)
940
+ @zone = args[:zone] if args.key?(:zone)
941
+ end
942
+ end
943
+
944
+ # Identifies a specific Envoy instance. The node identifier is presented to the
945
+ # management server, which may use this identifier to distinguish per Envoy
946
+ # configuration for serving. [#next-free-field: 13]
947
+ class Node
948
+ include Google::Apis::Core::Hashable
949
+
950
+ # Client feature support list. These are well known features described in the
951
+ # Envoy API repository for a given major version of an API. Client features use
952
+ # reverse DNS naming scheme, for example ``com.acme.feature``. See :ref:`the
953
+ # list of features ` that xDS client may support.
954
+ # Corresponds to the JSON property `clientFeatures`
955
+ # @return [Array<String>]
956
+ attr_accessor :client_features
957
+
958
+ # Defines the local service cluster name where Envoy is running. Though optional,
959
+ # it should be set if any of the following features are used: :ref:`statsd `, :
960
+ # ref:`health check cluster verification `, :ref:`runtime override directory `, :
961
+ # ref:`user agent addition `, :ref:`HTTP global rate limiting `, :ref:`CDS `,
962
+ # and :ref:`HTTP tracing `, either in this message or via :option:`--service-
963
+ # cluster`.
964
+ # Corresponds to the JSON property `cluster`
965
+ # @return [String]
966
+ attr_accessor :cluster
967
+
968
+ # Map from xDS resource type URL to dynamic context parameters. These may vary
969
+ # at runtime (unlike other fields in this message). For example, the xDS client
970
+ # may have a shard identifier that changes during the lifetime of the xDS client.
971
+ # In Envoy, this would be achieved by updating the dynamic context on the
972
+ # Server::Instance's LocalInfo context provider. The shard ID dynamic parameter
973
+ # then appears in this field during future discovery requests.
974
+ # Corresponds to the JSON property `dynamicParameters`
975
+ # @return [Hash<String,Google::Apis::TrafficdirectorV3::ContextParams>]
976
+ attr_accessor :dynamic_parameters
977
+
978
+ # List of extensions and their versions supported by the node.
979
+ # Corresponds to the JSON property `extensions`
980
+ # @return [Array<Google::Apis::TrafficdirectorV3::Extension>]
981
+ attr_accessor :extensions
982
+
983
+ # An opaque node identifier for the Envoy node. This also provides the local
984
+ # service node name. It should be set if any of the following features are used:
985
+ # :ref:`statsd `, :ref:`CDS `, and :ref:`HTTP tracing `, either in this message
986
+ # or via :option:`--service-node`.
987
+ # Corresponds to the JSON property `id`
988
+ # @return [String]
989
+ attr_accessor :id
990
+
991
+ # Known listening ports on the node as a generic hint to the management server
992
+ # for filtering :ref:`listeners ` to be returned. For example, if there is a
993
+ # listener bound to port 80, the list can optionally contain the SocketAddress ``
994
+ # (0.0.0.0,80)``. The field is optional and just a hint.
995
+ # Corresponds to the JSON property `listeningAddresses`
996
+ # @return [Array<Google::Apis::TrafficdirectorV3::Address>]
997
+ attr_accessor :listening_addresses
998
+
999
+ # Identifies location of where either Envoy runs or where upstream hosts run.
1000
+ # Corresponds to the JSON property `locality`
1001
+ # @return [Google::Apis::TrafficdirectorV3::Locality]
1002
+ attr_accessor :locality
1003
+
1004
+ # Opaque metadata extending the node identifier. Envoy will pass this directly
1005
+ # to the management server.
1006
+ # Corresponds to the JSON property `metadata`
1007
+ # @return [Hash<String,Object>]
1008
+ attr_accessor :metadata
1009
+
1010
+ # BuildVersion combines SemVer version of extension with free-form build
1011
+ # information (i.e. 'alpha', 'private-build') as a set of strings.
1012
+ # Corresponds to the JSON property `userAgentBuildVersion`
1013
+ # @return [Google::Apis::TrafficdirectorV3::BuildVersion]
1014
+ attr_accessor :user_agent_build_version
1015
+
1016
+ # Free-form string that identifies the entity requesting config. E.g. "envoy" or
1017
+ # "grpc"
1018
+ # Corresponds to the JSON property `userAgentName`
1019
+ # @return [String]
1020
+ attr_accessor :user_agent_name
1021
+
1022
+ # Free-form string that identifies the version of the entity requesting config.
1023
+ # E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"
1024
+ # Corresponds to the JSON property `userAgentVersion`
1025
+ # @return [String]
1026
+ attr_accessor :user_agent_version
1027
+
1028
+ def initialize(**args)
1029
+ update!(**args)
1030
+ end
1031
+
1032
+ # Update properties of this object
1033
+ def update!(**args)
1034
+ @client_features = args[:client_features] if args.key?(:client_features)
1035
+ @cluster = args[:cluster] if args.key?(:cluster)
1036
+ @dynamic_parameters = args[:dynamic_parameters] if args.key?(:dynamic_parameters)
1037
+ @extensions = args[:extensions] if args.key?(:extensions)
1038
+ @id = args[:id] if args.key?(:id)
1039
+ @listening_addresses = args[:listening_addresses] if args.key?(:listening_addresses)
1040
+ @locality = args[:locality] if args.key?(:locality)
1041
+ @metadata = args[:metadata] if args.key?(:metadata)
1042
+ @user_agent_build_version = args[:user_agent_build_version] if args.key?(:user_agent_build_version)
1043
+ @user_agent_name = args[:user_agent_name] if args.key?(:user_agent_name)
1044
+ @user_agent_version = args[:user_agent_version] if args.key?(:user_agent_version)
1045
+ end
1046
+ end
1047
+
1048
+ # Specifies the way to match a Node. The match follows AND semantics.
1049
+ class NodeMatcher
1050
+ include Google::Apis::Core::Hashable
1051
+
1052
+ # Specifies the way to match a string. [#next-free-field: 8]
1053
+ # Corresponds to the JSON property `nodeId`
1054
+ # @return [Google::Apis::TrafficdirectorV3::StringMatcher]
1055
+ attr_accessor :node_id
1056
+
1057
+ # Specifies match criteria on the node metadata.
1058
+ # Corresponds to the JSON property `nodeMetadatas`
1059
+ # @return [Array<Google::Apis::TrafficdirectorV3::StructMatcher>]
1060
+ attr_accessor :node_metadatas
1061
+
1062
+ def initialize(**args)
1063
+ update!(**args)
1064
+ end
1065
+
1066
+ # Update properties of this object
1067
+ def update!(**args)
1068
+ @node_id = args[:node_id] if args.key?(:node_id)
1069
+ @node_metadatas = args[:node_metadatas] if args.key?(:node_metadatas)
1070
+ end
1071
+ end
1072
+
1073
+ # NullMatch is an empty message to specify a null value.
1074
+ class NullMatch
1075
+ include Google::Apis::Core::Hashable
1076
+
1077
+ def initialize(**args)
1078
+ update!(**args)
1079
+ end
1080
+
1081
+ # Update properties of this object
1082
+ def update!(**args)
1083
+ end
1084
+ end
1085
+
1086
+ # Specifies the segment in a path to retrieve value from Struct.
1087
+ class PathSegment
1088
+ include Google::Apis::Core::Hashable
1089
+
1090
+ # If specified, use the key to retrieve the value in a Struct.
1091
+ # Corresponds to the JSON property `key`
1092
+ # @return [String]
1093
+ attr_accessor :key
1094
+
1095
+ def initialize(**args)
1096
+ update!(**args)
1097
+ end
1098
+
1099
+ # Update properties of this object
1100
+ def update!(**args)
1101
+ @key = args[:key] if args.key?(:key)
1102
+ end
1103
+ end
1104
+
1105
+ # Detailed config (per xDS) with status. [#next-free-field: 8]
1106
+ class PerXdsConfig
1107
+ include Google::Apis::Core::Hashable
1108
+
1109
+ # Client config status is populated by xDS clients. Will not be present if the
1110
+ # CSDS server is an xDS server. No matter what the client config status is, xDS
1111
+ # clients should always dump the most recent accepted xDS config. .. attention::
1112
+ # This field is deprecated. Use :ref:`ClientResourceStatus ` for per-resource
1113
+ # config status instead.
1114
+ # Corresponds to the JSON property `clientStatus`
1115
+ # @return [String]
1116
+ attr_accessor :client_status
1117
+
1118
+ # Envoy's cluster manager fills this message with all currently known clusters.
1119
+ # Cluster configuration information can be used to recreate an Envoy
1120
+ # configuration by populating all clusters as static clusters or by returning
1121
+ # them in a CDS response.
1122
+ # Corresponds to the JSON property `clusterConfig`
1123
+ # @return [Google::Apis::TrafficdirectorV3::ClustersConfigDump]
1124
+ attr_accessor :cluster_config
1125
+
1126
+ # Envoy's admin fill this message with all currently known endpoints. Endpoint
1127
+ # configuration information can be used to recreate an Envoy configuration by
1128
+ # populating all endpoints as static endpoints or by returning them in an EDS
1129
+ # response.
1130
+ # Corresponds to the JSON property `endpointConfig`
1131
+ # @return [Google::Apis::TrafficdirectorV3::EndpointsConfigDump]
1132
+ attr_accessor :endpoint_config
1133
+
1134
+ # Envoy's listener manager fills this message with all currently known listeners.
1135
+ # Listener configuration information can be used to recreate an Envoy
1136
+ # configuration by populating all listeners as static listeners or by returning
1137
+ # them in a LDS response.
1138
+ # Corresponds to the JSON property `listenerConfig`
1139
+ # @return [Google::Apis::TrafficdirectorV3::ListenersConfigDump]
1140
+ attr_accessor :listener_config
1141
+
1142
+ # Envoy's RDS implementation fills this message with all currently loaded routes,
1143
+ # as described by their RouteConfiguration objects. Static routes that are
1144
+ # either defined in the bootstrap configuration or defined inline while
1145
+ # configuring listeners are separated from those configured dynamically via RDS.
1146
+ # Route configuration information can be used to recreate an Envoy configuration
1147
+ # by populating all routes as static routes or by returning them in RDS
1148
+ # responses.
1149
+ # Corresponds to the JSON property `routeConfig`
1150
+ # @return [Google::Apis::TrafficdirectorV3::RoutesConfigDump]
1151
+ attr_accessor :route_config
1152
+
1153
+ # Envoy's scoped RDS implementation fills this message with all currently loaded
1154
+ # route configuration scopes (defined via ScopedRouteConfigurationsSet protos).
1155
+ # This message lists both the scopes defined inline with the higher order object
1156
+ # (i.e., the HttpConnectionManager) and the dynamically obtained scopes via the
1157
+ # SRDS API.
1158
+ # Corresponds to the JSON property `scopedRouteConfig`
1159
+ # @return [Google::Apis::TrafficdirectorV3::ScopedRoutesConfigDump]
1160
+ attr_accessor :scoped_route_config
1161
+
1162
+ # Config status generated by management servers. Will not be present if the CSDS
1163
+ # server is an xDS client.
1164
+ # Corresponds to the JSON property `status`
1165
+ # @return [String]
1166
+ attr_accessor :status
1167
+
1168
+ def initialize(**args)
1169
+ update!(**args)
1170
+ end
1171
+
1172
+ # Update properties of this object
1173
+ def update!(**args)
1174
+ @client_status = args[:client_status] if args.key?(:client_status)
1175
+ @cluster_config = args[:cluster_config] if args.key?(:cluster_config)
1176
+ @endpoint_config = args[:endpoint_config] if args.key?(:endpoint_config)
1177
+ @listener_config = args[:listener_config] if args.key?(:listener_config)
1178
+ @route_config = args[:route_config] if args.key?(:route_config)
1179
+ @scoped_route_config = args[:scoped_route_config] if args.key?(:scoped_route_config)
1180
+ @status = args[:status] if args.key?(:status)
1181
+ end
1182
+ end
1183
+
1184
+ #
1185
+ class Pipe
1186
+ include Google::Apis::Core::Hashable
1187
+
1188
+ # The mode for the Pipe. Not applicable for abstract sockets.
1189
+ # Corresponds to the JSON property `mode`
1190
+ # @return [Fixnum]
1191
+ attr_accessor :mode
1192
+
1193
+ # Unix Domain Socket path. On Linux, paths starting with '@' will use the
1194
+ # abstract namespace. The starting '@' is replaced by a null byte by Envoy.
1195
+ # Paths starting with '@' will result in an error in environments other than
1196
+ # Linux.
1197
+ # Corresponds to the JSON property `path`
1198
+ # @return [String]
1199
+ attr_accessor :path
1200
+
1201
+ def initialize(**args)
1202
+ update!(**args)
1203
+ end
1204
+
1205
+ # Update properties of this object
1206
+ def update!(**args)
1207
+ @mode = args[:mode] if args.key?(:mode)
1208
+ @path = args[:path] if args.key?(:path)
1209
+ end
1210
+ end
1211
+
1212
+ # A regex matcher designed for safety when used with untrusted input.
1213
+ class RegexMatcher
1214
+ include Google::Apis::Core::Hashable
1215
+
1216
+ # Google's `RE2 `_ regex engine. The regex string must adhere to the documented `
1217
+ # syntax `_. The engine is designed to complete execution in linear time as well
1218
+ # as limit the amount of memory used. Envoy supports program size checking via
1219
+ # runtime. The runtime keys ``re2.max_program_size.error_level`` and ``re2.
1220
+ # max_program_size.warn_level`` can be set to integers as the maximum program
1221
+ # size or complexity that a compiled regex can have before an exception is
1222
+ # thrown or a warning is logged, respectively. ``re2.max_program_size.
1223
+ # error_level`` defaults to 100, and ``re2.max_program_size.warn_level`` has no
1224
+ # default if unset (will not check/log a warning). Envoy emits two stats for
1225
+ # tracking the program size of regexes: the histogram ``re2.program_size``,
1226
+ # which records the program size, and the counter ``re2.exceeded_warn_level``,
1227
+ # which is incremented each time the program size exceeds the warn level
1228
+ # threshold.
1229
+ # Corresponds to the JSON property `googleRe2`
1230
+ # @return [Google::Apis::TrafficdirectorV3::GoogleRe2]
1231
+ attr_accessor :google_re2
1232
+
1233
+ # The regex match string. The string must be supported by the configured engine.
1234
+ # The regex is matched against the full string, not as a partial match.
1235
+ # Corresponds to the JSON property `regex`
1236
+ # @return [String]
1237
+ attr_accessor :regex
1238
+
1239
+ def initialize(**args)
1240
+ update!(**args)
1241
+ end
1242
+
1243
+ # Update properties of this object
1244
+ def update!(**args)
1245
+ @google_re2 = args[:google_re2] if args.key?(:google_re2)
1246
+ @regex = args[:regex] if args.key?(:regex)
1247
+ end
1248
+ end
1249
+
1250
+ # Envoy's RDS implementation fills this message with all currently loaded routes,
1251
+ # as described by their RouteConfiguration objects. Static routes that are
1252
+ # either defined in the bootstrap configuration or defined inline while
1253
+ # configuring listeners are separated from those configured dynamically via RDS.
1254
+ # Route configuration information can be used to recreate an Envoy configuration
1255
+ # by populating all routes as static routes or by returning them in RDS
1256
+ # responses.
1257
+ class RoutesConfigDump
1258
+ include Google::Apis::Core::Hashable
1259
+
1260
+ # The dynamically loaded route configs.
1261
+ # Corresponds to the JSON property `dynamicRouteConfigs`
1262
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicRouteConfig>]
1263
+ attr_accessor :dynamic_route_configs
1264
+
1265
+ # The statically loaded route configs.
1266
+ # Corresponds to the JSON property `staticRouteConfigs`
1267
+ # @return [Array<Google::Apis::TrafficdirectorV3::StaticRouteConfig>]
1268
+ attr_accessor :static_route_configs
1269
+
1270
+ def initialize(**args)
1271
+ update!(**args)
1272
+ end
1273
+
1274
+ # Update properties of this object
1275
+ def update!(**args)
1276
+ @dynamic_route_configs = args[:dynamic_route_configs] if args.key?(:dynamic_route_configs)
1277
+ @static_route_configs = args[:static_route_configs] if args.key?(:static_route_configs)
1278
+ end
1279
+ end
1280
+
1281
+ # Envoy's scoped RDS implementation fills this message with all currently loaded
1282
+ # route configuration scopes (defined via ScopedRouteConfigurationsSet protos).
1283
+ # This message lists both the scopes defined inline with the higher order object
1284
+ # (i.e., the HttpConnectionManager) and the dynamically obtained scopes via the
1285
+ # SRDS API.
1286
+ class ScopedRoutesConfigDump
1287
+ include Google::Apis::Core::Hashable
1288
+
1289
+ # The dynamically loaded scoped route configs.
1290
+ # Corresponds to the JSON property `dynamicScopedRouteConfigs`
1291
+ # @return [Array<Google::Apis::TrafficdirectorV3::DynamicScopedRouteConfigs>]
1292
+ attr_accessor :dynamic_scoped_route_configs
1293
+
1294
+ # The statically loaded scoped route configs.
1295
+ # Corresponds to the JSON property `inlineScopedRouteConfigs`
1296
+ # @return [Array<Google::Apis::TrafficdirectorV3::InlineScopedRouteConfigs>]
1297
+ attr_accessor :inline_scoped_route_configs
1298
+
1299
+ def initialize(**args)
1300
+ update!(**args)
1301
+ end
1302
+
1303
+ # Update properties of this object
1304
+ def update!(**args)
1305
+ @dynamic_scoped_route_configs = args[:dynamic_scoped_route_configs] if args.key?(:dynamic_scoped_route_configs)
1306
+ @inline_scoped_route_configs = args[:inline_scoped_route_configs] if args.key?(:inline_scoped_route_configs)
1307
+ end
1308
+ end
1309
+
1310
+ # Envoy uses SemVer (https://semver.org/). Major/minor versions indicate
1311
+ # expected behaviors and APIs, the patch version field is used only for security
1312
+ # fixes and can be generally ignored.
1313
+ class SemanticVersion
1314
+ include Google::Apis::Core::Hashable
1315
+
1316
+ #
1317
+ # Corresponds to the JSON property `majorNumber`
1318
+ # @return [Fixnum]
1319
+ attr_accessor :major_number
1320
+
1321
+ #
1322
+ # Corresponds to the JSON property `minorNumber`
1323
+ # @return [Fixnum]
1324
+ attr_accessor :minor_number
1325
+
1326
+ #
1327
+ # Corresponds to the JSON property `patch`
1328
+ # @return [Fixnum]
1329
+ attr_accessor :patch
1330
+
1331
+ def initialize(**args)
1332
+ update!(**args)
1333
+ end
1334
+
1335
+ # Update properties of this object
1336
+ def update!(**args)
1337
+ @major_number = args[:major_number] if args.key?(:major_number)
1338
+ @minor_number = args[:minor_number] if args.key?(:minor_number)
1339
+ @patch = args[:patch] if args.key?(:patch)
1340
+ end
1341
+ end
1342
+
1343
+ # [#next-free-field: 7]
1344
+ class SocketAddress
1345
+ include Google::Apis::Core::Hashable
1346
+
1347
+ # The address for this socket. :ref:`Listeners ` will bind to the address. An
1348
+ # empty address is not allowed. Specify ``0.0.0.0`` or ``::`` to bind to any
1349
+ # address. [#comment:TODO(zuercher) reinstate when implemented: It is possible
1350
+ # to distinguish a Listener address via the prefix/suffix matching in :ref:`
1351
+ # FilterChainMatch `.] When used within an upstream :ref:`BindConfig `, the
1352
+ # address controls the source address of outbound connections. For :ref:`
1353
+ # clusters `, the cluster type determines whether the address must be an IP (``
1354
+ # STATIC`` or ``EDS`` clusters) or a hostname resolved by DNS (``STRICT_DNS`` or
1355
+ # ``LOGICAL_DNS`` clusters). Address resolution can be customized via :ref:`
1356
+ # resolver_name `.
1357
+ # Corresponds to the JSON property `address`
1358
+ # @return [String]
1359
+ attr_accessor :address
1360
+
1361
+ # When binding to an IPv6 address above, this enables `IPv4 compatibility `_.
1362
+ # Binding to ``::`` will allow both IPv4 and IPv6 connections, with peer IPv4
1363
+ # addresses mapped into IPv6 space as ``::FFFF:``.
1364
+ # Corresponds to the JSON property `ipv4Compat`
1365
+ # @return [Boolean]
1366
+ attr_accessor :ipv4_compat
1367
+ alias_method :ipv4_compat?, :ipv4_compat
1368
+
1369
+ # This is only valid if :ref:`resolver_name ` is specified below and the named
1370
+ # resolver is capable of named port resolution.
1371
+ # Corresponds to the JSON property `namedPort`
1372
+ # @return [String]
1373
+ attr_accessor :named_port
1374
+
1375
+ #
1376
+ # Corresponds to the JSON property `portValue`
1377
+ # @return [Fixnum]
1378
+ attr_accessor :port_value
1379
+
1380
+ #
1381
+ # Corresponds to the JSON property `protocol`
1382
+ # @return [String]
1383
+ attr_accessor :protocol
1384
+
1385
+ # The name of the custom resolver. This must have been registered with Envoy. If
1386
+ # this is empty, a context dependent default applies. If the address is a
1387
+ # concrete IP address, no resolution will occur. If address is a hostname this
1388
+ # should be set for resolution other than DNS. Specifying a custom resolver with
1389
+ # ``STRICT_DNS`` or ``LOGICAL_DNS`` will generate an error at runtime.
1390
+ # Corresponds to the JSON property `resolverName`
1391
+ # @return [String]
1392
+ attr_accessor :resolver_name
1393
+
1394
+ def initialize(**args)
1395
+ update!(**args)
1396
+ end
1397
+
1398
+ # Update properties of this object
1399
+ def update!(**args)
1400
+ @address = args[:address] if args.key?(:address)
1401
+ @ipv4_compat = args[:ipv4_compat] if args.key?(:ipv4_compat)
1402
+ @named_port = args[:named_port] if args.key?(:named_port)
1403
+ @port_value = args[:port_value] if args.key?(:port_value)
1404
+ @protocol = args[:protocol] if args.key?(:protocol)
1405
+ @resolver_name = args[:resolver_name] if args.key?(:resolver_name)
1406
+ end
1407
+ end
1408
+
1409
+ # Describes a statically loaded cluster.
1410
+ class StaticCluster
1411
+ include Google::Apis::Core::Hashable
1412
+
1413
+ # The cluster config.
1414
+ # Corresponds to the JSON property `cluster`
1415
+ # @return [Hash<String,Object>]
1416
+ attr_accessor :cluster
1417
+
1418
+ # The timestamp when the Cluster was last updated.
1419
+ # Corresponds to the JSON property `lastUpdated`
1420
+ # @return [String]
1421
+ attr_accessor :last_updated
1422
+
1423
+ def initialize(**args)
1424
+ update!(**args)
1425
+ end
1426
+
1427
+ # Update properties of this object
1428
+ def update!(**args)
1429
+ @cluster = args[:cluster] if args.key?(:cluster)
1430
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
1431
+ end
1432
+ end
1433
+
1434
+ #
1435
+ class StaticEndpointConfig
1436
+ include Google::Apis::Core::Hashable
1437
+
1438
+ # The endpoint config.
1439
+ # Corresponds to the JSON property `endpointConfig`
1440
+ # @return [Hash<String,Object>]
1441
+ attr_accessor :endpoint_config
1442
+
1443
+ # [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
1444
+ # Corresponds to the JSON property `lastUpdated`
1445
+ # @return [String]
1446
+ attr_accessor :last_updated
1447
+
1448
+ def initialize(**args)
1449
+ update!(**args)
1450
+ end
1451
+
1452
+ # Update properties of this object
1453
+ def update!(**args)
1454
+ @endpoint_config = args[:endpoint_config] if args.key?(:endpoint_config)
1455
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
1456
+ end
1457
+ end
1458
+
1459
+ # Describes a statically loaded listener.
1460
+ class StaticListener
1461
+ include Google::Apis::Core::Hashable
1462
+
1463
+ # The timestamp when the Listener was last successfully updated.
1464
+ # Corresponds to the JSON property `lastUpdated`
1465
+ # @return [String]
1466
+ attr_accessor :last_updated
1467
+
1468
+ # The listener config.
1469
+ # Corresponds to the JSON property `listener`
1470
+ # @return [Hash<String,Object>]
1471
+ attr_accessor :listener
1472
+
1473
+ def initialize(**args)
1474
+ update!(**args)
1475
+ end
1476
+
1477
+ # Update properties of this object
1478
+ def update!(**args)
1479
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
1480
+ @listener = args[:listener] if args.key?(:listener)
1481
+ end
1482
+ end
1483
+
1484
+ #
1485
+ class StaticRouteConfig
1486
+ include Google::Apis::Core::Hashable
1487
+
1488
+ # The timestamp when the Route was last updated.
1489
+ # Corresponds to the JSON property `lastUpdated`
1490
+ # @return [String]
1491
+ attr_accessor :last_updated
1492
+
1493
+ # The route config.
1494
+ # Corresponds to the JSON property `routeConfig`
1495
+ # @return [Hash<String,Object>]
1496
+ attr_accessor :route_config
1497
+
1498
+ def initialize(**args)
1499
+ update!(**args)
1500
+ end
1501
+
1502
+ # Update properties of this object
1503
+ def update!(**args)
1504
+ @last_updated = args[:last_updated] if args.key?(:last_updated)
1505
+ @route_config = args[:route_config] if args.key?(:route_config)
1506
+ end
1507
+ end
1508
+
1509
+ # Specifies the way to match a string. [#next-free-field: 8]
1510
+ class StringMatcher
1511
+ include Google::Apis::Core::Hashable
1512
+
1513
+ # The input string must have the substring specified here. Note: empty contains
1514
+ # match is not allowed, please use regex instead. Examples: * ``abc`` matches
1515
+ # the value ``xyz.abc.def``
1516
+ # Corresponds to the JSON property `contains`
1517
+ # @return [String]
1518
+ attr_accessor :contains
1519
+
1520
+ # The input string must match exactly the string specified here. Examples: * ``
1521
+ # abc`` only matches the value ``abc``.
1522
+ # Corresponds to the JSON property `exact`
1523
+ # @return [String]
1524
+ attr_accessor :exact
1525
+
1526
+ # If true, indicates the exact/prefix/suffix/contains matching should be case
1527
+ # insensitive. This has no effect for the safe_regex match. For example, the
1528
+ # matcher ``data`` will match both input string ``Data`` and ``data`` if set to
1529
+ # true.
1530
+ # Corresponds to the JSON property `ignoreCase`
1531
+ # @return [Boolean]
1532
+ attr_accessor :ignore_case
1533
+ alias_method :ignore_case?, :ignore_case
1534
+
1535
+ # The input string must have the prefix specified here. Note: empty prefix is
1536
+ # not allowed, please use regex instead. Examples: * ``abc`` matches the value ``
1537
+ # abc.xyz``
1538
+ # Corresponds to the JSON property `prefix`
1539
+ # @return [String]
1540
+ attr_accessor :prefix
1541
+
1542
+ # A regex matcher designed for safety when used with untrusted input.
1543
+ # Corresponds to the JSON property `safeRegex`
1544
+ # @return [Google::Apis::TrafficdirectorV3::RegexMatcher]
1545
+ attr_accessor :safe_regex
1546
+
1547
+ # The input string must have the suffix specified here. Note: empty prefix is
1548
+ # not allowed, please use regex instead. Examples: * ``abc`` matches the value ``
1549
+ # xyz.abc``
1550
+ # Corresponds to the JSON property `suffix`
1551
+ # @return [String]
1552
+ attr_accessor :suffix
1553
+
1554
+ def initialize(**args)
1555
+ update!(**args)
1556
+ end
1557
+
1558
+ # Update properties of this object
1559
+ def update!(**args)
1560
+ @contains = args[:contains] if args.key?(:contains)
1561
+ @exact = args[:exact] if args.key?(:exact)
1562
+ @ignore_case = args[:ignore_case] if args.key?(:ignore_case)
1563
+ @prefix = args[:prefix] if args.key?(:prefix)
1564
+ @safe_regex = args[:safe_regex] if args.key?(:safe_regex)
1565
+ @suffix = args[:suffix] if args.key?(:suffix)
1566
+ end
1567
+ end
1568
+
1569
+ # StructMatcher provides a general interface to check if a given value is
1570
+ # matched in google.protobuf.Struct. It uses ``path`` to retrieve the value from
1571
+ # the struct and then check if it's matched to the specified value. For example,
1572
+ # for the following Struct: .. code-block:: yaml fields: a: struct_value: fields:
1573
+ # b: struct_value: fields: c: string_value: pro t: list_value: values: -
1574
+ # string_value: m - string_value: n The following MetadataMatcher is matched as
1575
+ # the path [a, b, c] will retrieve a string value "pro" from the Metadata which
1576
+ # is matched to the specified prefix match. .. code-block:: yaml path: - key: a -
1577
+ # key: b - key: c value: string_match: prefix: pr The following StructMatcher
1578
+ # is matched as the code will match one of the string values in the list at the
1579
+ # path [a, t]. .. code-block:: yaml path: - key: a - key: t value: list_match:
1580
+ # one_of: string_match: exact: m An example use of StructMatcher is to match
1581
+ # metadata in envoy.v*.core.Node.
1582
+ class StructMatcher
1583
+ include Google::Apis::Core::Hashable
1584
+
1585
+ # The path to retrieve the Value from the Struct.
1586
+ # Corresponds to the JSON property `path`
1587
+ # @return [Array<Google::Apis::TrafficdirectorV3::PathSegment>]
1588
+ attr_accessor :path
1589
+
1590
+ # Specifies the way to match a ProtobufWkt::Value. Primitive values and
1591
+ # ListValue are supported. StructValue is not supported and is always not
1592
+ # matched. [#next-free-field: 7]
1593
+ # Corresponds to the JSON property `value`
1594
+ # @return [Google::Apis::TrafficdirectorV3::ValueMatcher]
1595
+ attr_accessor :value
1596
+
1597
+ def initialize(**args)
1598
+ update!(**args)
1599
+ end
1600
+
1601
+ # Update properties of this object
1602
+ def update!(**args)
1603
+ @path = args[:path] if args.key?(:path)
1604
+ @value = args[:value] if args.key?(:value)
1605
+ end
1606
+ end
1607
+
1608
+ #
1609
+ class UpdateFailureState
1610
+ include Google::Apis::Core::Hashable
1611
+
1612
+ # Details about the last failed update attempt.
1613
+ # Corresponds to the JSON property `details`
1614
+ # @return [String]
1615
+ attr_accessor :details
1616
+
1617
+ # What the component configuration would have been if the update had succeeded.
1618
+ # This field may not be populated by xDS clients due to storage overhead.
1619
+ # Corresponds to the JSON property `failedConfiguration`
1620
+ # @return [Hash<String,Object>]
1621
+ attr_accessor :failed_configuration
1622
+
1623
+ # Time of the latest failed update attempt.
1624
+ # Corresponds to the JSON property `lastUpdateAttempt`
1625
+ # @return [String]
1626
+ attr_accessor :last_update_attempt
1627
+
1628
+ # This is the version of the rejected resource. [#not-implemented-hide:]
1629
+ # Corresponds to the JSON property `versionInfo`
1630
+ # @return [String]
1631
+ attr_accessor :version_info
1632
+
1633
+ def initialize(**args)
1634
+ update!(**args)
1635
+ end
1636
+
1637
+ # Update properties of this object
1638
+ def update!(**args)
1639
+ @details = args[:details] if args.key?(:details)
1640
+ @failed_configuration = args[:failed_configuration] if args.key?(:failed_configuration)
1641
+ @last_update_attempt = args[:last_update_attempt] if args.key?(:last_update_attempt)
1642
+ @version_info = args[:version_info] if args.key?(:version_info)
1643
+ end
1644
+ end
1645
+
1646
+ # Specifies the way to match a ProtobufWkt::Value. Primitive values and
1647
+ # ListValue are supported. StructValue is not supported and is always not
1648
+ # matched. [#next-free-field: 7]
1649
+ class ValueMatcher
1650
+ include Google::Apis::Core::Hashable
1651
+
1652
+ # If specified, a match occurs if and only if the target value is a bool value
1653
+ # and is equal to this field.
1654
+ # Corresponds to the JSON property `boolMatch`
1655
+ # @return [Boolean]
1656
+ attr_accessor :bool_match
1657
+ alias_method :bool_match?, :bool_match
1658
+
1659
+ # Specifies the way to match a double value.
1660
+ # Corresponds to the JSON property `doubleMatch`
1661
+ # @return [Google::Apis::TrafficdirectorV3::DoubleMatcher]
1662
+ attr_accessor :double_match
1663
+
1664
+ # Specifies the way to match a list value.
1665
+ # Corresponds to the JSON property `listMatch`
1666
+ # @return [Google::Apis::TrafficdirectorV3::ListMatcher]
1667
+ attr_accessor :list_match
1668
+
1669
+ # NullMatch is an empty message to specify a null value.
1670
+ # Corresponds to the JSON property `nullMatch`
1671
+ # @return [Google::Apis::TrafficdirectorV3::NullMatch]
1672
+ attr_accessor :null_match
1673
+
1674
+ # If specified, value match will be performed based on whether the path is
1675
+ # referring to a valid primitive value in the metadata. If the path is referring
1676
+ # to a non-primitive value, the result is always not matched.
1677
+ # Corresponds to the JSON property `presentMatch`
1678
+ # @return [Boolean]
1679
+ attr_accessor :present_match
1680
+ alias_method :present_match?, :present_match
1681
+
1682
+ # Specifies the way to match a string. [#next-free-field: 8]
1683
+ # Corresponds to the JSON property `stringMatch`
1684
+ # @return [Google::Apis::TrafficdirectorV3::StringMatcher]
1685
+ attr_accessor :string_match
1686
+
1687
+ def initialize(**args)
1688
+ update!(**args)
1689
+ end
1690
+
1691
+ # Update properties of this object
1692
+ def update!(**args)
1693
+ @bool_match = args[:bool_match] if args.key?(:bool_match)
1694
+ @double_match = args[:double_match] if args.key?(:double_match)
1695
+ @list_match = args[:list_match] if args.key?(:list_match)
1696
+ @null_match = args[:null_match] if args.key?(:null_match)
1697
+ @present_match = args[:present_match] if args.key?(:present_match)
1698
+ @string_match = args[:string_match] if args.key?(:string_match)
1699
+ end
1700
+ end
1701
+ end
1702
+ end
1703
+ end