google-apis-gkebackup_v1 0.1.0

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