google-apis-networkconnectivity_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1065 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module NetworkconnectivityV1
24
+
25
+ # Specifies the audit configuration for a service. The configuration determines
26
+ # which permission types are logged, and what identities, if any, are exempted
27
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
28
+ # are AuditConfigs for both `allServices` and a specific service, the union of
29
+ # the two AuditConfigs is used for that service: the log_types specified in each
30
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
31
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
32
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
33
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
34
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
35
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
36
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
37
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
38
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
39
+ # DATA_WRITE logging.
40
+ class AuditConfig
41
+ include Google::Apis::Core::Hashable
42
+
43
+ # The configuration for logging of each type of permission.
44
+ # Corresponds to the JSON property `auditLogConfigs`
45
+ # @return [Array<Google::Apis::NetworkconnectivityV1::AuditLogConfig>]
46
+ attr_accessor :audit_log_configs
47
+
48
+ # Specifies a service that will be enabled for audit logging. For example, `
49
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
50
+ # value that covers all services.
51
+ # Corresponds to the JSON property `service`
52
+ # @return [String]
53
+ attr_accessor :service
54
+
55
+ def initialize(**args)
56
+ update!(**args)
57
+ end
58
+
59
+ # Update properties of this object
60
+ def update!(**args)
61
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
62
+ @service = args[:service] if args.key?(:service)
63
+ end
64
+ end
65
+
66
+ # Provides the configuration for logging a type of permissions. Example: ` "
67
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
68
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
69
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
70
+ # DATA_READ logging.
71
+ class AuditLogConfig
72
+ include Google::Apis::Core::Hashable
73
+
74
+ # Specifies the identities that do not cause logging for this type of permission.
75
+ # Follows the same format of Binding.members.
76
+ # Corresponds to the JSON property `exemptedMembers`
77
+ # @return [Array<String>]
78
+ attr_accessor :exempted_members
79
+
80
+ # The log type that this config enables.
81
+ # Corresponds to the JSON property `logType`
82
+ # @return [String]
83
+ attr_accessor :log_type
84
+
85
+ def initialize(**args)
86
+ update!(**args)
87
+ end
88
+
89
+ # Update properties of this object
90
+ def update!(**args)
91
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
92
+ @log_type = args[:log_type] if args.key?(:log_type)
93
+ end
94
+ end
95
+
96
+ # Associates `members` with a `role`.
97
+ class Binding
98
+ include Google::Apis::Core::Hashable
99
+
100
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
101
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
102
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
103
+ # "Summary size limit" description: "Determines if a summary is less than 100
104
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
105
+ # Requestor is owner" description: "Determines if requestor is the document
106
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
107
+ # Logic): title: "Public documents" description: "Determine whether the document
108
+ # should be publicly visible" expression: "document.type != 'private' &&
109
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
110
+ # string" description: "Create a notification string with a timestamp."
111
+ # expression: "'New message received at ' + string(document.create_time)" The
112
+ # exact variables and functions that may be referenced within an expression are
113
+ # determined by the service that evaluates it. See the service documentation for
114
+ # additional information.
115
+ # Corresponds to the JSON property `condition`
116
+ # @return [Google::Apis::NetworkconnectivityV1::Expr]
117
+ attr_accessor :condition
118
+
119
+ # Specifies the identities requesting access for a Cloud Platform resource. `
120
+ # members` can have the following values: * `allUsers`: A special identifier
121
+ # that represents anyone who is on the internet; with or without a Google
122
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
123
+ # anyone who is authenticated with a Google account or a service account. * `
124
+ # user:`emailid``: An email address that represents a specific Google account.
125
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
126
+ # address that represents a service account. For example, `my-other-app@appspot.
127
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
128
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
129
+ # `uniqueid``: An email address (plus unique identifier) representing a user
130
+ # that has been recently deleted. For example, `alice@example.com?uid=
131
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
132
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
133
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
134
+ # identifier) representing a service account that has been recently deleted. For
135
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
136
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
137
+ # emailid`` and the undeleted service account retains the role in the binding. *
138
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
139
+ # identifier) representing a Google group that has been recently deleted. For
140
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
141
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
142
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
143
+ # primary) that represents all the users of that domain. For example, `google.
144
+ # com` or `example.com`.
145
+ # Corresponds to the JSON property `members`
146
+ # @return [Array<String>]
147
+ attr_accessor :members
148
+
149
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
150
+ # , or `roles/owner`.
151
+ # Corresponds to the JSON property `role`
152
+ # @return [String]
153
+ attr_accessor :role
154
+
155
+ def initialize(**args)
156
+ update!(**args)
157
+ end
158
+
159
+ # Update properties of this object
160
+ def update!(**args)
161
+ @condition = args[:condition] if args.key?(:condition)
162
+ @members = args[:members] if args.key?(:members)
163
+ @role = args[:role] if args.key?(:role)
164
+ end
165
+ end
166
+
167
+ # A generic empty message that you can re-use to avoid defining duplicated empty
168
+ # messages in your APIs. A typical example is to use it as the request or the
169
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
170
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
171
+ # `Empty` is empty JSON object ````.
172
+ class Empty
173
+ include Google::Apis::Core::Hashable
174
+
175
+ def initialize(**args)
176
+ update!(**args)
177
+ end
178
+
179
+ # Update properties of this object
180
+ def update!(**args)
181
+ end
182
+ end
183
+
184
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
185
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
186
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
187
+ # "Summary size limit" description: "Determines if a summary is less than 100
188
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
189
+ # Requestor is owner" description: "Determines if requestor is the document
190
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
191
+ # Logic): title: "Public documents" description: "Determine whether the document
192
+ # should be publicly visible" expression: "document.type != 'private' &&
193
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
194
+ # string" description: "Create a notification string with a timestamp."
195
+ # expression: "'New message received at ' + string(document.create_time)" The
196
+ # exact variables and functions that may be referenced within an expression are
197
+ # determined by the service that evaluates it. See the service documentation for
198
+ # additional information.
199
+ class Expr
200
+ include Google::Apis::Core::Hashable
201
+
202
+ # Optional. Description of the expression. This is a longer text which describes
203
+ # the expression, e.g. when hovered over it in a UI.
204
+ # Corresponds to the JSON property `description`
205
+ # @return [String]
206
+ attr_accessor :description
207
+
208
+ # Textual representation of an expression in Common Expression Language syntax.
209
+ # Corresponds to the JSON property `expression`
210
+ # @return [String]
211
+ attr_accessor :expression
212
+
213
+ # Optional. String indicating the location of the expression for error reporting,
214
+ # e.g. a file name and a position in the file.
215
+ # Corresponds to the JSON property `location`
216
+ # @return [String]
217
+ attr_accessor :location
218
+
219
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
220
+ # This can be used e.g. in UIs which allow to enter the expression.
221
+ # Corresponds to the JSON property `title`
222
+ # @return [String]
223
+ attr_accessor :title
224
+
225
+ def initialize(**args)
226
+ update!(**args)
227
+ end
228
+
229
+ # Update properties of this object
230
+ def update!(**args)
231
+ @description = args[:description] if args.key?(:description)
232
+ @expression = args[:expression] if args.key?(:expression)
233
+ @location = args[:location] if args.key?(:location)
234
+ @title = args[:title] if args.key?(:title)
235
+ end
236
+ end
237
+
238
+ # The request message for Operations.CancelOperation.
239
+ class GoogleLongrunningCancelOperationRequest
240
+ include Google::Apis::Core::Hashable
241
+
242
+ def initialize(**args)
243
+ update!(**args)
244
+ end
245
+
246
+ # Update properties of this object
247
+ def update!(**args)
248
+ end
249
+ end
250
+
251
+ # The response message for Operations.ListOperations.
252
+ class GoogleLongrunningListOperationsResponse
253
+ include Google::Apis::Core::Hashable
254
+
255
+ # The standard List next-page token.
256
+ # Corresponds to the JSON property `nextPageToken`
257
+ # @return [String]
258
+ attr_accessor :next_page_token
259
+
260
+ # A list of operations that matches the specified filter in the request.
261
+ # Corresponds to the JSON property `operations`
262
+ # @return [Array<Google::Apis::NetworkconnectivityV1::GoogleLongrunningOperation>]
263
+ attr_accessor :operations
264
+
265
+ def initialize(**args)
266
+ update!(**args)
267
+ end
268
+
269
+ # Update properties of this object
270
+ def update!(**args)
271
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
272
+ @operations = args[:operations] if args.key?(:operations)
273
+ end
274
+ end
275
+
276
+ # This resource represents a long-running operation that is the result of a
277
+ # network API call.
278
+ class GoogleLongrunningOperation
279
+ include Google::Apis::Core::Hashable
280
+
281
+ # If the value is `false`, it means the operation is still in progress. If `true`
282
+ # , the operation is completed, and either `error` or `response` is available.
283
+ # Corresponds to the JSON property `done`
284
+ # @return [Boolean]
285
+ attr_accessor :done
286
+ alias_method :done?, :done
287
+
288
+ # The `Status` type defines a logical error model that is suitable for different
289
+ # programming environments, including REST APIs and RPC APIs. It is used by [
290
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
291
+ # data: error code, error message, and error details. You can find out more
292
+ # about this error model and how to work with it in the [API Design Guide](https:
293
+ # //cloud.google.com/apis/design/errors).
294
+ # Corresponds to the JSON property `error`
295
+ # @return [Google::Apis::NetworkconnectivityV1::GoogleRpcStatus]
296
+ attr_accessor :error
297
+
298
+ # Service-specific metadata associated with the operation. It typically contains
299
+ # progress information and common metadata such as create time. Some services
300
+ # might not provide such metadata. Any method that returns a long-running
301
+ # operation should document the metadata type, if any.
302
+ # Corresponds to the JSON property `metadata`
303
+ # @return [Hash<String,Object>]
304
+ attr_accessor :metadata
305
+
306
+ # The server-assigned name, which is only unique within the same service that
307
+ # originally returns it. If you use the default HTTP mapping, the `name` should
308
+ # be a resource name ending with `operations/`unique_id``.
309
+ # Corresponds to the JSON property `name`
310
+ # @return [String]
311
+ attr_accessor :name
312
+
313
+ # The normal response of the operation in case of success. If the original
314
+ # method returns no data on success, such as `Delete`, the response is `google.
315
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
316
+ # the response should be the resource. For other methods, the response should
317
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
318
+ # example, if the original method name is `TakeSnapshot()`, the inferred
319
+ # response type is `TakeSnapshotResponse`.
320
+ # Corresponds to the JSON property `response`
321
+ # @return [Hash<String,Object>]
322
+ attr_accessor :response
323
+
324
+ def initialize(**args)
325
+ update!(**args)
326
+ end
327
+
328
+ # Update properties of this object
329
+ def update!(**args)
330
+ @done = args[:done] if args.key?(:done)
331
+ @error = args[:error] if args.key?(:error)
332
+ @metadata = args[:metadata] if args.key?(:metadata)
333
+ @name = args[:name] if args.key?(:name)
334
+ @response = args[:response] if args.key?(:response)
335
+ end
336
+ end
337
+
338
+ # The `Status` type defines a logical error model that is suitable for different
339
+ # programming environments, including REST APIs and RPC APIs. It is used by [
340
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
341
+ # data: error code, error message, and error details. You can find out more
342
+ # about this error model and how to work with it in the [API Design Guide](https:
343
+ # //cloud.google.com/apis/design/errors).
344
+ class GoogleRpcStatus
345
+ include Google::Apis::Core::Hashable
346
+
347
+ # The status code, which should be an enum value of google.rpc.Code.
348
+ # Corresponds to the JSON property `code`
349
+ # @return [Fixnum]
350
+ attr_accessor :code
351
+
352
+ # A list of messages that carry the error details. There is a common set of
353
+ # message types for APIs to use.
354
+ # Corresponds to the JSON property `details`
355
+ # @return [Array<Hash<String,Object>>]
356
+ attr_accessor :details
357
+
358
+ # A developer-facing error message, which should be in English. Any user-facing
359
+ # error message should be localized and sent in the google.rpc.Status.details
360
+ # field, or localized by the client.
361
+ # Corresponds to the JSON property `message`
362
+ # @return [String]
363
+ attr_accessor :message
364
+
365
+ def initialize(**args)
366
+ update!(**args)
367
+ end
368
+
369
+ # Update properties of this object
370
+ def update!(**args)
371
+ @code = args[:code] if args.key?(:code)
372
+ @details = args[:details] if args.key?(:details)
373
+ @message = args[:message] if args.key?(:message)
374
+ end
375
+ end
376
+
377
+ # A hub is a collection of spokes. A single hub can contain spokes from multiple
378
+ # regions. However, all of a hub's spokes must be associated with resources that
379
+ # reside in the same VPC network.
380
+ class Hub
381
+ include Google::Apis::Core::Hashable
382
+
383
+ # Output only. The time the hub was created.
384
+ # Corresponds to the JSON property `createTime`
385
+ # @return [String]
386
+ attr_accessor :create_time
387
+
388
+ # An optional description of the hub.
389
+ # Corresponds to the JSON property `description`
390
+ # @return [String]
391
+ attr_accessor :description
392
+
393
+ # Optional labels in key:value format. For more information about labels, see [
394
+ # Requirements for labels](https://cloud.google.com/resource-manager/docs/
395
+ # creating-managing-labels#requirements).
396
+ # Corresponds to the JSON property `labels`
397
+ # @return [Hash<String,String>]
398
+ attr_accessor :labels
399
+
400
+ # Immutable. The name of the hub. Hub names must be unique. They use the
401
+ # following form: `projects/`project_number`/locations/global/hubs/`hub_id``
402
+ # Corresponds to the JSON property `name`
403
+ # @return [String]
404
+ attr_accessor :name
405
+
406
+ # The VPC network associated with this hub's spokes. All of the VPN tunnels,
407
+ # VLAN attachments, and router appliance instances referenced by this hub's
408
+ # spokes must belong to this VPC network. This field is read-only. Network
409
+ # Connectivity Center automatically populates it based on the set of spokes
410
+ # attached to the hub.
411
+ # Corresponds to the JSON property `routingVpcs`
412
+ # @return [Array<Google::Apis::NetworkconnectivityV1::RoutingVpc>]
413
+ attr_accessor :routing_vpcs
414
+
415
+ # Output only. The current lifecycle state of this hub.
416
+ # Corresponds to the JSON property `state`
417
+ # @return [String]
418
+ attr_accessor :state
419
+
420
+ # Output only. The Google-generated UUID for the hub. This value is unique
421
+ # across all hub resources. If a hub is deleted and another with the same name
422
+ # is created, the new hub is assigned a different unique_id.
423
+ # Corresponds to the JSON property `uniqueId`
424
+ # @return [String]
425
+ attr_accessor :unique_id
426
+
427
+ # Output only. The time the hub was last updated.
428
+ # Corresponds to the JSON property `updateTime`
429
+ # @return [String]
430
+ attr_accessor :update_time
431
+
432
+ def initialize(**args)
433
+ update!(**args)
434
+ end
435
+
436
+ # Update properties of this object
437
+ def update!(**args)
438
+ @create_time = args[:create_time] if args.key?(:create_time)
439
+ @description = args[:description] if args.key?(:description)
440
+ @labels = args[:labels] if args.key?(:labels)
441
+ @name = args[:name] if args.key?(:name)
442
+ @routing_vpcs = args[:routing_vpcs] if args.key?(:routing_vpcs)
443
+ @state = args[:state] if args.key?(:state)
444
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
445
+ @update_time = args[:update_time] if args.key?(:update_time)
446
+ end
447
+ end
448
+
449
+ # A collection of VLAN attachment resources. These resources should be redundant
450
+ # attachments that all advertise the same prefixes to Google Cloud.
451
+ # Alternatively, in active/passive configurations, all attachments should be
452
+ # capable of advertising the same prefixes.
453
+ class LinkedInterconnectAttachments
454
+ include Google::Apis::Core::Hashable
455
+
456
+ # A value that controls whether site-to-site data transfer is enabled for these
457
+ # resources. This field is set to false by default, but you must set it to true.
458
+ # Note that data transfer is available only in supported locations.
459
+ # Corresponds to the JSON property `siteToSiteDataTransfer`
460
+ # @return [Boolean]
461
+ attr_accessor :site_to_site_data_transfer
462
+ alias_method :site_to_site_data_transfer?, :site_to_site_data_transfer
463
+
464
+ # The URIs of linked interconnect attachment resources
465
+ # Corresponds to the JSON property `uris`
466
+ # @return [Array<String>]
467
+ attr_accessor :uris
468
+
469
+ def initialize(**args)
470
+ update!(**args)
471
+ end
472
+
473
+ # Update properties of this object
474
+ def update!(**args)
475
+ @site_to_site_data_transfer = args[:site_to_site_data_transfer] if args.key?(:site_to_site_data_transfer)
476
+ @uris = args[:uris] if args.key?(:uris)
477
+ end
478
+ end
479
+
480
+ # A collection of router appliance instances. If you have multiple router
481
+ # appliance instances connected to the same site, they should all be attached to
482
+ # the same spoke.
483
+ class LinkedRouterApplianceInstances
484
+ include Google::Apis::Core::Hashable
485
+
486
+ # The list of router appliance instances.
487
+ # Corresponds to the JSON property `instances`
488
+ # @return [Array<Google::Apis::NetworkconnectivityV1::RouterApplianceInstance>]
489
+ attr_accessor :instances
490
+
491
+ # A value that controls whether site-to-site data transfer is enabled for these
492
+ # resources. This field is set to false by default, but you must set it to true.
493
+ # Note that data transfer is available only in supported locations.
494
+ # Corresponds to the JSON property `siteToSiteDataTransfer`
495
+ # @return [Boolean]
496
+ attr_accessor :site_to_site_data_transfer
497
+ alias_method :site_to_site_data_transfer?, :site_to_site_data_transfer
498
+
499
+ def initialize(**args)
500
+ update!(**args)
501
+ end
502
+
503
+ # Update properties of this object
504
+ def update!(**args)
505
+ @instances = args[:instances] if args.key?(:instances)
506
+ @site_to_site_data_transfer = args[:site_to_site_data_transfer] if args.key?(:site_to_site_data_transfer)
507
+ end
508
+ end
509
+
510
+ # A collection of Cloud VPN tunnel resources. These resources should be
511
+ # redundant HA VPN tunnels that all advertise the same prefixes to Google Cloud.
512
+ # Alternatively, in a passive/active configuration, all tunnels should be
513
+ # capable of advertising the same prefixes.
514
+ class LinkedVpnTunnels
515
+ include Google::Apis::Core::Hashable
516
+
517
+ # A value that controls whether site-to-site data transfer is enabled for these
518
+ # resources. This field is set to false by default, but you must set it to true.
519
+ # Note that data transfer is available only in supported locations.
520
+ # Corresponds to the JSON property `siteToSiteDataTransfer`
521
+ # @return [Boolean]
522
+ attr_accessor :site_to_site_data_transfer
523
+ alias_method :site_to_site_data_transfer?, :site_to_site_data_transfer
524
+
525
+ # The URIs of linked VPN tunnel resources.
526
+ # Corresponds to the JSON property `uris`
527
+ # @return [Array<String>]
528
+ attr_accessor :uris
529
+
530
+ def initialize(**args)
531
+ update!(**args)
532
+ end
533
+
534
+ # Update properties of this object
535
+ def update!(**args)
536
+ @site_to_site_data_transfer = args[:site_to_site_data_transfer] if args.key?(:site_to_site_data_transfer)
537
+ @uris = args[:uris] if args.key?(:uris)
538
+ end
539
+ end
540
+
541
+ # Response for HubService.ListHubs method.
542
+ class ListHubsResponse
543
+ include Google::Apis::Core::Hashable
544
+
545
+ # The requested hubs.
546
+ # Corresponds to the JSON property `hubs`
547
+ # @return [Array<Google::Apis::NetworkconnectivityV1::Hub>]
548
+ attr_accessor :hubs
549
+
550
+ # The next pagination token in the List response. It should be used as
551
+ # page_token for the following request. An empty value means no more result.
552
+ # Corresponds to the JSON property `nextPageToken`
553
+ # @return [String]
554
+ attr_accessor :next_page_token
555
+
556
+ # Locations that could not be reached.
557
+ # Corresponds to the JSON property `unreachable`
558
+ # @return [Array<String>]
559
+ attr_accessor :unreachable
560
+
561
+ def initialize(**args)
562
+ update!(**args)
563
+ end
564
+
565
+ # Update properties of this object
566
+ def update!(**args)
567
+ @hubs = args[:hubs] if args.key?(:hubs)
568
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
569
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
570
+ end
571
+ end
572
+
573
+ # The response message for Locations.ListLocations.
574
+ class ListLocationsResponse
575
+ include Google::Apis::Core::Hashable
576
+
577
+ # A list of locations that matches the specified filter in the request.
578
+ # Corresponds to the JSON property `locations`
579
+ # @return [Array<Google::Apis::NetworkconnectivityV1::Location>]
580
+ attr_accessor :locations
581
+
582
+ # The standard List next-page token.
583
+ # Corresponds to the JSON property `nextPageToken`
584
+ # @return [String]
585
+ attr_accessor :next_page_token
586
+
587
+ def initialize(**args)
588
+ update!(**args)
589
+ end
590
+
591
+ # Update properties of this object
592
+ def update!(**args)
593
+ @locations = args[:locations] if args.key?(:locations)
594
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
595
+ end
596
+ end
597
+
598
+ # The response for HubService.ListSpokes.
599
+ class ListSpokesResponse
600
+ include Google::Apis::Core::Hashable
601
+
602
+ # The next pagination token in the List response. It should be used as
603
+ # page_token for the following request. An empty value means no more result.
604
+ # Corresponds to the JSON property `nextPageToken`
605
+ # @return [String]
606
+ attr_accessor :next_page_token
607
+
608
+ # The requested spokes.
609
+ # Corresponds to the JSON property `spokes`
610
+ # @return [Array<Google::Apis::NetworkconnectivityV1::Spoke>]
611
+ attr_accessor :spokes
612
+
613
+ # Locations that could not be reached.
614
+ # Corresponds to the JSON property `unreachable`
615
+ # @return [Array<String>]
616
+ attr_accessor :unreachable
617
+
618
+ def initialize(**args)
619
+ update!(**args)
620
+ end
621
+
622
+ # Update properties of this object
623
+ def update!(**args)
624
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
625
+ @spokes = args[:spokes] if args.key?(:spokes)
626
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
627
+ end
628
+ end
629
+
630
+ # A resource that represents Google Cloud Platform location.
631
+ class Location
632
+ include Google::Apis::Core::Hashable
633
+
634
+ # The friendly name for this location, typically a nearby city name. For example,
635
+ # "Tokyo".
636
+ # Corresponds to the JSON property `displayName`
637
+ # @return [String]
638
+ attr_accessor :display_name
639
+
640
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
641
+ # region": "us-east1"`
642
+ # Corresponds to the JSON property `labels`
643
+ # @return [Hash<String,String>]
644
+ attr_accessor :labels
645
+
646
+ # The canonical id for this location. For example: `"us-east1"`.
647
+ # Corresponds to the JSON property `locationId`
648
+ # @return [String]
649
+ attr_accessor :location_id
650
+
651
+ # Service-specific metadata. For example the available capacity at the given
652
+ # location.
653
+ # Corresponds to the JSON property `metadata`
654
+ # @return [Hash<String,Object>]
655
+ attr_accessor :metadata
656
+
657
+ # Resource name for the location, which may vary between implementations. For
658
+ # example: `"projects/example-project/locations/us-east1"`
659
+ # Corresponds to the JSON property `name`
660
+ # @return [String]
661
+ attr_accessor :name
662
+
663
+ def initialize(**args)
664
+ update!(**args)
665
+ end
666
+
667
+ # Update properties of this object
668
+ def update!(**args)
669
+ @display_name = args[:display_name] if args.key?(:display_name)
670
+ @labels = args[:labels] if args.key?(:labels)
671
+ @location_id = args[:location_id] if args.key?(:location_id)
672
+ @metadata = args[:metadata] if args.key?(:metadata)
673
+ @name = args[:name] if args.key?(:name)
674
+ end
675
+ end
676
+
677
+ # Represents the metadata of the long-running operation.
678
+ class OperationMetadata
679
+ include Google::Apis::Core::Hashable
680
+
681
+ # Output only. API version used to start the operation.
682
+ # Corresponds to the JSON property `apiVersion`
683
+ # @return [String]
684
+ attr_accessor :api_version
685
+
686
+ # Output only. The time the operation was created.
687
+ # Corresponds to the JSON property `createTime`
688
+ # @return [String]
689
+ attr_accessor :create_time
690
+
691
+ # Output only. The time the operation finished running.
692
+ # Corresponds to the JSON property `endTime`
693
+ # @return [String]
694
+ attr_accessor :end_time
695
+
696
+ # Output only. Identifies whether the user has requested cancellation of the
697
+ # operation. Operations that have been cancelled successfully have Operation.
698
+ # error value with a google.rpc.Status.code of 1, corresponding to `Code.
699
+ # CANCELLED`.
700
+ # Corresponds to the JSON property `requestedCancellation`
701
+ # @return [Boolean]
702
+ attr_accessor :requested_cancellation
703
+ alias_method :requested_cancellation?, :requested_cancellation
704
+
705
+ # Output only. Human-readable status of the operation, if any.
706
+ # Corresponds to the JSON property `statusMessage`
707
+ # @return [String]
708
+ attr_accessor :status_message
709
+
710
+ # Output only. Server-defined resource path for the target of the operation.
711
+ # Corresponds to the JSON property `target`
712
+ # @return [String]
713
+ attr_accessor :target
714
+
715
+ # Output only. Name of the verb executed by the operation.
716
+ # Corresponds to the JSON property `verb`
717
+ # @return [String]
718
+ attr_accessor :verb
719
+
720
+ def initialize(**args)
721
+ update!(**args)
722
+ end
723
+
724
+ # Update properties of this object
725
+ def update!(**args)
726
+ @api_version = args[:api_version] if args.key?(:api_version)
727
+ @create_time = args[:create_time] if args.key?(:create_time)
728
+ @end_time = args[:end_time] if args.key?(:end_time)
729
+ @requested_cancellation = args[:requested_cancellation] if args.key?(:requested_cancellation)
730
+ @status_message = args[:status_message] if args.key?(:status_message)
731
+ @target = args[:target] if args.key?(:target)
732
+ @verb = args[:verb] if args.key?(:verb)
733
+ end
734
+ end
735
+
736
+ # An Identity and Access Management (IAM) policy, which specifies access
737
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
738
+ # A `binding` binds one or more `members` to a single `role`. Members can be
739
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
740
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
741
+ # role or a user-created custom role. For some types of Google Cloud resources,
742
+ # a `binding` can also specify a `condition`, which is a logical expression that
743
+ # allows access to a resource only if the expression evaluates to `true`. A
744
+ # condition can add constraints based on attributes of the request, the resource,
745
+ # or both. To learn which resources support conditions in their IAM policies,
746
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
747
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
748
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
749
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
750
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
751
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
752
+ # title": "expirable access", "description": "Does not grant access after Sep
753
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
754
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
755
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
756
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
757
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
758
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
759
+ # description: Does not grant access after Sep 2020 expression: request.time <
760
+ # timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a
761
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
762
+ # google.com/iam/docs/).
763
+ class Policy
764
+ include Google::Apis::Core::Hashable
765
+
766
+ # Specifies cloud audit logging configuration for this policy.
767
+ # Corresponds to the JSON property `auditConfigs`
768
+ # @return [Array<Google::Apis::NetworkconnectivityV1::AuditConfig>]
769
+ attr_accessor :audit_configs
770
+
771
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
772
+ # condition` that determines how and when the `bindings` are applied. Each of
773
+ # the `bindings` must contain at least one member.
774
+ # Corresponds to the JSON property `bindings`
775
+ # @return [Array<Google::Apis::NetworkconnectivityV1::Binding>]
776
+ attr_accessor :bindings
777
+
778
+ # `etag` is used for optimistic concurrency control as a way to help prevent
779
+ # simultaneous updates of a policy from overwriting each other. It is strongly
780
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
781
+ # to perform policy updates in order to avoid race conditions: An `etag` is
782
+ # returned in the response to `getIamPolicy`, and systems are expected to put
783
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
784
+ # applied to the same version of the policy. **Important:** If you use IAM
785
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
786
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
787
+ # with a version `1` policy, and all of the conditions in the version `3` policy
788
+ # are lost.
789
+ # Corresponds to the JSON property `etag`
790
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
791
+ # @return [String]
792
+ attr_accessor :etag
793
+
794
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
795
+ # Requests that specify an invalid value are rejected. Any operation that
796
+ # affects conditional role bindings must specify version `3`. This requirement
797
+ # applies to the following operations: * Getting a policy that includes a
798
+ # conditional role binding * Adding a conditional role binding to a policy *
799
+ # Changing a conditional role binding in a policy * Removing any role binding,
800
+ # with or without a condition, from a policy that includes conditions **
801
+ # Important:** If you use IAM Conditions, you must include the `etag` field
802
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
803
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
804
+ # conditions in the version `3` policy are lost. If a policy does not include
805
+ # any conditions, operations on that policy may specify any valid version or
806
+ # leave the field unset. To learn which resources support conditions in their
807
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
808
+ # conditions/resource-policies).
809
+ # Corresponds to the JSON property `version`
810
+ # @return [Fixnum]
811
+ attr_accessor :version
812
+
813
+ def initialize(**args)
814
+ update!(**args)
815
+ end
816
+
817
+ # Update properties of this object
818
+ def update!(**args)
819
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
820
+ @bindings = args[:bindings] if args.key?(:bindings)
821
+ @etag = args[:etag] if args.key?(:etag)
822
+ @version = args[:version] if args.key?(:version)
823
+ end
824
+ end
825
+
826
+ # A router appliance instance is a Compute Engine virtual machine (VM) instance
827
+ # that acts as a BGP speaker. A router appliance instance is specified by the
828
+ # URI of the VM and the internal IP address of one of the VM's network
829
+ # interfaces.
830
+ class RouterApplianceInstance
831
+ include Google::Apis::Core::Hashable
832
+
833
+ # The IP address on the VM to use for peering.
834
+ # Corresponds to the JSON property `ipAddress`
835
+ # @return [String]
836
+ attr_accessor :ip_address
837
+
838
+ # The URI of the VM.
839
+ # Corresponds to the JSON property `virtualMachine`
840
+ # @return [String]
841
+ attr_accessor :virtual_machine
842
+
843
+ def initialize(**args)
844
+ update!(**args)
845
+ end
846
+
847
+ # Update properties of this object
848
+ def update!(**args)
849
+ @ip_address = args[:ip_address] if args.key?(:ip_address)
850
+ @virtual_machine = args[:virtual_machine] if args.key?(:virtual_machine)
851
+ end
852
+ end
853
+
854
+ # RoutingVPC contains information about the VPC network that is associated with
855
+ # a hub's spokes.
856
+ class RoutingVpc
857
+ include Google::Apis::Core::Hashable
858
+
859
+ # The URI of the VPC network.
860
+ # Corresponds to the JSON property `uri`
861
+ # @return [String]
862
+ attr_accessor :uri
863
+
864
+ def initialize(**args)
865
+ update!(**args)
866
+ end
867
+
868
+ # Update properties of this object
869
+ def update!(**args)
870
+ @uri = args[:uri] if args.key?(:uri)
871
+ end
872
+ end
873
+
874
+ # Request message for `SetIamPolicy` method.
875
+ class SetIamPolicyRequest
876
+ include Google::Apis::Core::Hashable
877
+
878
+ # An Identity and Access Management (IAM) policy, which specifies access
879
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
880
+ # A `binding` binds one or more `members` to a single `role`. Members can be
881
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
882
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
883
+ # role or a user-created custom role. For some types of Google Cloud resources,
884
+ # a `binding` can also specify a `condition`, which is a logical expression that
885
+ # allows access to a resource only if the expression evaluates to `true`. A
886
+ # condition can add constraints based on attributes of the request, the resource,
887
+ # or both. To learn which resources support conditions in their IAM policies,
888
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
889
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
890
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
891
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
892
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
893
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
894
+ # title": "expirable access", "description": "Does not grant access after Sep
895
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
896
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
897
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
898
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
899
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
900
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
901
+ # description: Does not grant access after Sep 2020 expression: request.time <
902
+ # timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a
903
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
904
+ # google.com/iam/docs/).
905
+ # Corresponds to the JSON property `policy`
906
+ # @return [Google::Apis::NetworkconnectivityV1::Policy]
907
+ attr_accessor :policy
908
+
909
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
910
+ # the fields in the mask will be modified. If no mask is provided, the following
911
+ # default mask is used: `paths: "bindings, etag"`
912
+ # Corresponds to the JSON property `updateMask`
913
+ # @return [String]
914
+ attr_accessor :update_mask
915
+
916
+ def initialize(**args)
917
+ update!(**args)
918
+ end
919
+
920
+ # Update properties of this object
921
+ def update!(**args)
922
+ @policy = args[:policy] if args.key?(:policy)
923
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
924
+ end
925
+ end
926
+
927
+ # A spoke represents a connection between your Google Cloud network resources
928
+ # and a non-Google-Cloud network. When you create a spoke, you associate it with
929
+ # a hub. You must also identify a value for exactly one of the following fields:
930
+ # * linked_vpn_tunnels * linked_interconnect_attachments *
931
+ # linked_router_appliance_instances
932
+ class Spoke
933
+ include Google::Apis::Core::Hashable
934
+
935
+ # Output only. The time the spoke was created.
936
+ # Corresponds to the JSON property `createTime`
937
+ # @return [String]
938
+ attr_accessor :create_time
939
+
940
+ # An optional description of the spoke.
941
+ # Corresponds to the JSON property `description`
942
+ # @return [String]
943
+ attr_accessor :description
944
+
945
+ # Immutable. The URI of the hub that this spoke is attached to.
946
+ # Corresponds to the JSON property `hub`
947
+ # @return [String]
948
+ attr_accessor :hub
949
+
950
+ # Optional labels in key:value format. For more information about labels, see [
951
+ # Requirements for labels](https://cloud.google.com/resource-manager/docs/
952
+ # creating-managing-labels#requirements).
953
+ # Corresponds to the JSON property `labels`
954
+ # @return [Hash<String,String>]
955
+ attr_accessor :labels
956
+
957
+ # A collection of VLAN attachment resources. These resources should be redundant
958
+ # attachments that all advertise the same prefixes to Google Cloud.
959
+ # Alternatively, in active/passive configurations, all attachments should be
960
+ # capable of advertising the same prefixes.
961
+ # Corresponds to the JSON property `linkedInterconnectAttachments`
962
+ # @return [Google::Apis::NetworkconnectivityV1::LinkedInterconnectAttachments]
963
+ attr_accessor :linked_interconnect_attachments
964
+
965
+ # A collection of router appliance instances. If you have multiple router
966
+ # appliance instances connected to the same site, they should all be attached to
967
+ # the same spoke.
968
+ # Corresponds to the JSON property `linkedRouterApplianceInstances`
969
+ # @return [Google::Apis::NetworkconnectivityV1::LinkedRouterApplianceInstances]
970
+ attr_accessor :linked_router_appliance_instances
971
+
972
+ # A collection of Cloud VPN tunnel resources. These resources should be
973
+ # redundant HA VPN tunnels that all advertise the same prefixes to Google Cloud.
974
+ # Alternatively, in a passive/active configuration, all tunnels should be
975
+ # capable of advertising the same prefixes.
976
+ # Corresponds to the JSON property `linkedVpnTunnels`
977
+ # @return [Google::Apis::NetworkconnectivityV1::LinkedVpnTunnels]
978
+ attr_accessor :linked_vpn_tunnels
979
+
980
+ # Immutable. The name of the spoke. Spoke names must be unique. They use the
981
+ # following form: `projects/`project_number`/locations/`region`/spokes/`spoke_id`
982
+ # `
983
+ # Corresponds to the JSON property `name`
984
+ # @return [String]
985
+ attr_accessor :name
986
+
987
+ # Output only. The current lifecycle state of this spoke.
988
+ # Corresponds to the JSON property `state`
989
+ # @return [String]
990
+ attr_accessor :state
991
+
992
+ # Output only. The Google-generated UUID for the spoke. This value is unique
993
+ # across all spoke resources. If a spoke is deleted and another with the same
994
+ # name is created, the new spoke is assigned a different unique_id.
995
+ # Corresponds to the JSON property `uniqueId`
996
+ # @return [String]
997
+ attr_accessor :unique_id
998
+
999
+ # Output only. The time the spoke was last updated.
1000
+ # Corresponds to the JSON property `updateTime`
1001
+ # @return [String]
1002
+ attr_accessor :update_time
1003
+
1004
+ def initialize(**args)
1005
+ update!(**args)
1006
+ end
1007
+
1008
+ # Update properties of this object
1009
+ def update!(**args)
1010
+ @create_time = args[:create_time] if args.key?(:create_time)
1011
+ @description = args[:description] if args.key?(:description)
1012
+ @hub = args[:hub] if args.key?(:hub)
1013
+ @labels = args[:labels] if args.key?(:labels)
1014
+ @linked_interconnect_attachments = args[:linked_interconnect_attachments] if args.key?(:linked_interconnect_attachments)
1015
+ @linked_router_appliance_instances = args[:linked_router_appliance_instances] if args.key?(:linked_router_appliance_instances)
1016
+ @linked_vpn_tunnels = args[:linked_vpn_tunnels] if args.key?(:linked_vpn_tunnels)
1017
+ @name = args[:name] if args.key?(:name)
1018
+ @state = args[:state] if args.key?(:state)
1019
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
1020
+ @update_time = args[:update_time] if args.key?(:update_time)
1021
+ end
1022
+ end
1023
+
1024
+ # Request message for `TestIamPermissions` method.
1025
+ class TestIamPermissionsRequest
1026
+ include Google::Apis::Core::Hashable
1027
+
1028
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1029
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
1030
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1031
+ # Corresponds to the JSON property `permissions`
1032
+ # @return [Array<String>]
1033
+ attr_accessor :permissions
1034
+
1035
+ def initialize(**args)
1036
+ update!(**args)
1037
+ end
1038
+
1039
+ # Update properties of this object
1040
+ def update!(**args)
1041
+ @permissions = args[:permissions] if args.key?(:permissions)
1042
+ end
1043
+ end
1044
+
1045
+ # Response message for `TestIamPermissions` method.
1046
+ class TestIamPermissionsResponse
1047
+ include Google::Apis::Core::Hashable
1048
+
1049
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
1050
+ # Corresponds to the JSON property `permissions`
1051
+ # @return [Array<String>]
1052
+ attr_accessor :permissions
1053
+
1054
+ def initialize(**args)
1055
+ update!(**args)
1056
+ end
1057
+
1058
+ # Update properties of this object
1059
+ def update!(**args)
1060
+ @permissions = args[:permissions] if args.key?(:permissions)
1061
+ end
1062
+ end
1063
+ end
1064
+ end
1065
+ end