google-apis-networkconnectivity_v1 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,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