Class: Google::Cloud::NetworkServices::V1::GrpcRoute

Inherits:
Object
  • Object
show all
Extended by:
Protobuf::MessageExts::ClassMethods
Includes:
Protobuf::MessageExts
Defined in:
proto_docs/google/cloud/networkservices/v1/grpc_route.rb

Overview

GrpcRoute is the resource defining how gRPC traffic routed by a Mesh or Gateway resource is routed.

Defined Under Namespace

Classes: Destination, FaultInjectionPolicy, HeaderMatch, LabelsEntry, MethodMatch, RetryPolicy, RouteAction, RouteMatch, RouteRule

Instance Attribute Summary collapse

Instance Attribute Details

#create_time::Google::Protobuf::Timestamp (readonly)

Returns Output only. The timestamp when the resource was created.

Returns:



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#description::String

Returns Optional. A free-text description of the resource. Max length 1024 characters.

Returns:

  • (::String)

    Optional. A free-text description of the resource. Max length 1024 characters.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#gateways::Array<::String>

Returns Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway.

Each gateway reference should match the pattern: projects/*/locations/global/gateways/<gateway_name>.

Returns:

  • (::Array<::String>)

    Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway.

    Each gateway reference should match the pattern: projects/*/locations/global/gateways/<gateway_name>



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#hostnames::Array<::String>

Returns Required. Service hostnames with an optional port for which this route describes traffic.

Format: [:]

Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions:

  • IPs are not allowed.
  • A hostname may be prefixed with a wildcard label (*.). The wildcard label must appear by itself as the first label.

Hostname can be "precise" which is a domain name without the terminating dot of a network host (e.g. foo.example.com) or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. *.example.com).

Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed.

The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected.

For example, while it is acceptable for routes for the hostnames *.foo.bar.com and *.bar.com to be associated with the same route, it is not possible to associate two routes both with *.bar.com or both with bar.com.

If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. "xds:///service:123"), otherwise they must supply the URI without a port (i.e. "xds:///service").

Returns:

  • (::Array<::String>)

    Required. Service hostnames with an optional port for which this route describes traffic.

    Format: [:]

    Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions:

    • IPs are not allowed.
    • A hostname may be prefixed with a wildcard label (*.). The wildcard label must appear by itself as the first label.

    Hostname can be "precise" which is a domain name without the terminating dot of a network host (e.g. foo.example.com) or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. *.example.com).

    Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed.

    The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected.

    For example, while it is acceptable for routes for the hostnames *.foo.bar.com and *.bar.com to be associated with the same route, it is not possible to associate two routes both with *.bar.com or both with bar.com.

    If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. "xds:///service:123"), otherwise they must supply the URI without a port (i.e. "xds:///service").



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#labels::Google::Protobuf::Map{::String => ::String}

Returns Optional. Set of label tags associated with the GrpcRoute resource.

Returns:

  • (::Google::Protobuf::Map{::String => ::String})

    Optional. Set of label tags associated with the GrpcRoute resource.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#meshes::Array<::String>

Returns Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh.

Each mesh reference should match the pattern: projects/*/locations/global/meshes/<mesh_name>.

Returns:

  • (::Array<::String>)

    Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh.

    Each mesh reference should match the pattern: projects/*/locations/global/meshes/<mesh_name>



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#name::String

Returns Required. Name of the GrpcRoute resource. It matches pattern projects/*/locations/global/grpcRoutes/<grpc_route_name>.

Returns:

  • (::String)

    Required. Name of the GrpcRoute resource. It matches pattern projects/*/locations/global/grpcRoutes/<grpc_route_name>



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#rules::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteRule>

Returns Required. A list of detailed rules defining how to route traffic.

Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied.

Returns:

  • (::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteRule>)

    Required. A list of detailed rules defining how to route traffic.

    Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

Returns Output only. Server-defined URL of this resource.

Returns:

  • (::String)

    Output only. Server-defined URL of this resource



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end

#update_time::Google::Protobuf::Timestamp (readonly)

Returns Output only. The timestamp when the resource was updated.

Returns:



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'proto_docs/google/cloud/networkservices/v1/grpc_route.rb', line 101

class GrpcRoute
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Specifies a match against a method.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch::Type]
  #     Optional. Specifies how to match against the name. If not specified, a
  #     default value of "EXACT" is used.
  # @!attribute [rw] grpc_service
  #   @return [::String]
  #     Required. Name of the service to match against. If unspecified, will
  #     match all services.
  # @!attribute [rw] grpc_method
  #   @return [::String]
  #     Required. Name of the method to match against. If unspecified, will match
  #     all methods.
  # @!attribute [rw] case_sensitive
  #   @return [::Boolean]
  #     Optional. Specifies that matches are case sensitive.  The default value
  #     is true. case_sensitive must not be used with a type of
  #     REGULAR_EXPRESSION.
  class MethodMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of the match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact name provided.
      EXACT = 1

      # Will interpret grpc_method and grpc_service as regexes. RE2 syntax is
      # supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # A match against a collection of headers.
  # @!attribute [rw] type
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch::Type]
  #     Optional. Specifies how to match against the value of the header. If not
  #     specified, a default value of EXACT is used.
  # @!attribute [rw] key
  #   @return [::String]
  #     Required. The key of the header.
  # @!attribute [rw] value
  #   @return [::String]
  #     Required. The value of the header.
  class HeaderMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # The type of match.
    module Type
      # Unspecified.
      TYPE_UNSPECIFIED = 0

      # Will only match the exact value provided.
      EXACT = 1

      # Will match paths conforming to the prefix specified by value. RE2
      # syntax is supported.
      REGULAR_EXPRESSION = 2
    end
  end

  # Criteria for matching traffic. A RouteMatch will be considered to match
  # when all supplied fields match.
  # @!attribute [rw] method
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::MethodMatch]
  #     Optional. A gRPC method to match against. If this field is empty or
  #     omitted, will match all methods.
  # @!attribute [rw] headers
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::HeaderMatch>]
  #     Optional. Specifies a collection of headers to match.
  class RouteMatch
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The destination to which traffic will be routed.
  # @!attribute [rw] service_name
  #   @return [::String]
  #     Required. The URL of a destination service to which to route traffic.
  #     Must refer to either a BackendService or ServiceDirectoryService.
  # @!attribute [rw] weight
  #   @return [::Integer]
  #     Optional. Specifies the proportion of requests forwarded to the backend
  #     referenced by the serviceName field. This is computed as:
  #     - weight/Sum(weights in this destination list).
  #     For non-zero values, there may be some epsilon from the exact proportion
  #     defined here depending on the precision an implementation supports.
  #
  #     If only one serviceName is specified and it has a weight greater than 0,
  #     100% of the traffic is forwarded to that backend.
  #
  #     If weights are specified for any one service name, they need to be
  #     specified for all of them.
  #
  #     If weights are unspecified for all services, then, traffic is distributed
  #     in equal proportions to all of them.
  class Destination
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The specification for fault injection introduced into traffic to test the
  # resiliency of clients to destination service failure. As part of fault
  # injection, when clients send requests to a destination, delays can be
  # introduced on a percentage of requests before sending those requests to the
  # destination service. Similarly requests from clients can be aborted by for
  # a percentage of requests.
  # @!attribute [rw] delay
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Delay]
  #     The specification for injecting delay to client requests.
  # @!attribute [rw] abort
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy::Abort]
  #     The specification for aborting to client requests.
  class FaultInjectionPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Specification of how client requests are delayed as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] fixed_delay
    #   @return [::Google::Protobuf::Duration]
    #     Specify a fixed delay before forwarding the request.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic on which delay will be injected.
    #
    #     The value must be between [0, 100]
    class Delay
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Specification of how client requests are aborted as part of fault
    # injection before being sent to a destination.
    # @!attribute [rw] http_status
    #   @return [::Integer]
    #     The HTTP status code used to abort the request.
    #
    #     The value must be between 200 and 599 inclusive.
    # @!attribute [rw] percentage
    #   @return [::Integer]
    #     The percentage of traffic which will be aborted.
    #
    #     The value must be between [0, 100]
    class Abort
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # The specifications for retries.
  # @!attribute [rw] retry_conditions
  #   @return [::Array<::String>]
  #     - connect-failure: Router will retry on failures connecting to Backend
  #        Services, for example due to connection timeouts.
  #     - refused-stream: Router will retry if the backend service resets the
  #     stream
  #        with a REFUSED_STREAM error code. This reset type indicates that it is
  #        safe to retry.
  #     - cancelled: Router will retry if the gRPC status code in the response
  #     header
  #        is set to cancelled
  #     - deadline-exceeded: Router will retry if the gRPC status code in the
  #     response
  #        header is set to deadline-exceeded
  #     - resource-exhausted: Router will retry if the gRPC status code in the
  #        response header is set to resource-exhausted
  #     - unavailable: Router will retry if the gRPC status code in the response
  #        header is set to unavailable
  # @!attribute [rw] num_retries
  #   @return [::Integer]
  #     Specifies the allowed number of retries. This number must be > 0. If not
  #     specified, default to 1.
  class RetryPolicy
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Specifies how to route matched traffic.
  # @!attribute [rw] destinations
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::Destination>]
  #     Optional. The destination services to which traffic should be forwarded.
  #     If multiple destinations are specified, traffic will be split between
  #     Backend Service(s) according to the weight field of these destinations.
  # @!attribute [rw] fault_injection_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::FaultInjectionPolicy]
  #     Optional. The specification for fault injection introduced into traffic to test the
  #     resiliency of clients to destination service failure. As part of fault
  #     injection, when clients send requests to a destination, delays can be
  #     introduced on a percentage of requests before sending those requests to
  #     the destination service. Similarly requests from clients can be aborted
  #     by for a percentage of requests.
  #
  #     timeout and retry_policy will be ignored by clients that are configured
  #     with a fault_injection_policy
  # @!attribute [rw] timeout
  #   @return [::Google::Protobuf::Duration]
  #     Optional. Specifies the timeout for selected route. Timeout is computed
  #     from the time the request has been fully processed (i.e. end of stream)
  #     up until the response has been completely processed. Timeout includes all
  #     retries.
  # @!attribute [rw] retry_policy
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RetryPolicy]
  #     Optional. Specifies the retry policy associated with this route.
  class RouteAction
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Describes how to route traffic.
  # @!attribute [rw] matches
  #   @return [::Array<::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteMatch>]
  #     Optional. Matches define conditions used for matching the rule against
  #     incoming gRPC requests. Each match is independent, i.e. this rule will be
  #     matched if ANY one of the matches is satisfied.  If no matches field is
  #     specified, this rule will unconditionally match traffic.
  # @!attribute [rw] action
  #   @return [::Google::Cloud::NetworkServices::V1::GrpcRoute::RouteAction]
  #     Required. A detailed rule defining how to route traffic. This field is
  #     required.
  class RouteRule
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class LabelsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end
end