google-apis-trafficdirector_v3 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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