google-apis-gkebackup_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2114 @@
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 GkebackupV1
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::GkebackupV1::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
+ # Represents a request to perform a single point-in-time capture of some portion
97
+ # of the state of a GKE cluster, the record of the backup operation itself, and
98
+ # an anchor for the underlying artifacts that comprise the Backup (the config
99
+ # backup and VolumeBackups). Next id: 28
100
+ class Backup
101
+ include Google::Apis::Core::Hashable
102
+
103
+ # Output only. If True, all namespaces were included in the Backup.
104
+ # Corresponds to the JSON property `allNamespaces`
105
+ # @return [Boolean]
106
+ attr_accessor :all_namespaces
107
+ alias_method :all_namespaces?, :all_namespaces
108
+
109
+ # Information about the GKE cluster from which this Backup was created.
110
+ # Corresponds to the JSON property `clusterMetadata`
111
+ # @return [Google::Apis::GkebackupV1::ClusterMetadata]
112
+ attr_accessor :cluster_metadata
113
+
114
+ # Output only. Completion time of the Backup
115
+ # Corresponds to the JSON property `completeTime`
116
+ # @return [String]
117
+ attr_accessor :complete_time
118
+
119
+ # Output only. cluster config backup size in bytes.
120
+ # Corresponds to the JSON property `configBackupSizeBytes`
121
+ # @return [Fixnum]
122
+ attr_accessor :config_backup_size_bytes
123
+
124
+ # Output only. Whether or not the Backup contains Kubernetes Secrets. Inherited
125
+ # from the parent BackupPlan's backup_config.include_secrets.
126
+ # Corresponds to the JSON property `containsSecrets`
127
+ # @return [Boolean]
128
+ attr_accessor :contains_secrets
129
+ alias_method :contains_secrets?, :contains_secrets
130
+
131
+ # Output only. Whether or not the Backup contains volume data. Inherited from
132
+ # the parent BackupPlan's backup_config.include_volume_data.
133
+ # Corresponds to the JSON property `containsVolumeData`
134
+ # @return [Boolean]
135
+ attr_accessor :contains_volume_data
136
+ alias_method :contains_volume_data?, :contains_volume_data
137
+
138
+ # Output only. [Output Only] The timestamp when this Backup resource was created
139
+ # - can be converted to and from [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
140
+ # Corresponds to the JSON property `createTime`
141
+ # @return [String]
142
+ attr_accessor :create_time
143
+
144
+ # Minimum age for this Backup (in days). If this field is set to a non-zero
145
+ # value, the Backup will be "locked" against deletion (either manual or
146
+ # automatic deletion) for the number of days provided (measured from the
147
+ # creation time of the Backup). This value is inherited from the parent
148
+ # BackupPlan's retention_policy.backup_delete_lock_days value and may only be
149
+ # increased (either at creation time or in a subsequent update). This field MUST
150
+ # be an integer value between 0-90 (inclusive). Default: inherited from
151
+ # BackupPlan.
152
+ # Corresponds to the JSON property `deleteLockDays`
153
+ # @return [Fixnum]
154
+ attr_accessor :delete_lock_days
155
+
156
+ # Output only. The time at which an existing delete lock will expire for this
157
+ # backup (calculated from create_time + delete_lock_days).
158
+ # Corresponds to the JSON property `deleteLockExpireTime`
159
+ # @return [String]
160
+ attr_accessor :delete_lock_expire_time
161
+
162
+ # User specified descriptive string for this Backup.
163
+ # Corresponds to the JSON property `description`
164
+ # @return [String]
165
+ attr_accessor :description
166
+
167
+ # Defined a customer managed encryption key that will be used to encrypt Backup
168
+ # artifacts.
169
+ # Corresponds to the JSON property `encryptionKey`
170
+ # @return [Google::Apis::GkebackupV1::EncryptionKey]
171
+ attr_accessor :encryption_key
172
+
173
+ # Output only. `etag` is used for optimistic concurrency control as a way to
174
+ # help prevent simultaneous updates of a backup from overwriting each other. It
175
+ # is strongly suggested that systems make use of the `etag` in the read-modify-
176
+ # write cycle to perform backup updates in order to avoid race conditions: An `
177
+ # etag` is returned in the response to `GetBackup`, and systems are expected to
178
+ # put that etag in the request to `UpdateBackup` to ensure that their change
179
+ # will be applied to the same version.
180
+ # Corresponds to the JSON property `etag`
181
+ # @return [String]
182
+ attr_accessor :etag
183
+
184
+ # A set of custom labels supplied by user.
185
+ # Corresponds to the JSON property `labels`
186
+ # @return [Hash<String,String>]
187
+ attr_accessor :labels
188
+
189
+ # Output only. This flag indicates whether this Backup resource was created
190
+ # manually by a user or via a schedule in the BackupPlan. A value of True means
191
+ # that the Backup was created manually.
192
+ # Corresponds to the JSON property `manual`
193
+ # @return [Boolean]
194
+ attr_accessor :manual
195
+ alias_method :manual?, :manual
196
+
197
+ # Output only. The fully qualified name of the Backup. projects/*/locations/*/
198
+ # backupPlans/*/backups/*
199
+ # Corresponds to the JSON property `name`
200
+ # @return [String]
201
+ attr_accessor :name
202
+
203
+ # Output only. The total number of Kubernetes Pods contained in the Backup.
204
+ # Corresponds to the JSON property `podCount`
205
+ # @return [Fixnum]
206
+ attr_accessor :pod_count
207
+
208
+ # Output only. The total number of Kubernetes resources included in the Backup.
209
+ # Corresponds to the JSON property `resourceCount`
210
+ # @return [Fixnum]
211
+ attr_accessor :resource_count
212
+
213
+ # The age (in days) after which this Backup will be automatically deleted. If
214
+ # not specified at Backup creation time, this value is inherited from the parent
215
+ # BackupPlan's retention_policy.backup_retain_days value. Once a Backup is
216
+ # created, this value may only be increased. This must be an integer value >= 0.
217
+ # If 0, no automatic deletion will occur for this Backup. If not 0, this must be
218
+ # >= delete_lock_days. Default: inherited from BackupPlan.
219
+ # Corresponds to the JSON property `retainDays`
220
+ # @return [Fixnum]
221
+ attr_accessor :retain_days
222
+
223
+ # Output only. The time at which this Backup will be automatically deleted (
224
+ # calculated from create_time + retain_days).
225
+ # Corresponds to the JSON property `retainExpireTime`
226
+ # @return [String]
227
+ attr_accessor :retain_expire_time
228
+
229
+ # A list of namespaced Kubernetes resources.
230
+ # Corresponds to the JSON property `selectedApplications`
231
+ # @return [Google::Apis::GkebackupV1::NamespacedNames]
232
+ attr_accessor :selected_applications
233
+
234
+ # A list of Kubernetes Namespaces
235
+ # Corresponds to the JSON property `selectedNamespaces`
236
+ # @return [Google::Apis::GkebackupV1::Namespaces]
237
+ attr_accessor :selected_namespaces
238
+
239
+ # Output only. The total size of the Backup in bytes = config backup size + sum(
240
+ # volume backup sizes)
241
+ # Corresponds to the JSON property `sizeBytes`
242
+ # @return [Fixnum]
243
+ attr_accessor :size_bytes
244
+
245
+ # Output only. Current state of the Backup
246
+ # Corresponds to the JSON property `state`
247
+ # @return [String]
248
+ attr_accessor :state
249
+
250
+ # Output only. Human-readable description of why the backup is in the current `
251
+ # state`.
252
+ # Corresponds to the JSON property `stateReason`
253
+ # @return [String]
254
+ attr_accessor :state_reason
255
+
256
+ # Output only. [Output Only] Server generated global unique identifier of [UUID4]
257
+ # (https://en.wikipedia.org/wiki/Universally_unique_identifier)
258
+ # Corresponds to the JSON property `uid`
259
+ # @return [String]
260
+ attr_accessor :uid
261
+
262
+ # Output only. [Output Only] The timestamp when this Backup resource was last
263
+ # updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
264
+ # rfc3339.txt)
265
+ # Corresponds to the JSON property `updateTime`
266
+ # @return [String]
267
+ attr_accessor :update_time
268
+
269
+ # Output only. The total number of volume backups contained in the Backup.
270
+ # Corresponds to the JSON property `volumeCount`
271
+ # @return [Fixnum]
272
+ attr_accessor :volume_count
273
+
274
+ def initialize(**args)
275
+ update!(**args)
276
+ end
277
+
278
+ # Update properties of this object
279
+ def update!(**args)
280
+ @all_namespaces = args[:all_namespaces] if args.key?(:all_namespaces)
281
+ @cluster_metadata = args[:cluster_metadata] if args.key?(:cluster_metadata)
282
+ @complete_time = args[:complete_time] if args.key?(:complete_time)
283
+ @config_backup_size_bytes = args[:config_backup_size_bytes] if args.key?(:config_backup_size_bytes)
284
+ @contains_secrets = args[:contains_secrets] if args.key?(:contains_secrets)
285
+ @contains_volume_data = args[:contains_volume_data] if args.key?(:contains_volume_data)
286
+ @create_time = args[:create_time] if args.key?(:create_time)
287
+ @delete_lock_days = args[:delete_lock_days] if args.key?(:delete_lock_days)
288
+ @delete_lock_expire_time = args[:delete_lock_expire_time] if args.key?(:delete_lock_expire_time)
289
+ @description = args[:description] if args.key?(:description)
290
+ @encryption_key = args[:encryption_key] if args.key?(:encryption_key)
291
+ @etag = args[:etag] if args.key?(:etag)
292
+ @labels = args[:labels] if args.key?(:labels)
293
+ @manual = args[:manual] if args.key?(:manual)
294
+ @name = args[:name] if args.key?(:name)
295
+ @pod_count = args[:pod_count] if args.key?(:pod_count)
296
+ @resource_count = args[:resource_count] if args.key?(:resource_count)
297
+ @retain_days = args[:retain_days] if args.key?(:retain_days)
298
+ @retain_expire_time = args[:retain_expire_time] if args.key?(:retain_expire_time)
299
+ @selected_applications = args[:selected_applications] if args.key?(:selected_applications)
300
+ @selected_namespaces = args[:selected_namespaces] if args.key?(:selected_namespaces)
301
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
302
+ @state = args[:state] if args.key?(:state)
303
+ @state_reason = args[:state_reason] if args.key?(:state_reason)
304
+ @uid = args[:uid] if args.key?(:uid)
305
+ @update_time = args[:update_time] if args.key?(:update_time)
306
+ @volume_count = args[:volume_count] if args.key?(:volume_count)
307
+ end
308
+ end
309
+
310
+ # BackupConfig defines the configuration of Backups created via this BackupPlan.
311
+ class BackupConfig
312
+ include Google::Apis::Core::Hashable
313
+
314
+ # If True, include all namespaced resources
315
+ # Corresponds to the JSON property `allNamespaces`
316
+ # @return [Boolean]
317
+ attr_accessor :all_namespaces
318
+ alias_method :all_namespaces?, :all_namespaces
319
+
320
+ # Defined a customer managed encryption key that will be used to encrypt Backup
321
+ # artifacts.
322
+ # Corresponds to the JSON property `encryptionKey`
323
+ # @return [Google::Apis::GkebackupV1::EncryptionKey]
324
+ attr_accessor :encryption_key
325
+
326
+ # This flag specifies whether Kubernetes Secret resources should be included
327
+ # when they fall into the scope of Backups. Default: False
328
+ # Corresponds to the JSON property `includeSecrets`
329
+ # @return [Boolean]
330
+ attr_accessor :include_secrets
331
+ alias_method :include_secrets?, :include_secrets
332
+
333
+ # This flag specifies whether volume data should be backed up when PVCs are
334
+ # included in the scope of a Backup. Default: False
335
+ # Corresponds to the JSON property `includeVolumeData`
336
+ # @return [Boolean]
337
+ attr_accessor :include_volume_data
338
+ alias_method :include_volume_data?, :include_volume_data
339
+
340
+ # A list of namespaced Kubernetes resources.
341
+ # Corresponds to the JSON property `selectedApplications`
342
+ # @return [Google::Apis::GkebackupV1::NamespacedNames]
343
+ attr_accessor :selected_applications
344
+
345
+ # A list of Kubernetes Namespaces
346
+ # Corresponds to the JSON property `selectedNamespaces`
347
+ # @return [Google::Apis::GkebackupV1::Namespaces]
348
+ attr_accessor :selected_namespaces
349
+
350
+ def initialize(**args)
351
+ update!(**args)
352
+ end
353
+
354
+ # Update properties of this object
355
+ def update!(**args)
356
+ @all_namespaces = args[:all_namespaces] if args.key?(:all_namespaces)
357
+ @encryption_key = args[:encryption_key] if args.key?(:encryption_key)
358
+ @include_secrets = args[:include_secrets] if args.key?(:include_secrets)
359
+ @include_volume_data = args[:include_volume_data] if args.key?(:include_volume_data)
360
+ @selected_applications = args[:selected_applications] if args.key?(:selected_applications)
361
+ @selected_namespaces = args[:selected_namespaces] if args.key?(:selected_namespaces)
362
+ end
363
+ end
364
+
365
+ # Defines the configuration and scheduling for a "line" of Backups.
366
+ class BackupPlan
367
+ include Google::Apis::Core::Hashable
368
+
369
+ # BackupConfig defines the configuration of Backups created via this BackupPlan.
370
+ # Corresponds to the JSON property `backupConfig`
371
+ # @return [Google::Apis::GkebackupV1::BackupConfig]
372
+ attr_accessor :backup_config
373
+
374
+ # Schedule defines scheduling parameters for automatically creating Backups via
375
+ # this BackupPlan.
376
+ # Corresponds to the JSON property `backupSchedule`
377
+ # @return [Google::Apis::GkebackupV1::Schedule]
378
+ attr_accessor :backup_schedule
379
+
380
+ # Required. Immutable. The source cluster from which Backups will be created via
381
+ # this BackupPlan. Possible formats: 1. projects/*/locations/*/clusters/* 2.
382
+ # projects/*/zones/*/clusters/*
383
+ # Corresponds to the JSON property `cluster`
384
+ # @return [String]
385
+ attr_accessor :cluster
386
+
387
+ # Output only. [Output Only] The timestamp when this BackupPlan resource was
388
+ # created - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
389
+ # rfc3339.txt)
390
+ # Corresponds to the JSON property `createTime`
391
+ # @return [String]
392
+ attr_accessor :create_time
393
+
394
+ # This flag indicates whether this BackupPlan has been deactivated. Setting this
395
+ # field to True locks the BackupPlan such that no further updates will be
396
+ # allowed, including the deactivated field. It also prevents any new Backups
397
+ # from being created via this BackupPlan (including scheduled Backups). Default:
398
+ # False
399
+ # Corresponds to the JSON property `deactivated`
400
+ # @return [Boolean]
401
+ attr_accessor :deactivated
402
+ alias_method :deactivated?, :deactivated
403
+
404
+ # User specified descriptive string for this BackupPlan.
405
+ # Corresponds to the JSON property `description`
406
+ # @return [String]
407
+ attr_accessor :description
408
+
409
+ # Output only. `etag` is used for optimistic concurrency control as a way to
410
+ # help prevent simultaneous updates of a backup plan from overwriting each other.
411
+ # It is strongly suggested that systems make use of the 'etag' in the read-
412
+ # modify-write cycle to perform BackupPlan updates in order to avoid race
413
+ # conditions: An `etag` is returned in the response to `GetBackupPlan`, and
414
+ # systems are expected to put that etag in the request to `UpdateBackupPlan` to
415
+ # ensure that their change will be applied to the same version.
416
+ # Corresponds to the JSON property `etag`
417
+ # @return [String]
418
+ attr_accessor :etag
419
+
420
+ # A set of custom labels supplied by user.
421
+ # Corresponds to the JSON property `labels`
422
+ # @return [Hash<String,String>]
423
+ attr_accessor :labels
424
+
425
+ # Output only. [Output Only] The full name of the BackupPlan resource. Format:
426
+ # projects/*/locations/*/backupPlans/*
427
+ # Corresponds to the JSON property `name`
428
+ # @return [String]
429
+ attr_accessor :name
430
+
431
+ # Output only. [Output Only] Represents the number of Kubernetes Pods backed up
432
+ # in the last successful Backup created underneath this BackupPlan.
433
+ # Corresponds to the JSON property `protectedPodCount`
434
+ # @return [Fixnum]
435
+ attr_accessor :protected_pod_count
436
+
437
+ # RentionPolicy is an inner message type to define: 1. Minimum age for Backups
438
+ # created via this BackupPlan - deletion (either manual or automatic) of Backups
439
+ # younger than this age will be blocked 2. Default maximum age of Backups
440
+ # created via this BackupPlan, after which automatic deletion will occur 3. Lock
441
+ # to disallow any changes to any RetentionPolicy settings
442
+ # Corresponds to the JSON property `retentionPolicy`
443
+ # @return [Google::Apis::GkebackupV1::RetentionPolicy]
444
+ attr_accessor :retention_policy
445
+
446
+ # Output only. [Output Only] Server generated global unique identifier of [UUID](
447
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
448
+ # Corresponds to the JSON property `uid`
449
+ # @return [String]
450
+ attr_accessor :uid
451
+
452
+ # Output only. [Output Only] The timestamp when this BackupPlan resource was
453
+ # last updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
454
+ # rfc3339.txt)
455
+ # Corresponds to the JSON property `updateTime`
456
+ # @return [String]
457
+ attr_accessor :update_time
458
+
459
+ def initialize(**args)
460
+ update!(**args)
461
+ end
462
+
463
+ # Update properties of this object
464
+ def update!(**args)
465
+ @backup_config = args[:backup_config] if args.key?(:backup_config)
466
+ @backup_schedule = args[:backup_schedule] if args.key?(:backup_schedule)
467
+ @cluster = args[:cluster] if args.key?(:cluster)
468
+ @create_time = args[:create_time] if args.key?(:create_time)
469
+ @deactivated = args[:deactivated] if args.key?(:deactivated)
470
+ @description = args[:description] if args.key?(:description)
471
+ @etag = args[:etag] if args.key?(:etag)
472
+ @labels = args[:labels] if args.key?(:labels)
473
+ @name = args[:name] if args.key?(:name)
474
+ @protected_pod_count = args[:protected_pod_count] if args.key?(:protected_pod_count)
475
+ @retention_policy = args[:retention_policy] if args.key?(:retention_policy)
476
+ @uid = args[:uid] if args.key?(:uid)
477
+ @update_time = args[:update_time] if args.key?(:update_time)
478
+ end
479
+ end
480
+
481
+ # Associates `members`, or principals, with a `role`.
482
+ class Binding
483
+ include Google::Apis::Core::Hashable
484
+
485
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
486
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
487
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
488
+ # "Summary size limit" description: "Determines if a summary is less than 100
489
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
490
+ # Requestor is owner" description: "Determines if requestor is the document
491
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
492
+ # Logic): title: "Public documents" description: "Determine whether the document
493
+ # should be publicly visible" expression: "document.type != 'private' &&
494
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
495
+ # string" description: "Create a notification string with a timestamp."
496
+ # expression: "'New message received at ' + string(document.create_time)" The
497
+ # exact variables and functions that may be referenced within an expression are
498
+ # determined by the service that evaluates it. See the service documentation for
499
+ # additional information.
500
+ # Corresponds to the JSON property `condition`
501
+ # @return [Google::Apis::GkebackupV1::Expr]
502
+ attr_accessor :condition
503
+
504
+ # Specifies the principals requesting access for a Cloud Platform resource. `
505
+ # members` can have the following values: * `allUsers`: A special identifier
506
+ # that represents anyone who is on the internet; with or without a Google
507
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
508
+ # anyone who is authenticated with a Google account or a service account. * `
509
+ # user:`emailid``: An email address that represents a specific Google account.
510
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
511
+ # address that represents a service account. For example, `my-other-app@appspot.
512
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
513
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
514
+ # `uniqueid``: An email address (plus unique identifier) representing a user
515
+ # that has been recently deleted. For example, `alice@example.com?uid=
516
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
517
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
518
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
519
+ # identifier) representing a service account that has been recently deleted. For
520
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
521
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
522
+ # emailid`` and the undeleted service account retains the role in the binding. *
523
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
524
+ # identifier) representing a Google group that has been recently deleted. For
525
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
526
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
527
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
528
+ # primary) that represents all the users of that domain. For example, `google.
529
+ # com` or `example.com`.
530
+ # Corresponds to the JSON property `members`
531
+ # @return [Array<String>]
532
+ attr_accessor :members
533
+
534
+ # Role that is assigned to the list of `members`, or principals. For example, `
535
+ # roles/viewer`, `roles/editor`, or `roles/owner`.
536
+ # Corresponds to the JSON property `role`
537
+ # @return [String]
538
+ attr_accessor :role
539
+
540
+ def initialize(**args)
541
+ update!(**args)
542
+ end
543
+
544
+ # Update properties of this object
545
+ def update!(**args)
546
+ @condition = args[:condition] if args.key?(:condition)
547
+ @members = args[:members] if args.key?(:members)
548
+ @role = args[:role] if args.key?(:role)
549
+ end
550
+ end
551
+
552
+ # Information about the GKE cluster from which this Backup was created.
553
+ class ClusterMetadata
554
+ include Google::Apis::Core::Hashable
555
+
556
+ # Anthos version
557
+ # Corresponds to the JSON property `anthosVersion`
558
+ # @return [String]
559
+ attr_accessor :anthos_version
560
+
561
+ # A list of the Backup for GKE CRD versions found in the cluster.
562
+ # Corresponds to the JSON property `backupCrdVersions`
563
+ # @return [Hash<String,String>]
564
+ attr_accessor :backup_crd_versions
565
+
566
+ # The source cluster from which this Backup was created. Possible formats: 1.
567
+ # projects/*/locations/*/clusters/* 2. projects/*/zones/*/clusters/* This will
568
+ # be the same value as the parent BackupPlan's cluster field.
569
+ # Corresponds to the JSON property `cluster`
570
+ # @return [String]
571
+ attr_accessor :cluster
572
+
573
+ # GKE version
574
+ # Corresponds to the JSON property `gkeVersion`
575
+ # @return [String]
576
+ attr_accessor :gke_version
577
+
578
+ # The Kubernetes server version of the source cluster.
579
+ # Corresponds to the JSON property `k8sVersion`
580
+ # @return [String]
581
+ attr_accessor :k8s_version
582
+
583
+ def initialize(**args)
584
+ update!(**args)
585
+ end
586
+
587
+ # Update properties of this object
588
+ def update!(**args)
589
+ @anthos_version = args[:anthos_version] if args.key?(:anthos_version)
590
+ @backup_crd_versions = args[:backup_crd_versions] if args.key?(:backup_crd_versions)
591
+ @cluster = args[:cluster] if args.key?(:cluster)
592
+ @gke_version = args[:gke_version] if args.key?(:gke_version)
593
+ @k8s_version = args[:k8s_version] if args.key?(:k8s_version)
594
+ end
595
+ end
596
+
597
+ # Identifies the cluster-scoped resources to restore from the Backup.
598
+ class ClusterResourceRestoreScope
599
+ include Google::Apis::Core::Hashable
600
+
601
+ # A list of "types" of cluster-scoped resources to be restored from the Backup.
602
+ # An empty list means that NO cluster-scoped resources will be restored. Note
603
+ # that Namespaces and PersistentVolume restoration is handled separately and is
604
+ # not governed by this field.
605
+ # Corresponds to the JSON property `selectedGroupKinds`
606
+ # @return [Array<Google::Apis::GkebackupV1::GroupKind>]
607
+ attr_accessor :selected_group_kinds
608
+
609
+ def initialize(**args)
610
+ update!(**args)
611
+ end
612
+
613
+ # Update properties of this object
614
+ def update!(**args)
615
+ @selected_group_kinds = args[:selected_group_kinds] if args.key?(:selected_group_kinds)
616
+ end
617
+ end
618
+
619
+ # A generic empty message that you can re-use to avoid defining duplicated empty
620
+ # messages in your APIs. A typical example is to use it as the request or the
621
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
622
+ # protobuf.Empty) returns (google.protobuf.Empty); `
623
+ class Empty
624
+ include Google::Apis::Core::Hashable
625
+
626
+ def initialize(**args)
627
+ update!(**args)
628
+ end
629
+
630
+ # Update properties of this object
631
+ def update!(**args)
632
+ end
633
+ end
634
+
635
+ # Defined a customer managed encryption key that will be used to encrypt Backup
636
+ # artifacts.
637
+ class EncryptionKey
638
+ include Google::Apis::Core::Hashable
639
+
640
+ # Google Cloud KMS encryption key. Format: projects//locations//keyRings//
641
+ # cryptoKeys/
642
+ # Corresponds to the JSON property `gcpKmsEncryptionKey`
643
+ # @return [String]
644
+ attr_accessor :gcp_kms_encryption_key
645
+
646
+ def initialize(**args)
647
+ update!(**args)
648
+ end
649
+
650
+ # Update properties of this object
651
+ def update!(**args)
652
+ @gcp_kms_encryption_key = args[:gcp_kms_encryption_key] if args.key?(:gcp_kms_encryption_key)
653
+ end
654
+ end
655
+
656
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
657
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
658
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
659
+ # "Summary size limit" description: "Determines if a summary is less than 100
660
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
661
+ # Requestor is owner" description: "Determines if requestor is the document
662
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
663
+ # Logic): title: "Public documents" description: "Determine whether the document
664
+ # should be publicly visible" expression: "document.type != 'private' &&
665
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
666
+ # string" description: "Create a notification string with a timestamp."
667
+ # expression: "'New message received at ' + string(document.create_time)" The
668
+ # exact variables and functions that may be referenced within an expression are
669
+ # determined by the service that evaluates it. See the service documentation for
670
+ # additional information.
671
+ class Expr
672
+ include Google::Apis::Core::Hashable
673
+
674
+ # Optional. Description of the expression. This is a longer text which describes
675
+ # the expression, e.g. when hovered over it in a UI.
676
+ # Corresponds to the JSON property `description`
677
+ # @return [String]
678
+ attr_accessor :description
679
+
680
+ # Textual representation of an expression in Common Expression Language syntax.
681
+ # Corresponds to the JSON property `expression`
682
+ # @return [String]
683
+ attr_accessor :expression
684
+
685
+ # Optional. String indicating the location of the expression for error reporting,
686
+ # e.g. a file name and a position in the file.
687
+ # Corresponds to the JSON property `location`
688
+ # @return [String]
689
+ attr_accessor :location
690
+
691
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
692
+ # This can be used e.g. in UIs which allow to enter the expression.
693
+ # Corresponds to the JSON property `title`
694
+ # @return [String]
695
+ attr_accessor :title
696
+
697
+ def initialize(**args)
698
+ update!(**args)
699
+ end
700
+
701
+ # Update properties of this object
702
+ def update!(**args)
703
+ @description = args[:description] if args.key?(:description)
704
+ @expression = args[:expression] if args.key?(:expression)
705
+ @location = args[:location] if args.key?(:location)
706
+ @title = args[:title] if args.key?(:title)
707
+ end
708
+ end
709
+
710
+ # The request message for Operations.CancelOperation.
711
+ class GoogleLongrunningCancelOperationRequest
712
+ include Google::Apis::Core::Hashable
713
+
714
+ def initialize(**args)
715
+ update!(**args)
716
+ end
717
+
718
+ # Update properties of this object
719
+ def update!(**args)
720
+ end
721
+ end
722
+
723
+ # The response message for Operations.ListOperations.
724
+ class GoogleLongrunningListOperationsResponse
725
+ include Google::Apis::Core::Hashable
726
+
727
+ # The standard List next-page token.
728
+ # Corresponds to the JSON property `nextPageToken`
729
+ # @return [String]
730
+ attr_accessor :next_page_token
731
+
732
+ # A list of operations that matches the specified filter in the request.
733
+ # Corresponds to the JSON property `operations`
734
+ # @return [Array<Google::Apis::GkebackupV1::GoogleLongrunningOperation>]
735
+ attr_accessor :operations
736
+
737
+ def initialize(**args)
738
+ update!(**args)
739
+ end
740
+
741
+ # Update properties of this object
742
+ def update!(**args)
743
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
744
+ @operations = args[:operations] if args.key?(:operations)
745
+ end
746
+ end
747
+
748
+ # This resource represents a long-running operation that is the result of a
749
+ # network API call.
750
+ class GoogleLongrunningOperation
751
+ include Google::Apis::Core::Hashable
752
+
753
+ # If the value is `false`, it means the operation is still in progress. If `true`
754
+ # , the operation is completed, and either `error` or `response` is available.
755
+ # Corresponds to the JSON property `done`
756
+ # @return [Boolean]
757
+ attr_accessor :done
758
+ alias_method :done?, :done
759
+
760
+ # The `Status` type defines a logical error model that is suitable for different
761
+ # programming environments, including REST APIs and RPC APIs. It is used by [
762
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
763
+ # data: error code, error message, and error details. You can find out more
764
+ # about this error model and how to work with it in the [API Design Guide](https:
765
+ # //cloud.google.com/apis/design/errors).
766
+ # Corresponds to the JSON property `error`
767
+ # @return [Google::Apis::GkebackupV1::GoogleRpcStatus]
768
+ attr_accessor :error
769
+
770
+ # Service-specific metadata associated with the operation. It typically contains
771
+ # progress information and common metadata such as create time. Some services
772
+ # might not provide such metadata. Any method that returns a long-running
773
+ # operation should document the metadata type, if any.
774
+ # Corresponds to the JSON property `metadata`
775
+ # @return [Hash<String,Object>]
776
+ attr_accessor :metadata
777
+
778
+ # The server-assigned name, which is only unique within the same service that
779
+ # originally returns it. If you use the default HTTP mapping, the `name` should
780
+ # be a resource name ending with `operations/`unique_id``.
781
+ # Corresponds to the JSON property `name`
782
+ # @return [String]
783
+ attr_accessor :name
784
+
785
+ # The normal response of the operation in case of success. If the original
786
+ # method returns no data on success, such as `Delete`, the response is `google.
787
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
788
+ # the response should be the resource. For other methods, the response should
789
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
790
+ # example, if the original method name is `TakeSnapshot()`, the inferred
791
+ # response type is `TakeSnapshotResponse`.
792
+ # Corresponds to the JSON property `response`
793
+ # @return [Hash<String,Object>]
794
+ attr_accessor :response
795
+
796
+ def initialize(**args)
797
+ update!(**args)
798
+ end
799
+
800
+ # Update properties of this object
801
+ def update!(**args)
802
+ @done = args[:done] if args.key?(:done)
803
+ @error = args[:error] if args.key?(:error)
804
+ @metadata = args[:metadata] if args.key?(:metadata)
805
+ @name = args[:name] if args.key?(:name)
806
+ @response = args[:response] if args.key?(:response)
807
+ end
808
+ end
809
+
810
+ # The `Status` type defines a logical error model that is suitable for different
811
+ # programming environments, including REST APIs and RPC APIs. It is used by [
812
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
813
+ # data: error code, error message, and error details. You can find out more
814
+ # about this error model and how to work with it in the [API Design Guide](https:
815
+ # //cloud.google.com/apis/design/errors).
816
+ class GoogleRpcStatus
817
+ include Google::Apis::Core::Hashable
818
+
819
+ # The status code, which should be an enum value of google.rpc.Code.
820
+ # Corresponds to the JSON property `code`
821
+ # @return [Fixnum]
822
+ attr_accessor :code
823
+
824
+ # A list of messages that carry the error details. There is a common set of
825
+ # message types for APIs to use.
826
+ # Corresponds to the JSON property `details`
827
+ # @return [Array<Hash<String,Object>>]
828
+ attr_accessor :details
829
+
830
+ # A developer-facing error message, which should be in English. Any user-facing
831
+ # error message should be localized and sent in the google.rpc.Status.details
832
+ # field, or localized by the client.
833
+ # Corresponds to the JSON property `message`
834
+ # @return [String]
835
+ attr_accessor :message
836
+
837
+ def initialize(**args)
838
+ update!(**args)
839
+ end
840
+
841
+ # Update properties of this object
842
+ def update!(**args)
843
+ @code = args[:code] if args.key?(:code)
844
+ @details = args[:details] if args.key?(:details)
845
+ @message = args[:message] if args.key?(:message)
846
+ end
847
+ end
848
+
849
+ # This is a direct map to the Kubernetes GroupKind type [GroupKind](https://
850
+ # godoc.org/k8s.io/apimachinery/pkg/runtime/schema#GroupKind) and is used for
851
+ # identifying specific "types" of resources to restore.
852
+ class GroupKind
853
+ include Google::Apis::Core::Hashable
854
+
855
+ # API group string of a Kubernetes resource, e.g. "apiextensions.k8s.io", "
856
+ # storage.k8s.io", etc. Note: use empty string for core API group
857
+ # Corresponds to the JSON property `resourceGroup`
858
+ # @return [String]
859
+ attr_accessor :resource_group
860
+
861
+ # Kind of a Kubernetes resource, e.g. "CustomResourceDefinition", "StorageClass",
862
+ # etc.
863
+ # Corresponds to the JSON property `resourceKind`
864
+ # @return [String]
865
+ attr_accessor :resource_kind
866
+
867
+ def initialize(**args)
868
+ update!(**args)
869
+ end
870
+
871
+ # Update properties of this object
872
+ def update!(**args)
873
+ @resource_group = args[:resource_group] if args.key?(:resource_group)
874
+ @resource_kind = args[:resource_kind] if args.key?(:resource_kind)
875
+ end
876
+ end
877
+
878
+ # Response message for ListBackupPlans.
879
+ class ListBackupPlansResponse
880
+ include Google::Apis::Core::Hashable
881
+
882
+ # The list of BackupPlans.
883
+ # Corresponds to the JSON property `backupPlans`
884
+ # @return [Array<Google::Apis::GkebackupV1::BackupPlan>]
885
+ attr_accessor :backup_plans
886
+
887
+ # A token which may be sent as `page_token` in a subsequent `ListBackupPlans`
888
+ # call to retrieve the next page of results. If this field is omitted or empty,
889
+ # then there are no more results to return.
890
+ # Corresponds to the JSON property `nextPageToken`
891
+ # @return [String]
892
+ attr_accessor :next_page_token
893
+
894
+ # Locations that could not be reached.
895
+ # Corresponds to the JSON property `unreachable`
896
+ # @return [Array<String>]
897
+ attr_accessor :unreachable
898
+
899
+ def initialize(**args)
900
+ update!(**args)
901
+ end
902
+
903
+ # Update properties of this object
904
+ def update!(**args)
905
+ @backup_plans = args[:backup_plans] if args.key?(:backup_plans)
906
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
907
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
908
+ end
909
+ end
910
+
911
+ # Response message for ListBackups.
912
+ class ListBackupsResponse
913
+ include Google::Apis::Core::Hashable
914
+
915
+ # The list of restore resources within the parent.
916
+ # Corresponds to the JSON property `backups`
917
+ # @return [Array<Google::Apis::GkebackupV1::Backup>]
918
+ attr_accessor :backups
919
+
920
+ # A token which may be sent as `page_token` in a subsequent `ListBackups` call
921
+ # to retrieve the next page of results. If this field is omitted or empty, then
922
+ # there are no more results to return.
923
+ # Corresponds to the JSON property `nextPageToken`
924
+ # @return [String]
925
+ attr_accessor :next_page_token
926
+
927
+ def initialize(**args)
928
+ update!(**args)
929
+ end
930
+
931
+ # Update properties of this object
932
+ def update!(**args)
933
+ @backups = args[:backups] if args.key?(:backups)
934
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
935
+ end
936
+ end
937
+
938
+ # The response message for Locations.ListLocations.
939
+ class ListLocationsResponse
940
+ include Google::Apis::Core::Hashable
941
+
942
+ # A list of locations that matches the specified filter in the request.
943
+ # Corresponds to the JSON property `locations`
944
+ # @return [Array<Google::Apis::GkebackupV1::Location>]
945
+ attr_accessor :locations
946
+
947
+ # The standard List next-page token.
948
+ # Corresponds to the JSON property `nextPageToken`
949
+ # @return [String]
950
+ attr_accessor :next_page_token
951
+
952
+ def initialize(**args)
953
+ update!(**args)
954
+ end
955
+
956
+ # Update properties of this object
957
+ def update!(**args)
958
+ @locations = args[:locations] if args.key?(:locations)
959
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
960
+ end
961
+ end
962
+
963
+ # Response message for ListRestorePlans.
964
+ class ListRestorePlansResponse
965
+ include Google::Apis::Core::Hashable
966
+
967
+ # A token which may be sent as `page_token` in a subsequent `ListRestorePlans`
968
+ # call to retrieve the next page of results. If this field is omitted or empty,
969
+ # then there are no more results to return.
970
+ # Corresponds to the JSON property `nextPageToken`
971
+ # @return [String]
972
+ attr_accessor :next_page_token
973
+
974
+ # The list of RestorePlans.
975
+ # Corresponds to the JSON property `restorePlans`
976
+ # @return [Array<Google::Apis::GkebackupV1::RestorePlan>]
977
+ attr_accessor :restore_plans
978
+
979
+ # Locations that could not be reached.
980
+ # Corresponds to the JSON property `unreachable`
981
+ # @return [Array<String>]
982
+ attr_accessor :unreachable
983
+
984
+ def initialize(**args)
985
+ update!(**args)
986
+ end
987
+
988
+ # Update properties of this object
989
+ def update!(**args)
990
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
991
+ @restore_plans = args[:restore_plans] if args.key?(:restore_plans)
992
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
993
+ end
994
+ end
995
+
996
+ # Response message for ListRestores.
997
+ class ListRestoresResponse
998
+ include Google::Apis::Core::Hashable
999
+
1000
+ # A token which may be sent as `page_token` in a subsequent `ListRestores` call
1001
+ # to retrieve the next page of results. If this field is omitted or empty, then
1002
+ # there are no more results to return.
1003
+ # Corresponds to the JSON property `nextPageToken`
1004
+ # @return [String]
1005
+ attr_accessor :next_page_token
1006
+
1007
+ # The list of restore resources within the parent.
1008
+ # Corresponds to the JSON property `restores`
1009
+ # @return [Array<Google::Apis::GkebackupV1::Restore>]
1010
+ attr_accessor :restores
1011
+
1012
+ # Locations that could not be reached.
1013
+ # Corresponds to the JSON property `unreachable`
1014
+ # @return [Array<String>]
1015
+ attr_accessor :unreachable
1016
+
1017
+ def initialize(**args)
1018
+ update!(**args)
1019
+ end
1020
+
1021
+ # Update properties of this object
1022
+ def update!(**args)
1023
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1024
+ @restores = args[:restores] if args.key?(:restores)
1025
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
1026
+ end
1027
+ end
1028
+
1029
+ # Response message for ListVolumeBackups.
1030
+ class ListVolumeBackupsResponse
1031
+ include Google::Apis::Core::Hashable
1032
+
1033
+ # A token which may be sent as `page_token` in a subsequent `ListVolumeBackups`
1034
+ # call to retrieve the next page of results. If this field is omitted or empty,
1035
+ # then there are no more results to return.
1036
+ # Corresponds to the JSON property `nextPageToken`
1037
+ # @return [String]
1038
+ attr_accessor :next_page_token
1039
+
1040
+ # The list of VolumeBackups resources within the parent.
1041
+ # Corresponds to the JSON property `volumeBackups`
1042
+ # @return [Array<Google::Apis::GkebackupV1::VolumeBackup>]
1043
+ attr_accessor :volume_backups
1044
+
1045
+ def initialize(**args)
1046
+ update!(**args)
1047
+ end
1048
+
1049
+ # Update properties of this object
1050
+ def update!(**args)
1051
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1052
+ @volume_backups = args[:volume_backups] if args.key?(:volume_backups)
1053
+ end
1054
+ end
1055
+
1056
+ # Response message for ListVolumeRestores.
1057
+ class ListVolumeRestoresResponse
1058
+ include Google::Apis::Core::Hashable
1059
+
1060
+ # A token which may be sent as `page_token` in a subsequent `ListVolumeRestores`
1061
+ # call to retrieve the next page of results. If this field is omitted or empty,
1062
+ # then there are no more results to return.
1063
+ # Corresponds to the JSON property `nextPageToken`
1064
+ # @return [String]
1065
+ attr_accessor :next_page_token
1066
+
1067
+ # The list of VolumeRestores resources within the parent.
1068
+ # Corresponds to the JSON property `volumeRestores`
1069
+ # @return [Array<Google::Apis::GkebackupV1::VolumeRestore>]
1070
+ attr_accessor :volume_restores
1071
+
1072
+ def initialize(**args)
1073
+ update!(**args)
1074
+ end
1075
+
1076
+ # Update properties of this object
1077
+ def update!(**args)
1078
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1079
+ @volume_restores = args[:volume_restores] if args.key?(:volume_restores)
1080
+ end
1081
+ end
1082
+
1083
+ # A resource that represents Google Cloud Platform location.
1084
+ class Location
1085
+ include Google::Apis::Core::Hashable
1086
+
1087
+ # The friendly name for this location, typically a nearby city name. For example,
1088
+ # "Tokyo".
1089
+ # Corresponds to the JSON property `displayName`
1090
+ # @return [String]
1091
+ attr_accessor :display_name
1092
+
1093
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
1094
+ # region": "us-east1"`
1095
+ # Corresponds to the JSON property `labels`
1096
+ # @return [Hash<String,String>]
1097
+ attr_accessor :labels
1098
+
1099
+ # The canonical id for this location. For example: `"us-east1"`.
1100
+ # Corresponds to the JSON property `locationId`
1101
+ # @return [String]
1102
+ attr_accessor :location_id
1103
+
1104
+ # Service-specific metadata. For example the available capacity at the given
1105
+ # location.
1106
+ # Corresponds to the JSON property `metadata`
1107
+ # @return [Hash<String,Object>]
1108
+ attr_accessor :metadata
1109
+
1110
+ # Resource name for the location, which may vary between implementations. For
1111
+ # example: `"projects/example-project/locations/us-east1"`
1112
+ # Corresponds to the JSON property `name`
1113
+ # @return [String]
1114
+ attr_accessor :name
1115
+
1116
+ def initialize(**args)
1117
+ update!(**args)
1118
+ end
1119
+
1120
+ # Update properties of this object
1121
+ def update!(**args)
1122
+ @display_name = args[:display_name] if args.key?(:display_name)
1123
+ @labels = args[:labels] if args.key?(:labels)
1124
+ @location_id = args[:location_id] if args.key?(:location_id)
1125
+ @metadata = args[:metadata] if args.key?(:metadata)
1126
+ @name = args[:name] if args.key?(:name)
1127
+ end
1128
+ end
1129
+
1130
+ # A reference to a namespaced resource in Kubernetes.
1131
+ class NamespacedName
1132
+ include Google::Apis::Core::Hashable
1133
+
1134
+ # The name of the Kubernetes resource.
1135
+ # Corresponds to the JSON property `name`
1136
+ # @return [String]
1137
+ attr_accessor :name
1138
+
1139
+ # The Namespace of the Kubernetes resource.
1140
+ # Corresponds to the JSON property `namespace`
1141
+ # @return [String]
1142
+ attr_accessor :namespace
1143
+
1144
+ def initialize(**args)
1145
+ update!(**args)
1146
+ end
1147
+
1148
+ # Update properties of this object
1149
+ def update!(**args)
1150
+ @name = args[:name] if args.key?(:name)
1151
+ @namespace = args[:namespace] if args.key?(:namespace)
1152
+ end
1153
+ end
1154
+
1155
+ # A list of namespaced Kubernetes resources.
1156
+ class NamespacedNames
1157
+ include Google::Apis::Core::Hashable
1158
+
1159
+ # A list of namespaced Kubernetes resources.
1160
+ # Corresponds to the JSON property `namespacedNames`
1161
+ # @return [Array<Google::Apis::GkebackupV1::NamespacedName>]
1162
+ attr_accessor :namespaced_names
1163
+
1164
+ def initialize(**args)
1165
+ update!(**args)
1166
+ end
1167
+
1168
+ # Update properties of this object
1169
+ def update!(**args)
1170
+ @namespaced_names = args[:namespaced_names] if args.key?(:namespaced_names)
1171
+ end
1172
+ end
1173
+
1174
+ # A list of Kubernetes Namespaces
1175
+ class Namespaces
1176
+ include Google::Apis::Core::Hashable
1177
+
1178
+ # A list of Kubernetes Namespaces
1179
+ # Corresponds to the JSON property `namespaces`
1180
+ # @return [Array<String>]
1181
+ attr_accessor :namespaces
1182
+
1183
+ def initialize(**args)
1184
+ update!(**args)
1185
+ end
1186
+
1187
+ # Update properties of this object
1188
+ def update!(**args)
1189
+ @namespaces = args[:namespaces] if args.key?(:namespaces)
1190
+ end
1191
+ end
1192
+
1193
+ # Represents the metadata of the long-running operation.
1194
+ class OperationMetadata
1195
+ include Google::Apis::Core::Hashable
1196
+
1197
+ # Output only. API version used to start the operation.
1198
+ # Corresponds to the JSON property `apiVersion`
1199
+ # @return [String]
1200
+ attr_accessor :api_version
1201
+
1202
+ # Output only. The time the operation was created.
1203
+ # Corresponds to the JSON property `createTime`
1204
+ # @return [String]
1205
+ attr_accessor :create_time
1206
+
1207
+ # Output only. The time the operation finished running.
1208
+ # Corresponds to the JSON property `endTime`
1209
+ # @return [String]
1210
+ attr_accessor :end_time
1211
+
1212
+ # Output only. Identifies whether the user has requested cancellation of the
1213
+ # operation. Operations that have successfully been cancelled have Operation.
1214
+ # error value with a google.rpc.Status.code of 1, corresponding to `Code.
1215
+ # CANCELLED`.
1216
+ # Corresponds to the JSON property `requestedCancellation`
1217
+ # @return [Boolean]
1218
+ attr_accessor :requested_cancellation
1219
+ alias_method :requested_cancellation?, :requested_cancellation
1220
+
1221
+ # Output only. Human-readable status of the operation, if any.
1222
+ # Corresponds to the JSON property `statusMessage`
1223
+ # @return [String]
1224
+ attr_accessor :status_message
1225
+
1226
+ # Output only. Server-defined resource path for the target of the operation.
1227
+ # Corresponds to the JSON property `target`
1228
+ # @return [String]
1229
+ attr_accessor :target
1230
+
1231
+ # Output only. Name of the verb executed by the operation.
1232
+ # Corresponds to the JSON property `verb`
1233
+ # @return [String]
1234
+ attr_accessor :verb
1235
+
1236
+ def initialize(**args)
1237
+ update!(**args)
1238
+ end
1239
+
1240
+ # Update properties of this object
1241
+ def update!(**args)
1242
+ @api_version = args[:api_version] if args.key?(:api_version)
1243
+ @create_time = args[:create_time] if args.key?(:create_time)
1244
+ @end_time = args[:end_time] if args.key?(:end_time)
1245
+ @requested_cancellation = args[:requested_cancellation] if args.key?(:requested_cancellation)
1246
+ @status_message = args[:status_message] if args.key?(:status_message)
1247
+ @target = args[:target] if args.key?(:target)
1248
+ @verb = args[:verb] if args.key?(:verb)
1249
+ end
1250
+ end
1251
+
1252
+ # An Identity and Access Management (IAM) policy, which specifies access
1253
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1254
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
1255
+ # Principals can be user accounts, service accounts, Google groups, and domains (
1256
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
1257
+ # an IAM predefined role or a user-created custom role. For some types of Google
1258
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
1259
+ # logical expression that allows access to a resource only if the expression
1260
+ # evaluates to `true`. A condition can add constraints based on attributes of
1261
+ # the request, the resource, or both. To learn which resources support
1262
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
1263
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ` "
1264
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
1265
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
1266
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
1267
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
1268
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
1269
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
1270
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:**
1271
+ # bindings: - members: - user:mike@example.com - group:admins@example.com -
1272
+ # domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com
1273
+ # role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.
1274
+ # com role: roles/resourcemanager.organizationViewer condition: title: expirable
1275
+ # access description: Does not grant access after Sep 2020 expression: request.
1276
+ # time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For
1277
+ # a description of IAM and its features, see the [IAM documentation](https://
1278
+ # cloud.google.com/iam/docs/).
1279
+ class Policy
1280
+ include Google::Apis::Core::Hashable
1281
+
1282
+ # Specifies cloud audit logging configuration for this policy.
1283
+ # Corresponds to the JSON property `auditConfigs`
1284
+ # @return [Array<Google::Apis::GkebackupV1::AuditConfig>]
1285
+ attr_accessor :audit_configs
1286
+
1287
+ # Associates a list of `members`, or principals, with a `role`. Optionally, may
1288
+ # specify a `condition` that determines how and when the `bindings` are applied.
1289
+ # Each of the `bindings` must contain at least one principal. The `bindings` in
1290
+ # a `Policy` can refer to up to 1,500 principals; up to 250 of these principals
1291
+ # can be Google groups. Each occurrence of a principal counts towards these
1292
+ # limits. For example, if the `bindings` grant 50 different roles to `user:alice@
1293
+ # example.com`, and not to any other principal, then you can add another 1,450
1294
+ # principals to the `bindings` in the `Policy`.
1295
+ # Corresponds to the JSON property `bindings`
1296
+ # @return [Array<Google::Apis::GkebackupV1::Binding>]
1297
+ attr_accessor :bindings
1298
+
1299
+ # `etag` is used for optimistic concurrency control as a way to help prevent
1300
+ # simultaneous updates of a policy from overwriting each other. It is strongly
1301
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
1302
+ # to perform policy updates in order to avoid race conditions: An `etag` is
1303
+ # returned in the response to `getIamPolicy`, and systems are expected to put
1304
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
1305
+ # applied to the same version of the policy. **Important:** If you use IAM
1306
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
1307
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
1308
+ # with a version `1` policy, and all of the conditions in the version `3` policy
1309
+ # are lost.
1310
+ # Corresponds to the JSON property `etag`
1311
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1312
+ # @return [String]
1313
+ attr_accessor :etag
1314
+
1315
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
1316
+ # Requests that specify an invalid value are rejected. Any operation that
1317
+ # affects conditional role bindings must specify version `3`. This requirement
1318
+ # applies to the following operations: * Getting a policy that includes a
1319
+ # conditional role binding * Adding a conditional role binding to a policy *
1320
+ # Changing a conditional role binding in a policy * Removing any role binding,
1321
+ # with or without a condition, from a policy that includes conditions **
1322
+ # Important:** If you use IAM Conditions, you must include the `etag` field
1323
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
1324
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
1325
+ # conditions in the version `3` policy are lost. If a policy does not include
1326
+ # any conditions, operations on that policy may specify any valid version or
1327
+ # leave the field unset. To learn which resources support conditions in their
1328
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
1329
+ # conditions/resource-policies).
1330
+ # Corresponds to the JSON property `version`
1331
+ # @return [Fixnum]
1332
+ attr_accessor :version
1333
+
1334
+ def initialize(**args)
1335
+ update!(**args)
1336
+ end
1337
+
1338
+ # Update properties of this object
1339
+ def update!(**args)
1340
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
1341
+ @bindings = args[:bindings] if args.key?(:bindings)
1342
+ @etag = args[:etag] if args.key?(:etag)
1343
+ @version = args[:version] if args.key?(:version)
1344
+ end
1345
+ end
1346
+
1347
+ # Represents both a request to Restore some portion of a Backup into a target
1348
+ # GKE cluster and a record of the restore operation itself. Next id: 18
1349
+ class Restore
1350
+ include Google::Apis::Core::Hashable
1351
+
1352
+ # Required. Immutable. The Backup used as the source from which this Restore
1353
+ # will restore. Note that this Backup must be a sub-resource of the RestorePlan'
1354
+ # s backup_plan. Format: projects/*/locations/*/backupPlans/*/backups/*.
1355
+ # Corresponds to the JSON property `backup`
1356
+ # @return [String]
1357
+ attr_accessor :backup
1358
+
1359
+ # Output only. The target cluster into which this Restore will restore data.
1360
+ # Possible formats: 1. projects/*/locations/*/clusters/* 2. projects/*/zones/*/
1361
+ # clusters/* Inherited from parent RestorePlan's cluster field.
1362
+ # Corresponds to the JSON property `cluster`
1363
+ # @return [String]
1364
+ attr_accessor :cluster
1365
+
1366
+ # Output only. When the restore operation either successfully completed or
1367
+ # failed.
1368
+ # Corresponds to the JSON property `completeTime`
1369
+ # @return [String]
1370
+ attr_accessor :complete_time
1371
+
1372
+ # Output only. [Output Only] The timestamp when this Restore resource was
1373
+ # created - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1374
+ # rfc3339.txt)
1375
+ # Corresponds to the JSON property `createTime`
1376
+ # @return [String]
1377
+ attr_accessor :create_time
1378
+
1379
+ # User specified descriptive string for this Restore.
1380
+ # Corresponds to the JSON property `description`
1381
+ # @return [String]
1382
+ attr_accessor :description
1383
+
1384
+ # Output only. `etag` is used for optimistic concurrency control as a way to
1385
+ # help prevent simultaneous updates of a restore from overwriting each other. It
1386
+ # is strongly suggested that systems make use of the `etag` in the read-modify-
1387
+ # write cycle to perform restore updates in order to avoid race conditions: An `
1388
+ # etag` is returned in the response to `GetRestore`, and systems are expected to
1389
+ # put that etag in the request to `UpdateRestore` to ensure that their change
1390
+ # will be applied to the same version.
1391
+ # Corresponds to the JSON property `etag`
1392
+ # @return [String]
1393
+ attr_accessor :etag
1394
+
1395
+ # GCP Labels.
1396
+ # Corresponds to the JSON property `labels`
1397
+ # @return [Hash<String,String>]
1398
+ attr_accessor :labels
1399
+
1400
+ # Output only. The full name of the Restore resource. Format: projects/*/
1401
+ # locations/*/restorePlans/*/restores/*
1402
+ # Corresponds to the JSON property `name`
1403
+ # @return [String]
1404
+ attr_accessor :name
1405
+
1406
+ # Output only. Number of resources excluded in this restore action.
1407
+ # Corresponds to the JSON property `resourcesExcludedCount`
1408
+ # @return [Fixnum]
1409
+ attr_accessor :resources_excluded_count
1410
+
1411
+ # Output only. Number of resources failed to be restored in this restore action.
1412
+ # Corresponds to the JSON property `resourcesFailedCount`
1413
+ # @return [Fixnum]
1414
+ attr_accessor :resources_failed_count
1415
+
1416
+ # Output only. Number of resources restored in this restore action.
1417
+ # Corresponds to the JSON property `resourcesRestoredCount`
1418
+ # @return [Fixnum]
1419
+ attr_accessor :resources_restored_count
1420
+
1421
+ # Configuration of a restore. Next id: 9
1422
+ # Corresponds to the JSON property `restoreConfig`
1423
+ # @return [Google::Apis::GkebackupV1::RestoreConfig]
1424
+ attr_accessor :restore_config
1425
+
1426
+ # Output only. The current state of the Restore.
1427
+ # Corresponds to the JSON property `state`
1428
+ # @return [String]
1429
+ attr_accessor :state
1430
+
1431
+ # Output only. Human-readable description of why the Restore is in its current
1432
+ # state.
1433
+ # Corresponds to the JSON property `stateReason`
1434
+ # @return [String]
1435
+ attr_accessor :state_reason
1436
+
1437
+ # Output only. [Output Only] Server generated global unique identifier of [UUID](
1438
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
1439
+ # Corresponds to the JSON property `uid`
1440
+ # @return [String]
1441
+ attr_accessor :uid
1442
+
1443
+ # Output only. [Output Only] The timestamp when this Restore resource was last
1444
+ # updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1445
+ # rfc3339.txt)
1446
+ # Corresponds to the JSON property `updateTime`
1447
+ # @return [String]
1448
+ attr_accessor :update_time
1449
+
1450
+ # Output only. Number of volumes restored in this restore action.
1451
+ # Corresponds to the JSON property `volumesRestoredCount`
1452
+ # @return [Fixnum]
1453
+ attr_accessor :volumes_restored_count
1454
+
1455
+ def initialize(**args)
1456
+ update!(**args)
1457
+ end
1458
+
1459
+ # Update properties of this object
1460
+ def update!(**args)
1461
+ @backup = args[:backup] if args.key?(:backup)
1462
+ @cluster = args[:cluster] if args.key?(:cluster)
1463
+ @complete_time = args[:complete_time] if args.key?(:complete_time)
1464
+ @create_time = args[:create_time] if args.key?(:create_time)
1465
+ @description = args[:description] if args.key?(:description)
1466
+ @etag = args[:etag] if args.key?(:etag)
1467
+ @labels = args[:labels] if args.key?(:labels)
1468
+ @name = args[:name] if args.key?(:name)
1469
+ @resources_excluded_count = args[:resources_excluded_count] if args.key?(:resources_excluded_count)
1470
+ @resources_failed_count = args[:resources_failed_count] if args.key?(:resources_failed_count)
1471
+ @resources_restored_count = args[:resources_restored_count] if args.key?(:resources_restored_count)
1472
+ @restore_config = args[:restore_config] if args.key?(:restore_config)
1473
+ @state = args[:state] if args.key?(:state)
1474
+ @state_reason = args[:state_reason] if args.key?(:state_reason)
1475
+ @uid = args[:uid] if args.key?(:uid)
1476
+ @update_time = args[:update_time] if args.key?(:update_time)
1477
+ @volumes_restored_count = args[:volumes_restored_count] if args.key?(:volumes_restored_count)
1478
+ end
1479
+ end
1480
+
1481
+ # Configuration of a restore. Next id: 9
1482
+ class RestoreConfig
1483
+ include Google::Apis::Core::Hashable
1484
+
1485
+ # Restore all namespaced resources in the Backup if set to "True". Specifying
1486
+ # this field to "False" is an error.
1487
+ # Corresponds to the JSON property `allNamespaces`
1488
+ # @return [Boolean]
1489
+ attr_accessor :all_namespaces
1490
+ alias_method :all_namespaces?, :all_namespaces
1491
+
1492
+ # Defines the behavior for handling the situation where cluster-scoped resources
1493
+ # being restored already exist in the target cluster. This MUST be set to a
1494
+ # value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED if
1495
+ # cluster_resource_restore_scope is not empty.
1496
+ # Corresponds to the JSON property `clusterResourceConflictPolicy`
1497
+ # @return [String]
1498
+ attr_accessor :cluster_resource_conflict_policy
1499
+
1500
+ # Identifies the cluster-scoped resources to restore from the Backup.
1501
+ # Corresponds to the JSON property `clusterResourceRestoreScope`
1502
+ # @return [Google::Apis::GkebackupV1::ClusterResourceRestoreScope]
1503
+ attr_accessor :cluster_resource_restore_scope
1504
+
1505
+ # Defines the behavior for handling the situation where sets of namespaced
1506
+ # resources being restored already exist in the target cluster. This MUST be set
1507
+ # to a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED if any
1508
+ # namespaced restoration is configured via namespaced_resource_restore_scope .
1509
+ # Corresponds to the JSON property `namespacedResourceRestoreMode`
1510
+ # @return [String]
1511
+ attr_accessor :namespaced_resource_restore_mode
1512
+
1513
+ # A list of namespaced Kubernetes resources.
1514
+ # Corresponds to the JSON property `selectedApplications`
1515
+ # @return [Google::Apis::GkebackupV1::NamespacedNames]
1516
+ attr_accessor :selected_applications
1517
+
1518
+ # A list of Kubernetes Namespaces
1519
+ # Corresponds to the JSON property `selectedNamespaces`
1520
+ # @return [Google::Apis::GkebackupV1::Namespaces]
1521
+ attr_accessor :selected_namespaces
1522
+
1523
+ # A list of transformation rules to be applied against Kubernetes resources as
1524
+ # they are selected for restoration from a Backup. Rules are executed in order
1525
+ # defined - this order matters, as changes made by a rule may impact the
1526
+ # filtering logic of subsequent rules. An empty list means no substitution will
1527
+ # occur.
1528
+ # Corresponds to the JSON property `substitutionRules`
1529
+ # @return [Array<Google::Apis::GkebackupV1::SubstitutionRule>]
1530
+ attr_accessor :substitution_rules
1531
+
1532
+ # Specifies the mechanism to be used to restore volume data. Default:
1533
+ # VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED (will be treated as
1534
+ # NO_VOLUME_DATA_RESTORATION).
1535
+ # Corresponds to the JSON property `volumeDataRestorePolicy`
1536
+ # @return [String]
1537
+ attr_accessor :volume_data_restore_policy
1538
+
1539
+ def initialize(**args)
1540
+ update!(**args)
1541
+ end
1542
+
1543
+ # Update properties of this object
1544
+ def update!(**args)
1545
+ @all_namespaces = args[:all_namespaces] if args.key?(:all_namespaces)
1546
+ @cluster_resource_conflict_policy = args[:cluster_resource_conflict_policy] if args.key?(:cluster_resource_conflict_policy)
1547
+ @cluster_resource_restore_scope = args[:cluster_resource_restore_scope] if args.key?(:cluster_resource_restore_scope)
1548
+ @namespaced_resource_restore_mode = args[:namespaced_resource_restore_mode] if args.key?(:namespaced_resource_restore_mode)
1549
+ @selected_applications = args[:selected_applications] if args.key?(:selected_applications)
1550
+ @selected_namespaces = args[:selected_namespaces] if args.key?(:selected_namespaces)
1551
+ @substitution_rules = args[:substitution_rules] if args.key?(:substitution_rules)
1552
+ @volume_data_restore_policy = args[:volume_data_restore_policy] if args.key?(:volume_data_restore_policy)
1553
+ end
1554
+ end
1555
+
1556
+ # The configuration of a potential series of Restore operations to be performed
1557
+ # against Backups belong to a particular BackupPlan. Next id: 11
1558
+ class RestorePlan
1559
+ include Google::Apis::Core::Hashable
1560
+
1561
+ # Required. Immutable. The BackupPlan from which Backups may be used as the
1562
+ # source for Restores created via this RestorePlan. Format: projects/*/locations/
1563
+ # */backupPlans/*.
1564
+ # Corresponds to the JSON property `backupPlan`
1565
+ # @return [String]
1566
+ attr_accessor :backup_plan
1567
+
1568
+ # Required. Immutable. The target cluster into which Restores created via this
1569
+ # RestorePlan will restore data. NOTE: the cluster's region must be the same as
1570
+ # the RestorePlan. Possible formats: 1. projects/*/locations/*/clusters/* 2.
1571
+ # projects/*/zones/*/clusters/*
1572
+ # Corresponds to the JSON property `cluster`
1573
+ # @return [String]
1574
+ attr_accessor :cluster
1575
+
1576
+ # Output only. [Output Only] The timestamp when this RestorePlan resource was
1577
+ # created - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1578
+ # rfc3339.txt)
1579
+ # Corresponds to the JSON property `createTime`
1580
+ # @return [String]
1581
+ attr_accessor :create_time
1582
+
1583
+ # User specified descriptive string for this RestorePlan.
1584
+ # Corresponds to the JSON property `description`
1585
+ # @return [String]
1586
+ attr_accessor :description
1587
+
1588
+ # Output only. `etag` is used for optimistic concurrency control as a way to
1589
+ # help prevent simultaneous updates of a restore from overwriting each other. It
1590
+ # is strongly suggested that systems make use of the `etag` in the read-modify-
1591
+ # write cycle to perform restore updates in order to avoid race conditions: An `
1592
+ # etag` is returned in the response to `GetRestorePlan`, and systems are
1593
+ # expected to put that etag in the request to `UpdateRestorePlan` to ensure that
1594
+ # their change will be applied to the same version.
1595
+ # Corresponds to the JSON property `etag`
1596
+ # @return [String]
1597
+ attr_accessor :etag
1598
+
1599
+ # A set of custom labels supplied by user.
1600
+ # Corresponds to the JSON property `labels`
1601
+ # @return [Hash<String,String>]
1602
+ attr_accessor :labels
1603
+
1604
+ # Output only. [Output Only] The full name of the RestorePlan resource. Format:
1605
+ # projects/*/locations/*/restorePlans/*
1606
+ # Corresponds to the JSON property `name`
1607
+ # @return [String]
1608
+ attr_accessor :name
1609
+
1610
+ # Configuration of a restore. Next id: 9
1611
+ # Corresponds to the JSON property `restoreConfig`
1612
+ # @return [Google::Apis::GkebackupV1::RestoreConfig]
1613
+ attr_accessor :restore_config
1614
+
1615
+ # Output only. [Output Only] Server generated global unique identifier of [UUID](
1616
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
1617
+ # Corresponds to the JSON property `uid`
1618
+ # @return [String]
1619
+ attr_accessor :uid
1620
+
1621
+ # Output only. [Output Only] The timestamp when this RestorePlan resource was
1622
+ # last updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1623
+ # rfc3339.txt)
1624
+ # Corresponds to the JSON property `updateTime`
1625
+ # @return [String]
1626
+ attr_accessor :update_time
1627
+
1628
+ def initialize(**args)
1629
+ update!(**args)
1630
+ end
1631
+
1632
+ # Update properties of this object
1633
+ def update!(**args)
1634
+ @backup_plan = args[:backup_plan] if args.key?(:backup_plan)
1635
+ @cluster = args[:cluster] if args.key?(:cluster)
1636
+ @create_time = args[:create_time] if args.key?(:create_time)
1637
+ @description = args[:description] if args.key?(:description)
1638
+ @etag = args[:etag] if args.key?(:etag)
1639
+ @labels = args[:labels] if args.key?(:labels)
1640
+ @name = args[:name] if args.key?(:name)
1641
+ @restore_config = args[:restore_config] if args.key?(:restore_config)
1642
+ @uid = args[:uid] if args.key?(:uid)
1643
+ @update_time = args[:update_time] if args.key?(:update_time)
1644
+ end
1645
+ end
1646
+
1647
+ # RentionPolicy is an inner message type to define: 1. Minimum age for Backups
1648
+ # created via this BackupPlan - deletion (either manual or automatic) of Backups
1649
+ # younger than this age will be blocked 2. Default maximum age of Backups
1650
+ # created via this BackupPlan, after which automatic deletion will occur 3. Lock
1651
+ # to disallow any changes to any RetentionPolicy settings
1652
+ class RetentionPolicy
1653
+ include Google::Apis::Core::Hashable
1654
+
1655
+ # Minimum age for Backups created via this BackupPlan (in days). This field MUST
1656
+ # be an integer value between 0-90(inclusive). A Backup created under this
1657
+ # BackupPlan will NOT be deletable until it reaches Backup's create_time +
1658
+ # backup_delete_lock_days. Updating this field of a BackupPlan does NOT affect
1659
+ # existing Backups under it. Backups created AFTER a successful update will
1660
+ # inherit the new value. Default: 0 (no delete blocking)
1661
+ # Corresponds to the JSON property `backupDeleteLockDays`
1662
+ # @return [Fixnum]
1663
+ attr_accessor :backup_delete_lock_days
1664
+
1665
+ # The default maximum age of a Backup created via this BackupPlan. This field
1666
+ # MUST be an integer value >= 0. If specified, a Backup created under this
1667
+ # BackupPlan will be automatically deleted after its age reaches create_time +
1668
+ # backup_retain_days. If not specified, Backups created under this BackupPlan
1669
+ # will NOT be subject to automatic deletion. Updating this field does NOT affect
1670
+ # existing Backups under it. Backups created AFTER a successful update will
1671
+ # automatically pick up the new value. NOTE: Specifying a backup_retain_days
1672
+ # smaller than backup_delete_lock_days at creation/updating time will be
1673
+ # considered as invalid, and the request will be rejected immediately. Default:
1674
+ # 0 (no automatic deletion)
1675
+ # Corresponds to the JSON property `backupRetainDays`
1676
+ # @return [Fixnum]
1677
+ attr_accessor :backup_retain_days
1678
+
1679
+ # This flag denotes whether the retention policy of this BackupPlan is locked.
1680
+ # If set to True, no further update is allowed on this policy, including the `
1681
+ # locked` field itself. Default: False
1682
+ # Corresponds to the JSON property `locked`
1683
+ # @return [Boolean]
1684
+ attr_accessor :locked
1685
+ alias_method :locked?, :locked
1686
+
1687
+ def initialize(**args)
1688
+ update!(**args)
1689
+ end
1690
+
1691
+ # Update properties of this object
1692
+ def update!(**args)
1693
+ @backup_delete_lock_days = args[:backup_delete_lock_days] if args.key?(:backup_delete_lock_days)
1694
+ @backup_retain_days = args[:backup_retain_days] if args.key?(:backup_retain_days)
1695
+ @locked = args[:locked] if args.key?(:locked)
1696
+ end
1697
+ end
1698
+
1699
+ # Schedule defines scheduling parameters for automatically creating Backups via
1700
+ # this BackupPlan.
1701
+ class Schedule
1702
+ include Google::Apis::Core::Hashable
1703
+
1704
+ # A standard cron-style string that defines a repeating schedule for creating
1705
+ # Backups via this BackupPlan.
1706
+ # Corresponds to the JSON property `cronSchedule`
1707
+ # @return [String]
1708
+ attr_accessor :cron_schedule
1709
+
1710
+ # This flag denotes whether automatic Backup creation is paused for this
1711
+ # BackupPlan. Default: False
1712
+ # Corresponds to the JSON property `paused`
1713
+ # @return [Boolean]
1714
+ attr_accessor :paused
1715
+ alias_method :paused?, :paused
1716
+
1717
+ def initialize(**args)
1718
+ update!(**args)
1719
+ end
1720
+
1721
+ # Update properties of this object
1722
+ def update!(**args)
1723
+ @cron_schedule = args[:cron_schedule] if args.key?(:cron_schedule)
1724
+ @paused = args[:paused] if args.key?(:paused)
1725
+ end
1726
+ end
1727
+
1728
+ # Request message for `SetIamPolicy` method.
1729
+ class SetIamPolicyRequest
1730
+ include Google::Apis::Core::Hashable
1731
+
1732
+ # An Identity and Access Management (IAM) policy, which specifies access
1733
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1734
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
1735
+ # Principals can be user accounts, service accounts, Google groups, and domains (
1736
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
1737
+ # an IAM predefined role or a user-created custom role. For some types of Google
1738
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
1739
+ # logical expression that allows access to a resource only if the expression
1740
+ # evaluates to `true`. A condition can add constraints based on attributes of
1741
+ # the request, the resource, or both. To learn which resources support
1742
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
1743
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ` "
1744
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
1745
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
1746
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
1747
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
1748
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
1749
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
1750
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:**
1751
+ # bindings: - members: - user:mike@example.com - group:admins@example.com -
1752
+ # domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com
1753
+ # role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.
1754
+ # com role: roles/resourcemanager.organizationViewer condition: title: expirable
1755
+ # access description: Does not grant access after Sep 2020 expression: request.
1756
+ # time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For
1757
+ # a description of IAM and its features, see the [IAM documentation](https://
1758
+ # cloud.google.com/iam/docs/).
1759
+ # Corresponds to the JSON property `policy`
1760
+ # @return [Google::Apis::GkebackupV1::Policy]
1761
+ attr_accessor :policy
1762
+
1763
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
1764
+ # the fields in the mask will be modified. If no mask is provided, the following
1765
+ # default mask is used: `paths: "bindings, etag"`
1766
+ # Corresponds to the JSON property `updateMask`
1767
+ # @return [String]
1768
+ attr_accessor :update_mask
1769
+
1770
+ def initialize(**args)
1771
+ update!(**args)
1772
+ end
1773
+
1774
+ # Update properties of this object
1775
+ def update!(**args)
1776
+ @policy = args[:policy] if args.key?(:policy)
1777
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1778
+ end
1779
+ end
1780
+
1781
+ # A transformation rule to be applied against Kubernetes resources as they are
1782
+ # selected for restoration from a Backup. A rule contains both filtering logic (
1783
+ # which resources are subject to substitution) and substitution logic.
1784
+ class SubstitutionRule
1785
+ include Google::Apis::Core::Hashable
1786
+
1787
+ # This is the new value to set for any fields that pass the filtering and
1788
+ # selection criteria. To remove a value from a Kubernetes resource, either leave
1789
+ # this field unspecified, or set it to the empty string ("").
1790
+ # Corresponds to the JSON property `newValue`
1791
+ # @return [String]
1792
+ attr_accessor :new_value
1793
+
1794
+ # (Filtering parameter) This is a [regular expression] (https://en.wikipedia.org/
1795
+ # wiki/Regular_expression) that is compared against the fields matched by the
1796
+ # target_json_path expression (and must also have passed the previous filters).
1797
+ # Substitution will not be performed against fields whose value does not match
1798
+ # this expression. If this field is NOT specified, then ALL fields matched by
1799
+ # the target_json_path expression will undergo substitution. Note that an empty (
1800
+ # e.g., "", rather than unspecified) value for for this field will only match
1801
+ # empty fields.
1802
+ # Corresponds to the JSON property `originalValuePattern`
1803
+ # @return [String]
1804
+ attr_accessor :original_value_pattern
1805
+
1806
+ # (Filtering parameter) Any resource subject to substitution must belong to one
1807
+ # of the listed "types". If this field is not provided, no type filtering will
1808
+ # be performed (all resources of all types matching previous filtering
1809
+ # parameters will be candidates for substitution).
1810
+ # Corresponds to the JSON property `targetGroupKinds`
1811
+ # @return [Array<Google::Apis::GkebackupV1::GroupKind>]
1812
+ attr_accessor :target_group_kinds
1813
+
1814
+ # Required. This is a [JSONPath] (https://kubernetes.io/docs/reference/kubectl/
1815
+ # jsonpath/) expression that matches specific fields of candidate resources and
1816
+ # it operates as both a filtering parameter (resources that are not matched with
1817
+ # this expression will not be candidates for substitution) as well as a field
1818
+ # identifier (identifies exactly which fields out of the candidate resources
1819
+ # will be modified).
1820
+ # Corresponds to the JSON property `targetJsonPath`
1821
+ # @return [String]
1822
+ attr_accessor :target_json_path
1823
+
1824
+ # (Filtering parameter) Any resource subject to substitution must be contained
1825
+ # within one of the listed Kubernetes Namespace in the Backup. If this field is
1826
+ # not provided, no namespace filtering will be performed (all resources in all
1827
+ # Namespaces, including all cluster-scoped resources, will be candidates for
1828
+ # substitution). To mix cluster-scoped and namespaced resources in the same rule,
1829
+ # use an empty string ("") as one of the target namespaces.
1830
+ # Corresponds to the JSON property `targetNamespaces`
1831
+ # @return [Array<String>]
1832
+ attr_accessor :target_namespaces
1833
+
1834
+ def initialize(**args)
1835
+ update!(**args)
1836
+ end
1837
+
1838
+ # Update properties of this object
1839
+ def update!(**args)
1840
+ @new_value = args[:new_value] if args.key?(:new_value)
1841
+ @original_value_pattern = args[:original_value_pattern] if args.key?(:original_value_pattern)
1842
+ @target_group_kinds = args[:target_group_kinds] if args.key?(:target_group_kinds)
1843
+ @target_json_path = args[:target_json_path] if args.key?(:target_json_path)
1844
+ @target_namespaces = args[:target_namespaces] if args.key?(:target_namespaces)
1845
+ end
1846
+ end
1847
+
1848
+ # Request message for `TestIamPermissions` method.
1849
+ class TestIamPermissionsRequest
1850
+ include Google::Apis::Core::Hashable
1851
+
1852
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1853
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
1854
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1855
+ # Corresponds to the JSON property `permissions`
1856
+ # @return [Array<String>]
1857
+ attr_accessor :permissions
1858
+
1859
+ def initialize(**args)
1860
+ update!(**args)
1861
+ end
1862
+
1863
+ # Update properties of this object
1864
+ def update!(**args)
1865
+ @permissions = args[:permissions] if args.key?(:permissions)
1866
+ end
1867
+ end
1868
+
1869
+ # Response message for `TestIamPermissions` method.
1870
+ class TestIamPermissionsResponse
1871
+ include Google::Apis::Core::Hashable
1872
+
1873
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
1874
+ # Corresponds to the JSON property `permissions`
1875
+ # @return [Array<String>]
1876
+ attr_accessor :permissions
1877
+
1878
+ def initialize(**args)
1879
+ update!(**args)
1880
+ end
1881
+
1882
+ # Update properties of this object
1883
+ def update!(**args)
1884
+ @permissions = args[:permissions] if args.key?(:permissions)
1885
+ end
1886
+ end
1887
+
1888
+ # Represents the backup of a specific persistent volume as a component of a
1889
+ # Backup - both the record of the operation and a pointer to the underlying
1890
+ # storage-specific artifacts. Next id: 14
1891
+ class VolumeBackup
1892
+ include Google::Apis::Core::Hashable
1893
+
1894
+ # Output only. [Output Only] The timestamp when the associated underlying volume
1895
+ # backup operation completes - can be converted to and from [RFC3339](https://
1896
+ # www.ietf.org/rfc/rfc3339.txt)
1897
+ # Corresponds to the JSON property `completeTime`
1898
+ # @return [String]
1899
+ attr_accessor :complete_time
1900
+
1901
+ # Output only. [Output Only] The timestamp when this VolumeBackup resource was
1902
+ # created - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1903
+ # rfc3339.txt)
1904
+ # Corresponds to the JSON property `createTime`
1905
+ # @return [String]
1906
+ attr_accessor :create_time
1907
+
1908
+ # Output only. The minimum size of the disk to which this VolumeBackup can be
1909
+ # restored.
1910
+ # Corresponds to the JSON property `diskSizeBytes`
1911
+ # @return [Fixnum]
1912
+ attr_accessor :disk_size_bytes
1913
+
1914
+ # Output only. `etag` is used for optimistic concurrency control as a way to
1915
+ # help prevent simultaneous updates of a volume backup from overwriting each
1916
+ # other. It is strongly suggested that systems make use of the `etag` in the
1917
+ # read-modify-write cycle to perform volume backup updates in order to avoid
1918
+ # race conditions: An `etag` is returned in the response to `GetVolumeBackup',
1919
+ # and systems are expected to put that etag in the request to `
1920
+ # UpdateVolumeBackup` to ensure that their change will be applied to the same
1921
+ # version.
1922
+ # Corresponds to the JSON property `etag`
1923
+ # @return [String]
1924
+ attr_accessor :etag
1925
+
1926
+ # Output only. The format used for the volume backup.
1927
+ # Corresponds to the JSON property `format`
1928
+ # @return [String]
1929
+ attr_accessor :format
1930
+
1931
+ # Output only. [Output Only] The full name of the VolumeBackup resource. Format:
1932
+ # projects/*/locations/*/backupPlans/*/backups/*/volumeBackups/* Note that the
1933
+ # last segment of the name will have the format: 'pvc-'.
1934
+ # Corresponds to the JSON property `name`
1935
+ # @return [String]
1936
+ attr_accessor :name
1937
+
1938
+ # A reference to a namespaced resource in Kubernetes.
1939
+ # Corresponds to the JSON property `sourcePvc`
1940
+ # @return [Google::Apis::GkebackupV1::NamespacedName]
1941
+ attr_accessor :source_pvc
1942
+
1943
+ # Output only. The current state of this VolumeBackup.
1944
+ # Corresponds to the JSON property `state`
1945
+ # @return [String]
1946
+ attr_accessor :state
1947
+
1948
+ # Output only. A human readable message explaining why the VolumeBackup is in
1949
+ # its current state.
1950
+ # Corresponds to the JSON property `stateMessage`
1951
+ # @return [String]
1952
+ attr_accessor :state_message
1953
+
1954
+ # Output only. The aggregate size of the underlying artifacts associated with
1955
+ # this VolumeBackup in the backup storage. This may change over time when
1956
+ # multiple backups of the same volume share the same backup storage location. In
1957
+ # particular, this is likely to increase in size when the immediately preceding
1958
+ # backup of the same volume is deleted.
1959
+ # Corresponds to the JSON property `storageBytes`
1960
+ # @return [Fixnum]
1961
+ attr_accessor :storage_bytes
1962
+
1963
+ # Output only. [Output Only] Server generated global unique identifier of [UUID](
1964
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
1965
+ # Corresponds to the JSON property `uid`
1966
+ # @return [String]
1967
+ attr_accessor :uid
1968
+
1969
+ # Output only. [Output Only] The timestamp when this VolumeBackup resource was
1970
+ # last updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
1971
+ # rfc3339.txt)
1972
+ # Corresponds to the JSON property `updateTime`
1973
+ # @return [String]
1974
+ attr_accessor :update_time
1975
+
1976
+ # Output only. A storage system-specific opaque handle to the underlying volume
1977
+ # backup. This field is interpreted by the volume backup and restore drivers
1978
+ # running in the GKE cluster and not by the service.
1979
+ # Corresponds to the JSON property `volumeBackupHandle`
1980
+ # @return [String]
1981
+ attr_accessor :volume_backup_handle
1982
+
1983
+ def initialize(**args)
1984
+ update!(**args)
1985
+ end
1986
+
1987
+ # Update properties of this object
1988
+ def update!(**args)
1989
+ @complete_time = args[:complete_time] if args.key?(:complete_time)
1990
+ @create_time = args[:create_time] if args.key?(:create_time)
1991
+ @disk_size_bytes = args[:disk_size_bytes] if args.key?(:disk_size_bytes)
1992
+ @etag = args[:etag] if args.key?(:etag)
1993
+ @format = args[:format] if args.key?(:format)
1994
+ @name = args[:name] if args.key?(:name)
1995
+ @source_pvc = args[:source_pvc] if args.key?(:source_pvc)
1996
+ @state = args[:state] if args.key?(:state)
1997
+ @state_message = args[:state_message] if args.key?(:state_message)
1998
+ @storage_bytes = args[:storage_bytes] if args.key?(:storage_bytes)
1999
+ @uid = args[:uid] if args.key?(:uid)
2000
+ @update_time = args[:update_time] if args.key?(:update_time)
2001
+ @volume_backup_handle = args[:volume_backup_handle] if args.key?(:volume_backup_handle)
2002
+ end
2003
+ end
2004
+
2005
+ # Represents the operation of restoring a volume from a VolumeBackup. Next id:
2006
+ # 13
2007
+ class VolumeRestore
2008
+ include Google::Apis::Core::Hashable
2009
+
2010
+ # Output only. [Output Only] The timestamp when the associated underlying volume
2011
+ # restoration completed - can be converted to and from [RFC3339](https://www.
2012
+ # ietf.org/rfc/rfc3339.txt)
2013
+ # Corresponds to the JSON property `completeTime`
2014
+ # @return [String]
2015
+ attr_accessor :complete_time
2016
+
2017
+ # Output only. [Output Only] The timestamp when this VolumeRestore resource was
2018
+ # created - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
2019
+ # rfc3339.txt)
2020
+ # Corresponds to the JSON property `createTime`
2021
+ # @return [String]
2022
+ attr_accessor :create_time
2023
+
2024
+ # Output only. `etag` is used for optimistic concurrency control as a way to
2025
+ # help prevent simultaneous updates of a volume restore from overwriting each
2026
+ # other. It is strongly suggested that systems make use of the `etag` in the
2027
+ # read-modify-write cycle to perform volume restore updates in order to avoid
2028
+ # race conditions: An `etag` is returned in the response to `GetVolumeRestore',
2029
+ # and systems are expected to put that etag in the request to `
2030
+ # UpdateVolumeRestore` to ensure that their change will be applied to the same
2031
+ # version.
2032
+ # Corresponds to the JSON property `etag`
2033
+ # @return [String]
2034
+ attr_accessor :etag
2035
+
2036
+ # Output only. Full name of the VolumeRestore resource. Format: projects/*/
2037
+ # locations/*/restorePlans/*/restores/*/volumeRestores/* Note that the last
2038
+ # segment of the name will have the format: 'pvc-'.
2039
+ # Corresponds to the JSON property `name`
2040
+ # @return [String]
2041
+ attr_accessor :name
2042
+
2043
+ # Output only. The current state of this VolumeRestore
2044
+ # Corresponds to the JSON property `state`
2045
+ # @return [String]
2046
+ attr_accessor :state
2047
+
2048
+ # Output only. A human readable message explaining why the VolumeRestore is in
2049
+ # its current state.
2050
+ # Corresponds to the JSON property `stateMessage`
2051
+ # @return [String]
2052
+ attr_accessor :state_message
2053
+
2054
+ # A reference to a namespaced resource in Kubernetes.
2055
+ # Corresponds to the JSON property `targetPvc`
2056
+ # @return [Google::Apis::GkebackupV1::NamespacedName]
2057
+ attr_accessor :target_pvc
2058
+
2059
+ # Output only. [Output Only] Server generated global unique identifier of [UUID](
2060
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier) format.
2061
+ # Corresponds to the JSON property `uid`
2062
+ # @return [String]
2063
+ attr_accessor :uid
2064
+
2065
+ # Output only. [Output Only] The timestamp when this VolumeRestore resource was
2066
+ # last updated - can be converted to and from [RFC3339](https://www.ietf.org/rfc/
2067
+ # rfc3339.txt)
2068
+ # Corresponds to the JSON property `updateTime`
2069
+ # @return [String]
2070
+ attr_accessor :update_time
2071
+
2072
+ # Output only. The full name of the VolumeBackup from which the volume will be
2073
+ # restored. Format: projects/*/locations/*/backupPlans/*/backups/*/volumeBackups/
2074
+ # *
2075
+ # Corresponds to the JSON property `volumeBackup`
2076
+ # @return [String]
2077
+ attr_accessor :volume_backup
2078
+
2079
+ # Output only. A storage system-specific opaque handler to the underlying volume
2080
+ # created for the target PVC from the volume backup. This field is interpreted
2081
+ # by the volume backup and restore drivers running in the GKE cluster and not by
2082
+ # the service.
2083
+ # Corresponds to the JSON property `volumeHandle`
2084
+ # @return [String]
2085
+ attr_accessor :volume_handle
2086
+
2087
+ # Output only. The type of volume provisioned
2088
+ # Corresponds to the JSON property `volumeType`
2089
+ # @return [String]
2090
+ attr_accessor :volume_type
2091
+
2092
+ def initialize(**args)
2093
+ update!(**args)
2094
+ end
2095
+
2096
+ # Update properties of this object
2097
+ def update!(**args)
2098
+ @complete_time = args[:complete_time] if args.key?(:complete_time)
2099
+ @create_time = args[:create_time] if args.key?(:create_time)
2100
+ @etag = args[:etag] if args.key?(:etag)
2101
+ @name = args[:name] if args.key?(:name)
2102
+ @state = args[:state] if args.key?(:state)
2103
+ @state_message = args[:state_message] if args.key?(:state_message)
2104
+ @target_pvc = args[:target_pvc] if args.key?(:target_pvc)
2105
+ @uid = args[:uid] if args.key?(:uid)
2106
+ @update_time = args[:update_time] if args.key?(:update_time)
2107
+ @volume_backup = args[:volume_backup] if args.key?(:volume_backup)
2108
+ @volume_handle = args[:volume_handle] if args.key?(:volume_handle)
2109
+ @volume_type = args[:volume_type] if args.key?(:volume_type)
2110
+ end
2111
+ end
2112
+ end
2113
+ end
2114
+ end