google-apis-config_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,2045 @@
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 ConfigV1
24
+
25
+ # Outputs and artifacts from applying a deployment.
26
+ class ApplyResults
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Location of artifacts (e.g. logs) in Google Cloud Storage. Format: `gs://`
30
+ # bucket`/`object``
31
+ # Corresponds to the JSON property `artifacts`
32
+ # @return [String]
33
+ attr_accessor :artifacts
34
+
35
+ # Location of a blueprint copy and other manifests in Google Cloud Storage.
36
+ # Format: `gs://`bucket`/`object``
37
+ # Corresponds to the JSON property `content`
38
+ # @return [String]
39
+ attr_accessor :content
40
+
41
+ # Map of output name to output info.
42
+ # Corresponds to the JSON property `outputs`
43
+ # @return [Hash<String,Google::Apis::ConfigV1::TerraformOutput>]
44
+ attr_accessor :outputs
45
+
46
+ def initialize(**args)
47
+ update!(**args)
48
+ end
49
+
50
+ # Update properties of this object
51
+ def update!(**args)
52
+ @artifacts = args[:artifacts] if args.key?(:artifacts)
53
+ @content = args[:content] if args.key?(:content)
54
+ @outputs = args[:outputs] if args.key?(:outputs)
55
+ end
56
+ end
57
+
58
+ # Specifies the audit configuration for a service. The configuration determines
59
+ # which permission types are logged, and what identities, if any, are exempted
60
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
61
+ # are AuditConfigs for both `allServices` and a specific service, the union of
62
+ # the two AuditConfigs is used for that service: the log_types specified in each
63
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
64
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
65
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
66
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
67
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
68
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
69
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
70
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
71
+ # exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com`
72
+ # from DATA_WRITE logging.
73
+ class AuditConfig
74
+ include Google::Apis::Core::Hashable
75
+
76
+ # The configuration for logging of each type of permission.
77
+ # Corresponds to the JSON property `auditLogConfigs`
78
+ # @return [Array<Google::Apis::ConfigV1::AuditLogConfig>]
79
+ attr_accessor :audit_log_configs
80
+
81
+ # Specifies a service that will be enabled for audit logging. For example, `
82
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
83
+ # value that covers all services.
84
+ # Corresponds to the JSON property `service`
85
+ # @return [String]
86
+ attr_accessor :service
87
+
88
+ def initialize(**args)
89
+ update!(**args)
90
+ end
91
+
92
+ # Update properties of this object
93
+ def update!(**args)
94
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
95
+ @service = args[:service] if args.key?(:service)
96
+ end
97
+ end
98
+
99
+ # Provides the configuration for logging a type of permissions. Example: ` "
100
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
101
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
102
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
103
+ # DATA_READ logging.
104
+ class AuditLogConfig
105
+ include Google::Apis::Core::Hashable
106
+
107
+ # Specifies the identities that do not cause logging for this type of permission.
108
+ # Follows the same format of Binding.members.
109
+ # Corresponds to the JSON property `exemptedMembers`
110
+ # @return [Array<String>]
111
+ attr_accessor :exempted_members
112
+
113
+ # The log type that this config enables.
114
+ # Corresponds to the JSON property `logType`
115
+ # @return [String]
116
+ attr_accessor :log_type
117
+
118
+ def initialize(**args)
119
+ update!(**args)
120
+ end
121
+
122
+ # Update properties of this object
123
+ def update!(**args)
124
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
125
+ @log_type = args[:log_type] if args.key?(:log_type)
126
+ end
127
+ end
128
+
129
+ # Associates `members`, or principals, with a `role`.
130
+ class Binding
131
+ include Google::Apis::Core::Hashable
132
+
133
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
134
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
135
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
136
+ # "Summary size limit" description: "Determines if a summary is less than 100
137
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
138
+ # Requestor is owner" description: "Determines if requestor is the document
139
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
140
+ # Logic): title: "Public documents" description: "Determine whether the document
141
+ # should be publicly visible" expression: "document.type != 'private' &&
142
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
143
+ # string" description: "Create a notification string with a timestamp."
144
+ # expression: "'New message received at ' + string(document.create_time)" The
145
+ # exact variables and functions that may be referenced within an expression are
146
+ # determined by the service that evaluates it. See the service documentation for
147
+ # additional information.
148
+ # Corresponds to the JSON property `condition`
149
+ # @return [Google::Apis::ConfigV1::Expr]
150
+ attr_accessor :condition
151
+
152
+ # Specifies the principals requesting access for a Google Cloud resource. `
153
+ # members` can have the following values: * `allUsers`: A special identifier
154
+ # that represents anyone who is on the internet; with or without a Google
155
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
156
+ # anyone who is authenticated with a Google account or a service account. Does
157
+ # not include identities that come from external identity providers (IdPs)
158
+ # through identity federation. * `user:`emailid``: An email address that
159
+ # represents a specific Google account. For example, `alice@example.com` . * `
160
+ # serviceAccount:`emailid``: An email address that represents a Google service
161
+ # account. For example, `my-other-app@appspot.gserviceaccount.com`. * `
162
+ # serviceAccount:`projectid`.svc.id.goog[`namespace`/`kubernetes-sa`]`: An
163
+ # identifier for a [Kubernetes service account](https://cloud.google.com/
164
+ # kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-
165
+ # project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:`emailid``: An
166
+ # email address that represents a Google group. For example, `admins@example.com`
167
+ # . * `domain:`domain``: The G Suite domain (primary) that represents all the
168
+ # users of that domain. For example, `google.com` or `example.com`. * `principal:
169
+ # //iam.googleapis.com/locations/global/workforcePools/`pool_id`/subject/`
170
+ # subject_attribute_value``: A single identity in a workforce identity pool. * `
171
+ # principalSet://iam.googleapis.com/locations/global/workforcePools/`pool_id`/
172
+ # group/`group_id``: All workforce identities in a group. * `principalSet://iam.
173
+ # googleapis.com/locations/global/workforcePools/`pool_id`/attribute.`
174
+ # attribute_name`/`attribute_value``: All workforce identities with a specific
175
+ # attribute value. * `principalSet://iam.googleapis.com/locations/global/
176
+ # workforcePools/`pool_id`/*`: All identities in a workforce identity pool. * `
177
+ # principal://iam.googleapis.com/projects/`project_number`/locations/global/
178
+ # workloadIdentityPools/`pool_id`/subject/`subject_attribute_value``: A single
179
+ # identity in a workload identity pool. * `principalSet://iam.googleapis.com/
180
+ # projects/`project_number`/locations/global/workloadIdentityPools/`pool_id`/
181
+ # group/`group_id``: A workload identity pool group. * `principalSet://iam.
182
+ # googleapis.com/projects/`project_number`/locations/global/
183
+ # workloadIdentityPools/`pool_id`/attribute.`attribute_name`/`attribute_value``:
184
+ # All identities in a workload identity pool with a certain attribute. * `
185
+ # principalSet://iam.googleapis.com/projects/`project_number`/locations/global/
186
+ # workloadIdentityPools/`pool_id`/*`: All identities in a workload identity pool.
187
+ # * `deleted:user:`emailid`?uid=`uniqueid``: An email address (plus unique
188
+ # identifier) representing a user that has been recently deleted. For example, `
189
+ # alice@example.com?uid=123456789012345678901`. If the user is recovered, this
190
+ # value reverts to `user:`emailid`` and the recovered user retains the role in
191
+ # the binding. * `deleted:serviceAccount:`emailid`?uid=`uniqueid``: An email
192
+ # address (plus unique identifier) representing a service account that has been
193
+ # recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=
194
+ # 123456789012345678901`. If the service account is undeleted, this value
195
+ # reverts to `serviceAccount:`emailid`` and the undeleted service account
196
+ # retains the role in the binding. * `deleted:group:`emailid`?uid=`uniqueid``:
197
+ # An email address (plus unique identifier) representing a Google group that has
198
+ # been recently deleted. For example, `admins@example.com?uid=
199
+ # 123456789012345678901`. If the group is recovered, this value reverts to `
200
+ # group:`emailid`` and the recovered group retains the role in the binding. * `
201
+ # deleted:principal://iam.googleapis.com/locations/global/workforcePools/`
202
+ # pool_id`/subject/`subject_attribute_value``: Deleted single identity in a
203
+ # workforce identity pool. For example, `deleted:principal://iam.googleapis.com/
204
+ # locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
205
+ # Corresponds to the JSON property `members`
206
+ # @return [Array<String>]
207
+ attr_accessor :members
208
+
209
+ # Role that is assigned to the list of `members`, or principals. For example, `
210
+ # roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM
211
+ # roles and permissions, see the [IAM documentation](https://cloud.google.com/
212
+ # iam/docs/roles-overview). For a list of the available pre-defined roles, see [
213
+ # here](https://cloud.google.com/iam/docs/understanding-roles).
214
+ # Corresponds to the JSON property `role`
215
+ # @return [String]
216
+ attr_accessor :role
217
+
218
+ def initialize(**args)
219
+ update!(**args)
220
+ end
221
+
222
+ # Update properties of this object
223
+ def update!(**args)
224
+ @condition = args[:condition] if args.key?(:condition)
225
+ @members = args[:members] if args.key?(:members)
226
+ @role = args[:role] if args.key?(:role)
227
+ end
228
+ end
229
+
230
+ # The request message for Operations.CancelOperation.
231
+ class CancelOperationRequest
232
+ include Google::Apis::Core::Hashable
233
+
234
+ def initialize(**args)
235
+ update!(**args)
236
+ end
237
+
238
+ # Update properties of this object
239
+ def update!(**args)
240
+ end
241
+ end
242
+
243
+ # A request to delete a state file passed to a 'DeleteStatefile' call.
244
+ class DeleteStatefileRequest
245
+ include Google::Apis::Core::Hashable
246
+
247
+ # Required. Lock ID of the lock file to verify that the user who is deleting the
248
+ # state file previously locked the Deployment.
249
+ # Corresponds to the JSON property `lockId`
250
+ # @return [Fixnum]
251
+ attr_accessor :lock_id
252
+
253
+ def initialize(**args)
254
+ update!(**args)
255
+ end
256
+
257
+ # Update properties of this object
258
+ def update!(**args)
259
+ @lock_id = args[:lock_id] if args.key?(:lock_id)
260
+ end
261
+ end
262
+
263
+ # A Deployment is a group of resources and configs managed and provisioned by
264
+ # Infra Manager.
265
+ class Deployment
266
+ include Google::Apis::Core::Hashable
267
+
268
+ # Optional. Arbitrary key-value metadata storage e.g. to help client tools
269
+ # identifiy deployments during automation. See https://google.aip.dev/148#
270
+ # annotations for details on format and size limitations.
271
+ # Corresponds to the JSON property `annotations`
272
+ # @return [Hash<String,String>]
273
+ attr_accessor :annotations
274
+
275
+ # Optional. User-defined location of Cloud Build logs and artifacts in Google
276
+ # Cloud Storage. Format: `gs://`bucket`/`folder`` A default bucket will be
277
+ # bootstrapped if the field is not set or empty. Default bucket format: `gs://--
278
+ # blueprint-config` Constraints: - The bucket needs to be in the same project as
279
+ # the deployment - The path cannot be within the path of `gcs_source` - The
280
+ # field cannot be updated, including changing its presence
281
+ # Corresponds to the JSON property `artifactsGcsBucket`
282
+ # @return [String]
283
+ attr_accessor :artifacts_gcs_bucket
284
+
285
+ # Output only. Time when the deployment was created.
286
+ # Corresponds to the JSON property `createTime`
287
+ # @return [String]
288
+ attr_accessor :create_time
289
+
290
+ # Output only. Cloud Build instance UUID associated with deleting this
291
+ # deployment.
292
+ # Corresponds to the JSON property `deleteBuild`
293
+ # @return [String]
294
+ attr_accessor :delete_build
295
+
296
+ # Output only. Location of Cloud Build logs in Google Cloud Storage, populated
297
+ # when deleting this deployment. Format: `gs://`bucket`/`object``.
298
+ # Corresponds to the JSON property `deleteLogs`
299
+ # @return [String]
300
+ attr_accessor :delete_logs
301
+
302
+ # Outputs and artifacts from applying a deployment.
303
+ # Corresponds to the JSON property `deleteResults`
304
+ # @return [Google::Apis::ConfigV1::ApplyResults]
305
+ attr_accessor :delete_results
306
+
307
+ # Output only. Error code describing errors that may have occurred.
308
+ # Corresponds to the JSON property `errorCode`
309
+ # @return [String]
310
+ attr_accessor :error_code
311
+
312
+ # Output only. Location of Terraform error logs in Google Cloud Storage. Format:
313
+ # `gs://`bucket`/`object``.
314
+ # Corresponds to the JSON property `errorLogs`
315
+ # @return [String]
316
+ attr_accessor :error_logs
317
+
318
+ # By default, Infra Manager will return a failure when Terraform encounters a
319
+ # 409 code (resource conflict error) during actuation. If this flag is set to
320
+ # true, Infra Manager will instead attempt to automatically import the resource
321
+ # into the Terraform state (for supported resource types) and continue actuation.
322
+ # Not all resource types are supported, refer to documentation.
323
+ # Corresponds to the JSON property `importExistingResources`
324
+ # @return [Boolean]
325
+ attr_accessor :import_existing_resources
326
+ alias_method :import_existing_resources?, :import_existing_resources
327
+
328
+ # User-defined metadata for the deployment.
329
+ # Corresponds to the JSON property `labels`
330
+ # @return [Hash<String,String>]
331
+ attr_accessor :labels
332
+
333
+ # Output only. Revision name that was most recently applied. Format: `projects/`
334
+ # project`/locations/`location`/deployments/`deployment`/ revisions/`revision``
335
+ # Corresponds to the JSON property `latestRevision`
336
+ # @return [String]
337
+ attr_accessor :latest_revision
338
+
339
+ # Output only. Current lock state of the deployment.
340
+ # Corresponds to the JSON property `lockState`
341
+ # @return [String]
342
+ attr_accessor :lock_state
343
+
344
+ # Resource name of the deployment. Format: `projects/`project`/locations/`
345
+ # location`/deployments/`deployment``
346
+ # Corresponds to the JSON property `name`
347
+ # @return [String]
348
+ attr_accessor :name
349
+
350
+ # Optional. Input to control quota checks for resources in terraform
351
+ # configuration files. There are limited resources on which quota validation
352
+ # applies.
353
+ # Corresponds to the JSON property `quotaValidation`
354
+ # @return [String]
355
+ attr_accessor :quota_validation
356
+
357
+ # Optional. User-specified Service Account (SA) credentials to be used when
358
+ # actuating resources. Format: `projects/`projectID`/serviceAccounts/`
359
+ # serviceAccount``
360
+ # Corresponds to the JSON property `serviceAccount`
361
+ # @return [String]
362
+ attr_accessor :service_account
363
+
364
+ # Output only. Current state of the deployment.
365
+ # Corresponds to the JSON property `state`
366
+ # @return [String]
367
+ attr_accessor :state
368
+
369
+ # Output only. Additional information regarding the current state.
370
+ # Corresponds to the JSON property `stateDetail`
371
+ # @return [String]
372
+ attr_accessor :state_detail
373
+
374
+ # TerraformBlueprint describes the source of a Terraform root module which
375
+ # describes the resources and configs to be deployed.
376
+ # Corresponds to the JSON property `terraformBlueprint`
377
+ # @return [Google::Apis::ConfigV1::TerraformBlueprint]
378
+ attr_accessor :terraform_blueprint
379
+
380
+ # Output only. Errors encountered when deleting this deployment. Errors are
381
+ # truncated to 10 entries, see `delete_results` and `error_logs` for full
382
+ # details.
383
+ # Corresponds to the JSON property `tfErrors`
384
+ # @return [Array<Google::Apis::ConfigV1::TerraformError>]
385
+ attr_accessor :tf_errors
386
+
387
+ # Output only. The current Terraform version set on the deployment. It is in the
388
+ # format of "Major.Minor.Patch", for example, "1.3.10".
389
+ # Corresponds to the JSON property `tfVersion`
390
+ # @return [String]
391
+ attr_accessor :tf_version
392
+
393
+ # Optional. The user-specified Terraform version constraint. Example: "=1.3.10".
394
+ # Corresponds to the JSON property `tfVersionConstraint`
395
+ # @return [String]
396
+ attr_accessor :tf_version_constraint
397
+
398
+ # Output only. Time when the deployment was last modified.
399
+ # Corresponds to the JSON property `updateTime`
400
+ # @return [String]
401
+ attr_accessor :update_time
402
+
403
+ # Optional. The user-specified Cloud Build worker pool resource in which the
404
+ # Cloud Build job will execute. Format: `projects/`project`/locations/`location`/
405
+ # workerPools/`workerPoolId``. If this field is unspecified, the default Cloud
406
+ # Build worker pool will be used.
407
+ # Corresponds to the JSON property `workerPool`
408
+ # @return [String]
409
+ attr_accessor :worker_pool
410
+
411
+ def initialize(**args)
412
+ update!(**args)
413
+ end
414
+
415
+ # Update properties of this object
416
+ def update!(**args)
417
+ @annotations = args[:annotations] if args.key?(:annotations)
418
+ @artifacts_gcs_bucket = args[:artifacts_gcs_bucket] if args.key?(:artifacts_gcs_bucket)
419
+ @create_time = args[:create_time] if args.key?(:create_time)
420
+ @delete_build = args[:delete_build] if args.key?(:delete_build)
421
+ @delete_logs = args[:delete_logs] if args.key?(:delete_logs)
422
+ @delete_results = args[:delete_results] if args.key?(:delete_results)
423
+ @error_code = args[:error_code] if args.key?(:error_code)
424
+ @error_logs = args[:error_logs] if args.key?(:error_logs)
425
+ @import_existing_resources = args[:import_existing_resources] if args.key?(:import_existing_resources)
426
+ @labels = args[:labels] if args.key?(:labels)
427
+ @latest_revision = args[:latest_revision] if args.key?(:latest_revision)
428
+ @lock_state = args[:lock_state] if args.key?(:lock_state)
429
+ @name = args[:name] if args.key?(:name)
430
+ @quota_validation = args[:quota_validation] if args.key?(:quota_validation)
431
+ @service_account = args[:service_account] if args.key?(:service_account)
432
+ @state = args[:state] if args.key?(:state)
433
+ @state_detail = args[:state_detail] if args.key?(:state_detail)
434
+ @terraform_blueprint = args[:terraform_blueprint] if args.key?(:terraform_blueprint)
435
+ @tf_errors = args[:tf_errors] if args.key?(:tf_errors)
436
+ @tf_version = args[:tf_version] if args.key?(:tf_version)
437
+ @tf_version_constraint = args[:tf_version_constraint] if args.key?(:tf_version_constraint)
438
+ @update_time = args[:update_time] if args.key?(:update_time)
439
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
440
+ end
441
+ end
442
+
443
+ # Ephemeral metadata content describing the state of a deployment operation.
444
+ class DeploymentOperationMetadata
445
+ include Google::Apis::Core::Hashable
446
+
447
+ # Outputs and artifacts from applying a deployment.
448
+ # Corresponds to the JSON property `applyResults`
449
+ # @return [Google::Apis::ConfigV1::ApplyResults]
450
+ attr_accessor :apply_results
451
+
452
+ # Output only. Cloud Build instance UUID associated with this operation.
453
+ # Corresponds to the JSON property `build`
454
+ # @return [String]
455
+ attr_accessor :build
456
+
457
+ # Output only. Location of Deployment operations logs in `gs://`bucket`/`object``
458
+ # format.
459
+ # Corresponds to the JSON property `logs`
460
+ # @return [String]
461
+ attr_accessor :logs
462
+
463
+ # The current step the deployment operation is running.
464
+ # Corresponds to the JSON property `step`
465
+ # @return [String]
466
+ attr_accessor :step
467
+
468
+ def initialize(**args)
469
+ update!(**args)
470
+ end
471
+
472
+ # Update properties of this object
473
+ def update!(**args)
474
+ @apply_results = args[:apply_results] if args.key?(:apply_results)
475
+ @build = args[:build] if args.key?(:build)
476
+ @logs = args[:logs] if args.key?(:logs)
477
+ @step = args[:step] if args.key?(:step)
478
+ end
479
+ end
480
+
481
+ # A generic empty message that you can re-use to avoid defining duplicated empty
482
+ # messages in your APIs. A typical example is to use it as the request or the
483
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
484
+ # protobuf.Empty) returns (google.protobuf.Empty); `
485
+ class Empty
486
+ include Google::Apis::Core::Hashable
487
+
488
+ def initialize(**args)
489
+ update!(**args)
490
+ end
491
+
492
+ # Update properties of this object
493
+ def update!(**args)
494
+ end
495
+ end
496
+
497
+ # A request to export a state file passed to a 'ExportDeploymentStatefile' call.
498
+ class ExportDeploymentStatefileRequest
499
+ include Google::Apis::Core::Hashable
500
+
501
+ # Optional. If this flag is set to true, the exported deployment state file will
502
+ # be the draft state. This will enable the draft file to be validated before
503
+ # copying it over to the working state on unlock.
504
+ # Corresponds to the JSON property `draft`
505
+ # @return [Boolean]
506
+ attr_accessor :draft
507
+ alias_method :draft?, :draft
508
+
509
+ def initialize(**args)
510
+ update!(**args)
511
+ end
512
+
513
+ # Update properties of this object
514
+ def update!(**args)
515
+ @draft = args[:draft] if args.key?(:draft)
516
+ end
517
+ end
518
+
519
+ # A request to export preview results.
520
+ class ExportPreviewResultRequest
521
+ include Google::Apis::Core::Hashable
522
+
523
+ def initialize(**args)
524
+ update!(**args)
525
+ end
526
+
527
+ # Update properties of this object
528
+ def update!(**args)
529
+ end
530
+ end
531
+
532
+ # A response to `ExportPreviewResult` call. Contains preview results.
533
+ class ExportPreviewResultResponse
534
+ include Google::Apis::Core::Hashable
535
+
536
+ # Contains a signed Cloud Storage URLs.
537
+ # Corresponds to the JSON property `result`
538
+ # @return [Google::Apis::ConfigV1::PreviewResult]
539
+ attr_accessor :result
540
+
541
+ def initialize(**args)
542
+ update!(**args)
543
+ end
544
+
545
+ # Update properties of this object
546
+ def update!(**args)
547
+ @result = args[:result] if args.key?(:result)
548
+ end
549
+ end
550
+
551
+ # A request to export a state file passed to a 'ExportRevisionStatefile' call.
552
+ class ExportRevisionStatefileRequest
553
+ include Google::Apis::Core::Hashable
554
+
555
+ def initialize(**args)
556
+ update!(**args)
557
+ end
558
+
559
+ # Update properties of this object
560
+ def update!(**args)
561
+ end
562
+ end
563
+
564
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
565
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
566
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
567
+ # "Summary size limit" description: "Determines if a summary is less than 100
568
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
569
+ # Requestor is owner" description: "Determines if requestor is the document
570
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
571
+ # Logic): title: "Public documents" description: "Determine whether the document
572
+ # should be publicly visible" expression: "document.type != 'private' &&
573
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
574
+ # string" description: "Create a notification string with a timestamp."
575
+ # expression: "'New message received at ' + string(document.create_time)" The
576
+ # exact variables and functions that may be referenced within an expression are
577
+ # determined by the service that evaluates it. See the service documentation for
578
+ # additional information.
579
+ class Expr
580
+ include Google::Apis::Core::Hashable
581
+
582
+ # Optional. Description of the expression. This is a longer text which describes
583
+ # the expression, e.g. when hovered over it in a UI.
584
+ # Corresponds to the JSON property `description`
585
+ # @return [String]
586
+ attr_accessor :description
587
+
588
+ # Textual representation of an expression in Common Expression Language syntax.
589
+ # Corresponds to the JSON property `expression`
590
+ # @return [String]
591
+ attr_accessor :expression
592
+
593
+ # Optional. String indicating the location of the expression for error reporting,
594
+ # e.g. a file name and a position in the file.
595
+ # Corresponds to the JSON property `location`
596
+ # @return [String]
597
+ attr_accessor :location
598
+
599
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
600
+ # This can be used e.g. in UIs which allow to enter the expression.
601
+ # Corresponds to the JSON property `title`
602
+ # @return [String]
603
+ attr_accessor :title
604
+
605
+ def initialize(**args)
606
+ update!(**args)
607
+ end
608
+
609
+ # Update properties of this object
610
+ def update!(**args)
611
+ @description = args[:description] if args.key?(:description)
612
+ @expression = args[:expression] if args.key?(:expression)
613
+ @location = args[:location] if args.key?(:location)
614
+ @title = args[:title] if args.key?(:title)
615
+ end
616
+ end
617
+
618
+ # A set of files in a Git repository.
619
+ class GitSource
620
+ include Google::Apis::Core::Hashable
621
+
622
+ # Optional. Subdirectory inside the repository. Example: 'staging/my-package'
623
+ # Corresponds to the JSON property `directory`
624
+ # @return [String]
625
+ attr_accessor :directory
626
+
627
+ # Optional. Git reference (e.g. branch or tag).
628
+ # Corresponds to the JSON property `ref`
629
+ # @return [String]
630
+ attr_accessor :ref
631
+
632
+ # Optional. Repository URL. Example: 'https://github.com/kubernetes/examples.git'
633
+ # Corresponds to the JSON property `repo`
634
+ # @return [String]
635
+ attr_accessor :repo
636
+
637
+ def initialize(**args)
638
+ update!(**args)
639
+ end
640
+
641
+ # Update properties of this object
642
+ def update!(**args)
643
+ @directory = args[:directory] if args.key?(:directory)
644
+ @ref = args[:ref] if args.key?(:ref)
645
+ @repo = args[:repo] if args.key?(:repo)
646
+ end
647
+ end
648
+
649
+ # A request to import a state file passed to a 'ImportStatefile' call.
650
+ class ImportStatefileRequest
651
+ include Google::Apis::Core::Hashable
652
+
653
+ # Required. Lock ID of the lock file to verify that the user who is importing
654
+ # the state file previously locked the Deployment.
655
+ # Corresponds to the JSON property `lockId`
656
+ # @return [Fixnum]
657
+ attr_accessor :lock_id
658
+
659
+ def initialize(**args)
660
+ update!(**args)
661
+ end
662
+
663
+ # Update properties of this object
664
+ def update!(**args)
665
+ @lock_id = args[:lock_id] if args.key?(:lock_id)
666
+ end
667
+ end
668
+
669
+ #
670
+ class ListDeploymentsResponse
671
+ include Google::Apis::Core::Hashable
672
+
673
+ # List of Deployments.
674
+ # Corresponds to the JSON property `deployments`
675
+ # @return [Array<Google::Apis::ConfigV1::Deployment>]
676
+ attr_accessor :deployments
677
+
678
+ # Token to be supplied to the next ListDeployments request via `page_token` to
679
+ # obtain the next set of results.
680
+ # Corresponds to the JSON property `nextPageToken`
681
+ # @return [String]
682
+ attr_accessor :next_page_token
683
+
684
+ # Locations that could not be reached.
685
+ # Corresponds to the JSON property `unreachable`
686
+ # @return [Array<String>]
687
+ attr_accessor :unreachable
688
+
689
+ def initialize(**args)
690
+ update!(**args)
691
+ end
692
+
693
+ # Update properties of this object
694
+ def update!(**args)
695
+ @deployments = args[:deployments] if args.key?(:deployments)
696
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
697
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
698
+ end
699
+ end
700
+
701
+ # The response message for Locations.ListLocations.
702
+ class ListLocationsResponse
703
+ include Google::Apis::Core::Hashable
704
+
705
+ # A list of locations that matches the specified filter in the request.
706
+ # Corresponds to the JSON property `locations`
707
+ # @return [Array<Google::Apis::ConfigV1::Location>]
708
+ attr_accessor :locations
709
+
710
+ # The standard List next-page token.
711
+ # Corresponds to the JSON property `nextPageToken`
712
+ # @return [String]
713
+ attr_accessor :next_page_token
714
+
715
+ def initialize(**args)
716
+ update!(**args)
717
+ end
718
+
719
+ # Update properties of this object
720
+ def update!(**args)
721
+ @locations = args[:locations] if args.key?(:locations)
722
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
723
+ end
724
+ end
725
+
726
+ # The response message for Operations.ListOperations.
727
+ class ListOperationsResponse
728
+ include Google::Apis::Core::Hashable
729
+
730
+ # The standard List next-page token.
731
+ # Corresponds to the JSON property `nextPageToken`
732
+ # @return [String]
733
+ attr_accessor :next_page_token
734
+
735
+ # A list of operations that matches the specified filter in the request.
736
+ # Corresponds to the JSON property `operations`
737
+ # @return [Array<Google::Apis::ConfigV1::Operation>]
738
+ attr_accessor :operations
739
+
740
+ def initialize(**args)
741
+ update!(**args)
742
+ end
743
+
744
+ # Update properties of this object
745
+ def update!(**args)
746
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
747
+ @operations = args[:operations] if args.key?(:operations)
748
+ end
749
+ end
750
+
751
+ # A response to a `ListPreviews` call. Contains a list of Previews.
752
+ class ListPreviewsResponse
753
+ include Google::Apis::Core::Hashable
754
+
755
+ # Token to be supplied to the next ListPreviews request via `page_token` to
756
+ # obtain the next set of results.
757
+ # Corresponds to the JSON property `nextPageToken`
758
+ # @return [String]
759
+ attr_accessor :next_page_token
760
+
761
+ # List of Previewss.
762
+ # Corresponds to the JSON property `previews`
763
+ # @return [Array<Google::Apis::ConfigV1::Preview>]
764
+ attr_accessor :previews
765
+
766
+ # Locations that could not be reached.
767
+ # Corresponds to the JSON property `unreachable`
768
+ # @return [Array<String>]
769
+ attr_accessor :unreachable
770
+
771
+ def initialize(**args)
772
+ update!(**args)
773
+ end
774
+
775
+ # Update properties of this object
776
+ def update!(**args)
777
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
778
+ @previews = args[:previews] if args.key?(:previews)
779
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
780
+ end
781
+ end
782
+
783
+ # A response to a 'ListResources' call. Contains a list of Resources.
784
+ class ListResourcesResponse
785
+ include Google::Apis::Core::Hashable
786
+
787
+ # A token to request the next page of resources from the 'ListResources' method.
788
+ # The value of an empty string means that there are no more resources to return.
789
+ # Corresponds to the JSON property `nextPageToken`
790
+ # @return [String]
791
+ attr_accessor :next_page_token
792
+
793
+ # List of Resourcess.
794
+ # Corresponds to the JSON property `resources`
795
+ # @return [Array<Google::Apis::ConfigV1::Resource>]
796
+ attr_accessor :resources
797
+
798
+ # Locations that could not be reached.
799
+ # Corresponds to the JSON property `unreachable`
800
+ # @return [Array<String>]
801
+ attr_accessor :unreachable
802
+
803
+ def initialize(**args)
804
+ update!(**args)
805
+ end
806
+
807
+ # Update properties of this object
808
+ def update!(**args)
809
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
810
+ @resources = args[:resources] if args.key?(:resources)
811
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
812
+ end
813
+ end
814
+
815
+ # A response to a 'ListRevisions' call. Contains a list of Revisions.
816
+ class ListRevisionsResponse
817
+ include Google::Apis::Core::Hashable
818
+
819
+ # A token to request the next page of resources from the 'ListRevisions' method.
820
+ # The value of an empty string means that there are no more resources to return.
821
+ # Corresponds to the JSON property `nextPageToken`
822
+ # @return [String]
823
+ attr_accessor :next_page_token
824
+
825
+ # List of Revisions.
826
+ # Corresponds to the JSON property `revisions`
827
+ # @return [Array<Google::Apis::ConfigV1::Revision>]
828
+ attr_accessor :revisions
829
+
830
+ # Locations that could not be reached.
831
+ # Corresponds to the JSON property `unreachable`
832
+ # @return [Array<String>]
833
+ attr_accessor :unreachable
834
+
835
+ def initialize(**args)
836
+ update!(**args)
837
+ end
838
+
839
+ # Update properties of this object
840
+ def update!(**args)
841
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
842
+ @revisions = args[:revisions] if args.key?(:revisions)
843
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
844
+ end
845
+ end
846
+
847
+ # The response message for the `ListTerraformVersions` method.
848
+ class ListTerraformVersionsResponse
849
+ include Google::Apis::Core::Hashable
850
+
851
+ # Token to be supplied to the next ListTerraformVersions request via `page_token`
852
+ # to obtain the next set of results.
853
+ # Corresponds to the JSON property `nextPageToken`
854
+ # @return [String]
855
+ attr_accessor :next_page_token
856
+
857
+ # List of TerraformVersions.
858
+ # Corresponds to the JSON property `terraformVersions`
859
+ # @return [Array<Google::Apis::ConfigV1::TerraformVersion>]
860
+ attr_accessor :terraform_versions
861
+
862
+ # Unreachable resources, if any.
863
+ # Corresponds to the JSON property `unreachable`
864
+ # @return [Array<String>]
865
+ attr_accessor :unreachable
866
+
867
+ def initialize(**args)
868
+ update!(**args)
869
+ end
870
+
871
+ # Update properties of this object
872
+ def update!(**args)
873
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
874
+ @terraform_versions = args[:terraform_versions] if args.key?(:terraform_versions)
875
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
876
+ end
877
+ end
878
+
879
+ # A resource that represents a Google Cloud location.
880
+ class Location
881
+ include Google::Apis::Core::Hashable
882
+
883
+ # The friendly name for this location, typically a nearby city name. For example,
884
+ # "Tokyo".
885
+ # Corresponds to the JSON property `displayName`
886
+ # @return [String]
887
+ attr_accessor :display_name
888
+
889
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
890
+ # region": "us-east1"`
891
+ # Corresponds to the JSON property `labels`
892
+ # @return [Hash<String,String>]
893
+ attr_accessor :labels
894
+
895
+ # The canonical id for this location. For example: `"us-east1"`.
896
+ # Corresponds to the JSON property `locationId`
897
+ # @return [String]
898
+ attr_accessor :location_id
899
+
900
+ # Service-specific metadata. For example the available capacity at the given
901
+ # location.
902
+ # Corresponds to the JSON property `metadata`
903
+ # @return [Hash<String,Object>]
904
+ attr_accessor :metadata
905
+
906
+ # Resource name for the location, which may vary between implementations. For
907
+ # example: `"projects/example-project/locations/us-east1"`
908
+ # Corresponds to the JSON property `name`
909
+ # @return [String]
910
+ attr_accessor :name
911
+
912
+ def initialize(**args)
913
+ update!(**args)
914
+ end
915
+
916
+ # Update properties of this object
917
+ def update!(**args)
918
+ @display_name = args[:display_name] if args.key?(:display_name)
919
+ @labels = args[:labels] if args.key?(:labels)
920
+ @location_id = args[:location_id] if args.key?(:location_id)
921
+ @metadata = args[:metadata] if args.key?(:metadata)
922
+ @name = args[:name] if args.key?(:name)
923
+ end
924
+ end
925
+
926
+ # A request to lock a deployment passed to a 'LockDeployment' call.
927
+ class LockDeploymentRequest
928
+ include Google::Apis::Core::Hashable
929
+
930
+ def initialize(**args)
931
+ update!(**args)
932
+ end
933
+
934
+ # Update properties of this object
935
+ def update!(**args)
936
+ end
937
+ end
938
+
939
+ # Details about the lock which locked the deployment.
940
+ class LockInfo
941
+ include Google::Apis::Core::Hashable
942
+
943
+ # Time that the lock was taken.
944
+ # Corresponds to the JSON property `createTime`
945
+ # @return [String]
946
+ attr_accessor :create_time
947
+
948
+ # Extra information to store with the lock, provided by the caller.
949
+ # Corresponds to the JSON property `info`
950
+ # @return [String]
951
+ attr_accessor :info
952
+
953
+ # Unique ID for the lock to be overridden with generation ID in the backend.
954
+ # Corresponds to the JSON property `lockId`
955
+ # @return [Fixnum]
956
+ attr_accessor :lock_id
957
+
958
+ # Terraform operation, provided by the caller.
959
+ # Corresponds to the JSON property `operation`
960
+ # @return [String]
961
+ attr_accessor :operation
962
+
963
+ # Terraform version
964
+ # Corresponds to the JSON property `version`
965
+ # @return [String]
966
+ attr_accessor :version
967
+
968
+ # user@hostname when available
969
+ # Corresponds to the JSON property `who`
970
+ # @return [String]
971
+ attr_accessor :who
972
+
973
+ def initialize(**args)
974
+ update!(**args)
975
+ end
976
+
977
+ # Update properties of this object
978
+ def update!(**args)
979
+ @create_time = args[:create_time] if args.key?(:create_time)
980
+ @info = args[:info] if args.key?(:info)
981
+ @lock_id = args[:lock_id] if args.key?(:lock_id)
982
+ @operation = args[:operation] if args.key?(:operation)
983
+ @version = args[:version] if args.key?(:version)
984
+ @who = args[:who] if args.key?(:who)
985
+ end
986
+ end
987
+
988
+ # This resource represents a long-running operation that is the result of a
989
+ # network API call.
990
+ class Operation
991
+ include Google::Apis::Core::Hashable
992
+
993
+ # If the value is `false`, it means the operation is still in progress. If `true`
994
+ # , the operation is completed, and either `error` or `response` is available.
995
+ # Corresponds to the JSON property `done`
996
+ # @return [Boolean]
997
+ attr_accessor :done
998
+ alias_method :done?, :done
999
+
1000
+ # The `Status` type defines a logical error model that is suitable for different
1001
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1002
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1003
+ # data: error code, error message, and error details. You can find out more
1004
+ # about this error model and how to work with it in the [API Design Guide](https:
1005
+ # //cloud.google.com/apis/design/errors).
1006
+ # Corresponds to the JSON property `error`
1007
+ # @return [Google::Apis::ConfigV1::Status]
1008
+ attr_accessor :error
1009
+
1010
+ # Service-specific metadata associated with the operation. It typically contains
1011
+ # progress information and common metadata such as create time. Some services
1012
+ # might not provide such metadata. Any method that returns a long-running
1013
+ # operation should document the metadata type, if any.
1014
+ # Corresponds to the JSON property `metadata`
1015
+ # @return [Hash<String,Object>]
1016
+ attr_accessor :metadata
1017
+
1018
+ # The server-assigned name, which is only unique within the same service that
1019
+ # originally returns it. If you use the default HTTP mapping, the `name` should
1020
+ # be a resource name ending with `operations/`unique_id``.
1021
+ # Corresponds to the JSON property `name`
1022
+ # @return [String]
1023
+ attr_accessor :name
1024
+
1025
+ # The normal, successful response of the operation. If the original method
1026
+ # returns no data on success, such as `Delete`, the response is `google.protobuf.
1027
+ # Empty`. If the original method is standard `Get`/`Create`/`Update`, the
1028
+ # response should be the resource. For other methods, the response should have
1029
+ # the type `XxxResponse`, where `Xxx` is the original method name. For example,
1030
+ # if the original method name is `TakeSnapshot()`, the inferred response type is
1031
+ # `TakeSnapshotResponse`.
1032
+ # Corresponds to the JSON property `response`
1033
+ # @return [Hash<String,Object>]
1034
+ attr_accessor :response
1035
+
1036
+ def initialize(**args)
1037
+ update!(**args)
1038
+ end
1039
+
1040
+ # Update properties of this object
1041
+ def update!(**args)
1042
+ @done = args[:done] if args.key?(:done)
1043
+ @error = args[:error] if args.key?(:error)
1044
+ @metadata = args[:metadata] if args.key?(:metadata)
1045
+ @name = args[:name] if args.key?(:name)
1046
+ @response = args[:response] if args.key?(:response)
1047
+ end
1048
+ end
1049
+
1050
+ # Represents the metadata of the long-running operation.
1051
+ class OperationMetadata
1052
+ include Google::Apis::Core::Hashable
1053
+
1054
+ # Output only. API version used to start the operation.
1055
+ # Corresponds to the JSON property `apiVersion`
1056
+ # @return [String]
1057
+ attr_accessor :api_version
1058
+
1059
+ # Output only. Time when the operation was created.
1060
+ # Corresponds to the JSON property `createTime`
1061
+ # @return [String]
1062
+ attr_accessor :create_time
1063
+
1064
+ # Ephemeral metadata content describing the state of a deployment operation.
1065
+ # Corresponds to the JSON property `deploymentMetadata`
1066
+ # @return [Google::Apis::ConfigV1::DeploymentOperationMetadata]
1067
+ attr_accessor :deployment_metadata
1068
+
1069
+ # Output only. Time when the operation finished running.
1070
+ # Corresponds to the JSON property `endTime`
1071
+ # @return [String]
1072
+ attr_accessor :end_time
1073
+
1074
+ # Ephemeral metadata content describing the state of a preview operation.
1075
+ # Corresponds to the JSON property `previewMetadata`
1076
+ # @return [Google::Apis::ConfigV1::PreviewOperationMetadata]
1077
+ attr_accessor :preview_metadata
1078
+
1079
+ # Output only. Identifies whether the user has requested cancellation of the
1080
+ # operation. Operations that have successfully been cancelled have Operation.
1081
+ # error value with a google.rpc.Status.code of 1, corresponding to `Code.
1082
+ # CANCELLED`.
1083
+ # Corresponds to the JSON property `requestedCancellation`
1084
+ # @return [Boolean]
1085
+ attr_accessor :requested_cancellation
1086
+ alias_method :requested_cancellation?, :requested_cancellation
1087
+
1088
+ # Output only. Human-readable status of the operation, if any.
1089
+ # Corresponds to the JSON property `statusMessage`
1090
+ # @return [String]
1091
+ attr_accessor :status_message
1092
+
1093
+ # Output only. Server-defined resource path for the target of the operation.
1094
+ # Corresponds to the JSON property `target`
1095
+ # @return [String]
1096
+ attr_accessor :target
1097
+
1098
+ # Output only. Name of the verb executed by the operation.
1099
+ # Corresponds to the JSON property `verb`
1100
+ # @return [String]
1101
+ attr_accessor :verb
1102
+
1103
+ def initialize(**args)
1104
+ update!(**args)
1105
+ end
1106
+
1107
+ # Update properties of this object
1108
+ def update!(**args)
1109
+ @api_version = args[:api_version] if args.key?(:api_version)
1110
+ @create_time = args[:create_time] if args.key?(:create_time)
1111
+ @deployment_metadata = args[:deployment_metadata] if args.key?(:deployment_metadata)
1112
+ @end_time = args[:end_time] if args.key?(:end_time)
1113
+ @preview_metadata = args[:preview_metadata] if args.key?(:preview_metadata)
1114
+ @requested_cancellation = args[:requested_cancellation] if args.key?(:requested_cancellation)
1115
+ @status_message = args[:status_message] if args.key?(:status_message)
1116
+ @target = args[:target] if args.key?(:target)
1117
+ @verb = args[:verb] if args.key?(:verb)
1118
+ end
1119
+ end
1120
+
1121
+ # An Identity and Access Management (IAM) policy, which specifies access
1122
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1123
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
1124
+ # Principals can be user accounts, service accounts, Google groups, and domains (
1125
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
1126
+ # an IAM predefined role or a user-created custom role. For some types of Google
1127
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
1128
+ # logical expression that allows access to a resource only if the expression
1129
+ # evaluates to `true`. A condition can add constraints based on attributes of
1130
+ # the request, the resource, or both. To learn which resources support
1131
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
1132
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ``` ` "
1133
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
1134
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
1135
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
1136
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
1137
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
1138
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
1139
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` ``` **YAML
1140
+ # example:** ``` bindings: - members: - user:mike@example.com - group:admins@
1141
+ # example.com - domain:google.com - serviceAccount:my-project-id@appspot.
1142
+ # gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: -
1143
+ # user:eve@example.com role: roles/resourcemanager.organizationViewer condition:
1144
+ # title: expirable access description: Does not grant access after Sep 2020
1145
+ # expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag:
1146
+ # BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the
1147
+ # [IAM documentation](https://cloud.google.com/iam/docs/).
1148
+ class Policy
1149
+ include Google::Apis::Core::Hashable
1150
+
1151
+ # Specifies cloud audit logging configuration for this policy.
1152
+ # Corresponds to the JSON property `auditConfigs`
1153
+ # @return [Array<Google::Apis::ConfigV1::AuditConfig>]
1154
+ attr_accessor :audit_configs
1155
+
1156
+ # Associates a list of `members`, or principals, with a `role`. Optionally, may
1157
+ # specify a `condition` that determines how and when the `bindings` are applied.
1158
+ # Each of the `bindings` must contain at least one principal. The `bindings` in
1159
+ # a `Policy` can refer to up to 1,500 principals; up to 250 of these principals
1160
+ # can be Google groups. Each occurrence of a principal counts towards these
1161
+ # limits. For example, if the `bindings` grant 50 different roles to `user:alice@
1162
+ # example.com`, and not to any other principal, then you can add another 1,450
1163
+ # principals to the `bindings` in the `Policy`.
1164
+ # Corresponds to the JSON property `bindings`
1165
+ # @return [Array<Google::Apis::ConfigV1::Binding>]
1166
+ attr_accessor :bindings
1167
+
1168
+ # `etag` is used for optimistic concurrency control as a way to help prevent
1169
+ # simultaneous updates of a policy from overwriting each other. It is strongly
1170
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
1171
+ # to perform policy updates in order to avoid race conditions: An `etag` is
1172
+ # returned in the response to `getIamPolicy`, and systems are expected to put
1173
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
1174
+ # applied to the same version of the policy. **Important:** If you use IAM
1175
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
1176
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
1177
+ # with a version `1` policy, and all of the conditions in the version `3` policy
1178
+ # are lost.
1179
+ # Corresponds to the JSON property `etag`
1180
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1181
+ # @return [String]
1182
+ attr_accessor :etag
1183
+
1184
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
1185
+ # Requests that specify an invalid value are rejected. Any operation that
1186
+ # affects conditional role bindings must specify version `3`. This requirement
1187
+ # applies to the following operations: * Getting a policy that includes a
1188
+ # conditional role binding * Adding a conditional role binding to a policy *
1189
+ # Changing a conditional role binding in a policy * Removing any role binding,
1190
+ # with or without a condition, from a policy that includes conditions **
1191
+ # Important:** If you use IAM Conditions, you must include the `etag` field
1192
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
1193
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
1194
+ # conditions in the version `3` policy are lost. If a policy does not include
1195
+ # any conditions, operations on that policy may specify any valid version or
1196
+ # leave the field unset. To learn which resources support conditions in their
1197
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
1198
+ # conditions/resource-policies).
1199
+ # Corresponds to the JSON property `version`
1200
+ # @return [Fixnum]
1201
+ attr_accessor :version
1202
+
1203
+ def initialize(**args)
1204
+ update!(**args)
1205
+ end
1206
+
1207
+ # Update properties of this object
1208
+ def update!(**args)
1209
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
1210
+ @bindings = args[:bindings] if args.key?(:bindings)
1211
+ @etag = args[:etag] if args.key?(:etag)
1212
+ @version = args[:version] if args.key?(:version)
1213
+ end
1214
+ end
1215
+
1216
+ # A preview represents a set of actions Infra Manager would perform to move the
1217
+ # resources towards the desired state as specified in the configuration.
1218
+ class Preview
1219
+ include Google::Apis::Core::Hashable
1220
+
1221
+ # Optional. User-defined location of Cloud Build logs, artifacts, and in Google
1222
+ # Cloud Storage. Format: `gs://`bucket`/`folder`` A default bucket will be
1223
+ # bootstrapped if the field is not set or empty Default Bucket Format: `gs://--
1224
+ # blueprint-config` Constraints: - The bucket needs to be in the same project as
1225
+ # the deployment - The path cannot be within the path of `gcs_source` If omitted
1226
+ # and deployment resource ref provided has artifacts_gcs_bucket defined, that
1227
+ # artifact bucket is used.
1228
+ # Corresponds to the JSON property `artifactsGcsBucket`
1229
+ # @return [String]
1230
+ attr_accessor :artifacts_gcs_bucket
1231
+
1232
+ # Output only. Cloud Build instance UUID associated with this preview.
1233
+ # Corresponds to the JSON property `build`
1234
+ # @return [String]
1235
+ attr_accessor :build
1236
+
1237
+ # Output only. Time the preview was created.
1238
+ # Corresponds to the JSON property `createTime`
1239
+ # @return [String]
1240
+ attr_accessor :create_time
1241
+
1242
+ # Optional. Optional deployment reference. If specified, the preview will be
1243
+ # performed using the provided deployment's current state and use any relevant
1244
+ # fields from the deployment unless explicitly specified in the preview create
1245
+ # request.
1246
+ # Corresponds to the JSON property `deployment`
1247
+ # @return [String]
1248
+ attr_accessor :deployment
1249
+
1250
+ # Output only. Code describing any errors that may have occurred.
1251
+ # Corresponds to the JSON property `errorCode`
1252
+ # @return [String]
1253
+ attr_accessor :error_code
1254
+
1255
+ # Output only. Link to tf-error.ndjson file, which contains the full list of the
1256
+ # errors encountered during a Terraform preview. Format: `gs://`bucket`/`object``
1257
+ # .
1258
+ # Corresponds to the JSON property `errorLogs`
1259
+ # @return [String]
1260
+ attr_accessor :error_logs
1261
+
1262
+ # The `Status` type defines a logical error model that is suitable for different
1263
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1264
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1265
+ # data: error code, error message, and error details. You can find out more
1266
+ # about this error model and how to work with it in the [API Design Guide](https:
1267
+ # //cloud.google.com/apis/design/errors).
1268
+ # Corresponds to the JSON property `errorStatus`
1269
+ # @return [Google::Apis::ConfigV1::Status]
1270
+ attr_accessor :error_status
1271
+
1272
+ # Optional. User-defined labels for the preview.
1273
+ # Corresponds to the JSON property `labels`
1274
+ # @return [Hash<String,String>]
1275
+ attr_accessor :labels
1276
+
1277
+ # Output only. Location of preview logs in `gs://`bucket`/`object`` format.
1278
+ # Corresponds to the JSON property `logs`
1279
+ # @return [String]
1280
+ attr_accessor :logs
1281
+
1282
+ # Identifier. Resource name of the preview. Resource name can be user provided
1283
+ # or server generated ID if unspecified. Format: `projects/`project`/locations/`
1284
+ # location`/previews/`preview``
1285
+ # Corresponds to the JSON property `name`
1286
+ # @return [String]
1287
+ attr_accessor :name
1288
+
1289
+ # Artifacts created by preview.
1290
+ # Corresponds to the JSON property `previewArtifacts`
1291
+ # @return [Google::Apis::ConfigV1::PreviewArtifacts]
1292
+ attr_accessor :preview_artifacts
1293
+
1294
+ # Optional. Current mode of preview.
1295
+ # Corresponds to the JSON property `previewMode`
1296
+ # @return [String]
1297
+ attr_accessor :preview_mode
1298
+
1299
+ # Optional. User-specified Service Account (SA) credentials to be used when
1300
+ # previewing resources. Format: `projects/`projectID`/serviceAccounts/`
1301
+ # serviceAccount``
1302
+ # Corresponds to the JSON property `serviceAccount`
1303
+ # @return [String]
1304
+ attr_accessor :service_account
1305
+
1306
+ # Output only. Current state of the preview.
1307
+ # Corresponds to the JSON property `state`
1308
+ # @return [String]
1309
+ attr_accessor :state
1310
+
1311
+ # TerraformBlueprint describes the source of a Terraform root module which
1312
+ # describes the resources and configs to be deployed.
1313
+ # Corresponds to the JSON property `terraformBlueprint`
1314
+ # @return [Google::Apis::ConfigV1::TerraformBlueprint]
1315
+ attr_accessor :terraform_blueprint
1316
+
1317
+ # Output only. Summary of errors encountered during Terraform preview. It has a
1318
+ # size limit of 10, i.e. only top 10 errors will be summarized here.
1319
+ # Corresponds to the JSON property `tfErrors`
1320
+ # @return [Array<Google::Apis::ConfigV1::TerraformError>]
1321
+ attr_accessor :tf_errors
1322
+
1323
+ # Optional. The user-specified Worker Pool resource in which the Cloud Build job
1324
+ # will execute. Format projects/`project`/locations/`location`/workerPools/`
1325
+ # workerPoolId` If this field is unspecified, the default Cloud Build worker
1326
+ # pool will be used. If omitted and deployment resource ref provided has
1327
+ # worker_pool defined, that worker pool is used.
1328
+ # Corresponds to the JSON property `workerPool`
1329
+ # @return [String]
1330
+ attr_accessor :worker_pool
1331
+
1332
+ def initialize(**args)
1333
+ update!(**args)
1334
+ end
1335
+
1336
+ # Update properties of this object
1337
+ def update!(**args)
1338
+ @artifacts_gcs_bucket = args[:artifacts_gcs_bucket] if args.key?(:artifacts_gcs_bucket)
1339
+ @build = args[:build] if args.key?(:build)
1340
+ @create_time = args[:create_time] if args.key?(:create_time)
1341
+ @deployment = args[:deployment] if args.key?(:deployment)
1342
+ @error_code = args[:error_code] if args.key?(:error_code)
1343
+ @error_logs = args[:error_logs] if args.key?(:error_logs)
1344
+ @error_status = args[:error_status] if args.key?(:error_status)
1345
+ @labels = args[:labels] if args.key?(:labels)
1346
+ @logs = args[:logs] if args.key?(:logs)
1347
+ @name = args[:name] if args.key?(:name)
1348
+ @preview_artifacts = args[:preview_artifacts] if args.key?(:preview_artifacts)
1349
+ @preview_mode = args[:preview_mode] if args.key?(:preview_mode)
1350
+ @service_account = args[:service_account] if args.key?(:service_account)
1351
+ @state = args[:state] if args.key?(:state)
1352
+ @terraform_blueprint = args[:terraform_blueprint] if args.key?(:terraform_blueprint)
1353
+ @tf_errors = args[:tf_errors] if args.key?(:tf_errors)
1354
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1355
+ end
1356
+ end
1357
+
1358
+ # Artifacts created by preview.
1359
+ class PreviewArtifacts
1360
+ include Google::Apis::Core::Hashable
1361
+
1362
+ # Output only. Location of artifacts in Google Cloud Storage. Format: `gs://`
1363
+ # bucket`/`object``
1364
+ # Corresponds to the JSON property `artifacts`
1365
+ # @return [String]
1366
+ attr_accessor :artifacts
1367
+
1368
+ # Output only. Location of a blueprint copy and other content in Google Cloud
1369
+ # Storage. Format: `gs://`bucket`/`object``
1370
+ # Corresponds to the JSON property `content`
1371
+ # @return [String]
1372
+ attr_accessor :content
1373
+
1374
+ def initialize(**args)
1375
+ update!(**args)
1376
+ end
1377
+
1378
+ # Update properties of this object
1379
+ def update!(**args)
1380
+ @artifacts = args[:artifacts] if args.key?(:artifacts)
1381
+ @content = args[:content] if args.key?(:content)
1382
+ end
1383
+ end
1384
+
1385
+ # Ephemeral metadata content describing the state of a preview operation.
1386
+ class PreviewOperationMetadata
1387
+ include Google::Apis::Core::Hashable
1388
+
1389
+ # Output only. Cloud Build instance UUID associated with this preview.
1390
+ # Corresponds to the JSON property `build`
1391
+ # @return [String]
1392
+ attr_accessor :build
1393
+
1394
+ # Output only. Location of preview logs in `gs://`bucket`/`object`` format.
1395
+ # Corresponds to the JSON property `logs`
1396
+ # @return [String]
1397
+ attr_accessor :logs
1398
+
1399
+ # Artifacts created by preview.
1400
+ # Corresponds to the JSON property `previewArtifacts`
1401
+ # @return [Google::Apis::ConfigV1::PreviewArtifacts]
1402
+ attr_accessor :preview_artifacts
1403
+
1404
+ # The current step the preview operation is running.
1405
+ # Corresponds to the JSON property `step`
1406
+ # @return [String]
1407
+ attr_accessor :step
1408
+
1409
+ def initialize(**args)
1410
+ update!(**args)
1411
+ end
1412
+
1413
+ # Update properties of this object
1414
+ def update!(**args)
1415
+ @build = args[:build] if args.key?(:build)
1416
+ @logs = args[:logs] if args.key?(:logs)
1417
+ @preview_artifacts = args[:preview_artifacts] if args.key?(:preview_artifacts)
1418
+ @step = args[:step] if args.key?(:step)
1419
+ end
1420
+ end
1421
+
1422
+ # Contains a signed Cloud Storage URLs.
1423
+ class PreviewResult
1424
+ include Google::Apis::Core::Hashable
1425
+
1426
+ # Output only. Plan binary signed URL
1427
+ # Corresponds to the JSON property `binarySignedUri`
1428
+ # @return [String]
1429
+ attr_accessor :binary_signed_uri
1430
+
1431
+ # Output only. Plan JSON signed URL
1432
+ # Corresponds to the JSON property `jsonSignedUri`
1433
+ # @return [String]
1434
+ attr_accessor :json_signed_uri
1435
+
1436
+ def initialize(**args)
1437
+ update!(**args)
1438
+ end
1439
+
1440
+ # Update properties of this object
1441
+ def update!(**args)
1442
+ @binary_signed_uri = args[:binary_signed_uri] if args.key?(:binary_signed_uri)
1443
+ @json_signed_uri = args[:json_signed_uri] if args.key?(:json_signed_uri)
1444
+ end
1445
+ end
1446
+
1447
+ # Resource represents a Google Cloud Platform resource actuated by IM. Resources
1448
+ # are child resources of Revisions.
1449
+ class Resource
1450
+ include Google::Apis::Core::Hashable
1451
+
1452
+ # Output only. Map of Cloud Asset Inventory (CAI) type to CAI info (e.g. CAI ID).
1453
+ # CAI type format follows https://cloud.google.com/asset-inventory/docs/
1454
+ # supported-asset-types
1455
+ # Corresponds to the JSON property `caiAssets`
1456
+ # @return [Hash<String,Google::Apis::ConfigV1::ResourceCaiInfo>]
1457
+ attr_accessor :cai_assets
1458
+
1459
+ # Output only. Intent of the resource.
1460
+ # Corresponds to the JSON property `intent`
1461
+ # @return [String]
1462
+ attr_accessor :intent
1463
+
1464
+ # Output only. Resource name. Format: `projects/`project`/locations/`location`/
1465
+ # deployments/`deployment`/revisions/`revision`/resources/`resource``
1466
+ # Corresponds to the JSON property `name`
1467
+ # @return [String]
1468
+ attr_accessor :name
1469
+
1470
+ # Output only. Current state of the resource.
1471
+ # Corresponds to the JSON property `state`
1472
+ # @return [String]
1473
+ attr_accessor :state
1474
+
1475
+ # Terraform info of a Resource.
1476
+ # Corresponds to the JSON property `terraformInfo`
1477
+ # @return [Google::Apis::ConfigV1::ResourceTerraformInfo]
1478
+ attr_accessor :terraform_info
1479
+
1480
+ def initialize(**args)
1481
+ update!(**args)
1482
+ end
1483
+
1484
+ # Update properties of this object
1485
+ def update!(**args)
1486
+ @cai_assets = args[:cai_assets] if args.key?(:cai_assets)
1487
+ @intent = args[:intent] if args.key?(:intent)
1488
+ @name = args[:name] if args.key?(:name)
1489
+ @state = args[:state] if args.key?(:state)
1490
+ @terraform_info = args[:terraform_info] if args.key?(:terraform_info)
1491
+ end
1492
+ end
1493
+
1494
+ # CAI info of a Resource.
1495
+ class ResourceCaiInfo
1496
+ include Google::Apis::Core::Hashable
1497
+
1498
+ # CAI resource name in the format following https://cloud.google.com/apis/design/
1499
+ # resource_names#full_resource_name
1500
+ # Corresponds to the JSON property `fullResourceName`
1501
+ # @return [String]
1502
+ attr_accessor :full_resource_name
1503
+
1504
+ def initialize(**args)
1505
+ update!(**args)
1506
+ end
1507
+
1508
+ # Update properties of this object
1509
+ def update!(**args)
1510
+ @full_resource_name = args[:full_resource_name] if args.key?(:full_resource_name)
1511
+ end
1512
+ end
1513
+
1514
+ # Terraform info of a Resource.
1515
+ class ResourceTerraformInfo
1516
+ include Google::Apis::Core::Hashable
1517
+
1518
+ # TF resource address that uniquely identifies this resource within this
1519
+ # deployment.
1520
+ # Corresponds to the JSON property `address`
1521
+ # @return [String]
1522
+ attr_accessor :address
1523
+
1524
+ # ID attribute of the TF resource
1525
+ # Corresponds to the JSON property `id`
1526
+ # @return [String]
1527
+ attr_accessor :id
1528
+
1529
+ # TF resource type
1530
+ # Corresponds to the JSON property `type`
1531
+ # @return [String]
1532
+ attr_accessor :type
1533
+
1534
+ def initialize(**args)
1535
+ update!(**args)
1536
+ end
1537
+
1538
+ # Update properties of this object
1539
+ def update!(**args)
1540
+ @address = args[:address] if args.key?(:address)
1541
+ @id = args[:id] if args.key?(:id)
1542
+ @type = args[:type] if args.key?(:type)
1543
+ end
1544
+ end
1545
+
1546
+ # A child resource of a Deployment generated by a 'CreateDeployment' or '
1547
+ # UpdateDeployment' call. Each Revision contains metadata pertaining to a
1548
+ # snapshot of a particular Deployment.
1549
+ class Revision
1550
+ include Google::Apis::Core::Hashable
1551
+
1552
+ # Output only. The action which created this revision
1553
+ # Corresponds to the JSON property `action`
1554
+ # @return [String]
1555
+ attr_accessor :action
1556
+
1557
+ # Outputs and artifacts from applying a deployment.
1558
+ # Corresponds to the JSON property `applyResults`
1559
+ # @return [Google::Apis::ConfigV1::ApplyResults]
1560
+ attr_accessor :apply_results
1561
+
1562
+ # Output only. Cloud Build instance UUID associated with this revision.
1563
+ # Corresponds to the JSON property `build`
1564
+ # @return [String]
1565
+ attr_accessor :build
1566
+
1567
+ # Output only. Time when the revision was created.
1568
+ # Corresponds to the JSON property `createTime`
1569
+ # @return [String]
1570
+ attr_accessor :create_time
1571
+
1572
+ # Output only. Code describing any errors that may have occurred.
1573
+ # Corresponds to the JSON property `errorCode`
1574
+ # @return [String]
1575
+ attr_accessor :error_code
1576
+
1577
+ # Output only. Location of Terraform error logs in Google Cloud Storage. Format:
1578
+ # `gs://`bucket`/`object``.
1579
+ # Corresponds to the JSON property `errorLogs`
1580
+ # @return [String]
1581
+ attr_accessor :error_logs
1582
+
1583
+ # Output only. By default, Infra Manager will return a failure when Terraform
1584
+ # encounters a 409 code (resource conflict error) during actuation. If this flag
1585
+ # is set to true, Infra Manager will instead attempt to automatically import the
1586
+ # resource into the Terraform state (for supported resource types) and continue
1587
+ # actuation. Not all resource types are supported, refer to documentation.
1588
+ # Corresponds to the JSON property `importExistingResources`
1589
+ # @return [Boolean]
1590
+ attr_accessor :import_existing_resources
1591
+ alias_method :import_existing_resources?, :import_existing_resources
1592
+
1593
+ # Output only. Location of Revision operation logs in `gs://`bucket`/`object``
1594
+ # format.
1595
+ # Corresponds to the JSON property `logs`
1596
+ # @return [String]
1597
+ attr_accessor :logs
1598
+
1599
+ # Revision name. Format: `projects/`project`/locations/`location`/deployments/`
1600
+ # deployment`/ revisions/`revision``
1601
+ # Corresponds to the JSON property `name`
1602
+ # @return [String]
1603
+ attr_accessor :name
1604
+
1605
+ # Optional. Input to control quota checks for resources in terraform
1606
+ # configuration files. There are limited resources on which quota validation
1607
+ # applies.
1608
+ # Corresponds to the JSON property `quotaValidation`
1609
+ # @return [String]
1610
+ attr_accessor :quota_validation
1611
+
1612
+ # Output only. Cloud Storage path containing quota validation results. This
1613
+ # field is set when a user sets Deployment.quota_validation field to ENABLED or
1614
+ # ENFORCED. Format: `gs://`bucket`/`object``.
1615
+ # Corresponds to the JSON property `quotaValidationResults`
1616
+ # @return [String]
1617
+ attr_accessor :quota_validation_results
1618
+
1619
+ # Output only. User-specified Service Account (SA) to be used as credential to
1620
+ # manage resources. Format: `projects/`projectID`/serviceAccounts/`
1621
+ # serviceAccount``
1622
+ # Corresponds to the JSON property `serviceAccount`
1623
+ # @return [String]
1624
+ attr_accessor :service_account
1625
+
1626
+ # Output only. Current state of the revision.
1627
+ # Corresponds to the JSON property `state`
1628
+ # @return [String]
1629
+ attr_accessor :state
1630
+
1631
+ # Output only. Additional info regarding the current state.
1632
+ # Corresponds to the JSON property `stateDetail`
1633
+ # @return [String]
1634
+ attr_accessor :state_detail
1635
+
1636
+ # TerraformBlueprint describes the source of a Terraform root module which
1637
+ # describes the resources and configs to be deployed.
1638
+ # Corresponds to the JSON property `terraformBlueprint`
1639
+ # @return [Google::Apis::ConfigV1::TerraformBlueprint]
1640
+ attr_accessor :terraform_blueprint
1641
+
1642
+ # Output only. Errors encountered when creating or updating this deployment.
1643
+ # Errors are truncated to 10 entries, see `delete_results` and `error_logs` for
1644
+ # full details.
1645
+ # Corresponds to the JSON property `tfErrors`
1646
+ # @return [Array<Google::Apis::ConfigV1::TerraformError>]
1647
+ attr_accessor :tf_errors
1648
+
1649
+ # Output only. The version of Terraform used to create the Revision. It is in
1650
+ # the format of "Major.Minor.Patch", for example, "1.3.10".
1651
+ # Corresponds to the JSON property `tfVersion`
1652
+ # @return [String]
1653
+ attr_accessor :tf_version
1654
+
1655
+ # Output only. The user-specified Terraform version constraint. Example: "=1.3.
1656
+ # 10".
1657
+ # Corresponds to the JSON property `tfVersionConstraint`
1658
+ # @return [String]
1659
+ attr_accessor :tf_version_constraint
1660
+
1661
+ # Output only. Time when the revision was last modified.
1662
+ # Corresponds to the JSON property `updateTime`
1663
+ # @return [String]
1664
+ attr_accessor :update_time
1665
+
1666
+ # Output only. The user-specified Cloud Build worker pool resource in which the
1667
+ # Cloud Build job will execute. Format: `projects/`project`/locations/`location`/
1668
+ # workerPools/`workerPoolId``. If this field is unspecified, the default Cloud
1669
+ # Build worker pool will be used.
1670
+ # Corresponds to the JSON property `workerPool`
1671
+ # @return [String]
1672
+ attr_accessor :worker_pool
1673
+
1674
+ def initialize(**args)
1675
+ update!(**args)
1676
+ end
1677
+
1678
+ # Update properties of this object
1679
+ def update!(**args)
1680
+ @action = args[:action] if args.key?(:action)
1681
+ @apply_results = args[:apply_results] if args.key?(:apply_results)
1682
+ @build = args[:build] if args.key?(:build)
1683
+ @create_time = args[:create_time] if args.key?(:create_time)
1684
+ @error_code = args[:error_code] if args.key?(:error_code)
1685
+ @error_logs = args[:error_logs] if args.key?(:error_logs)
1686
+ @import_existing_resources = args[:import_existing_resources] if args.key?(:import_existing_resources)
1687
+ @logs = args[:logs] if args.key?(:logs)
1688
+ @name = args[:name] if args.key?(:name)
1689
+ @quota_validation = args[:quota_validation] if args.key?(:quota_validation)
1690
+ @quota_validation_results = args[:quota_validation_results] if args.key?(:quota_validation_results)
1691
+ @service_account = args[:service_account] if args.key?(:service_account)
1692
+ @state = args[:state] if args.key?(:state)
1693
+ @state_detail = args[:state_detail] if args.key?(:state_detail)
1694
+ @terraform_blueprint = args[:terraform_blueprint] if args.key?(:terraform_blueprint)
1695
+ @tf_errors = args[:tf_errors] if args.key?(:tf_errors)
1696
+ @tf_version = args[:tf_version] if args.key?(:tf_version)
1697
+ @tf_version_constraint = args[:tf_version_constraint] if args.key?(:tf_version_constraint)
1698
+ @update_time = args[:update_time] if args.key?(:update_time)
1699
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1700
+ end
1701
+ end
1702
+
1703
+ # Request message for `SetIamPolicy` method.
1704
+ class SetIamPolicyRequest
1705
+ include Google::Apis::Core::Hashable
1706
+
1707
+ # An Identity and Access Management (IAM) policy, which specifies access
1708
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1709
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
1710
+ # Principals can be user accounts, service accounts, Google groups, and domains (
1711
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
1712
+ # an IAM predefined role or a user-created custom role. For some types of Google
1713
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
1714
+ # logical expression that allows access to a resource only if the expression
1715
+ # evaluates to `true`. A condition can add constraints based on attributes of
1716
+ # the request, the resource, or both. To learn which resources support
1717
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
1718
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ``` ` "
1719
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
1720
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
1721
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
1722
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
1723
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
1724
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
1725
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` ``` **YAML
1726
+ # example:** ``` bindings: - members: - user:mike@example.com - group:admins@
1727
+ # example.com - domain:google.com - serviceAccount:my-project-id@appspot.
1728
+ # gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: -
1729
+ # user:eve@example.com role: roles/resourcemanager.organizationViewer condition:
1730
+ # title: expirable access description: Does not grant access after Sep 2020
1731
+ # expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag:
1732
+ # BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the
1733
+ # [IAM documentation](https://cloud.google.com/iam/docs/).
1734
+ # Corresponds to the JSON property `policy`
1735
+ # @return [Google::Apis::ConfigV1::Policy]
1736
+ attr_accessor :policy
1737
+
1738
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
1739
+ # the fields in the mask will be modified. If no mask is provided, the following
1740
+ # default mask is used: `paths: "bindings, etag"`
1741
+ # Corresponds to the JSON property `updateMask`
1742
+ # @return [String]
1743
+ attr_accessor :update_mask
1744
+
1745
+ def initialize(**args)
1746
+ update!(**args)
1747
+ end
1748
+
1749
+ # Update properties of this object
1750
+ def update!(**args)
1751
+ @policy = args[:policy] if args.key?(:policy)
1752
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1753
+ end
1754
+ end
1755
+
1756
+ # Contains info about a Terraform state file
1757
+ class Statefile
1758
+ include Google::Apis::Core::Hashable
1759
+
1760
+ # Output only. Cloud Storage signed URI used for downloading or uploading the
1761
+ # state file.
1762
+ # Corresponds to the JSON property `signedUri`
1763
+ # @return [String]
1764
+ attr_accessor :signed_uri
1765
+
1766
+ def initialize(**args)
1767
+ update!(**args)
1768
+ end
1769
+
1770
+ # Update properties of this object
1771
+ def update!(**args)
1772
+ @signed_uri = args[:signed_uri] if args.key?(:signed_uri)
1773
+ end
1774
+ end
1775
+
1776
+ # The `Status` type defines a logical error model that is suitable for different
1777
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1778
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1779
+ # data: error code, error message, and error details. You can find out more
1780
+ # about this error model and how to work with it in the [API Design Guide](https:
1781
+ # //cloud.google.com/apis/design/errors).
1782
+ class Status
1783
+ include Google::Apis::Core::Hashable
1784
+
1785
+ # The status code, which should be an enum value of google.rpc.Code.
1786
+ # Corresponds to the JSON property `code`
1787
+ # @return [Fixnum]
1788
+ attr_accessor :code
1789
+
1790
+ # A list of messages that carry the error details. There is a common set of
1791
+ # message types for APIs to use.
1792
+ # Corresponds to the JSON property `details`
1793
+ # @return [Array<Hash<String,Object>>]
1794
+ attr_accessor :details
1795
+
1796
+ # A developer-facing error message, which should be in English. Any user-facing
1797
+ # error message should be localized and sent in the google.rpc.Status.details
1798
+ # field, or localized by the client.
1799
+ # Corresponds to the JSON property `message`
1800
+ # @return [String]
1801
+ attr_accessor :message
1802
+
1803
+ def initialize(**args)
1804
+ update!(**args)
1805
+ end
1806
+
1807
+ # Update properties of this object
1808
+ def update!(**args)
1809
+ @code = args[:code] if args.key?(:code)
1810
+ @details = args[:details] if args.key?(:details)
1811
+ @message = args[:message] if args.key?(:message)
1812
+ end
1813
+ end
1814
+
1815
+ # TerraformBlueprint describes the source of a Terraform root module which
1816
+ # describes the resources and configs to be deployed.
1817
+ class TerraformBlueprint
1818
+ include Google::Apis::Core::Hashable
1819
+
1820
+ # Required. URI of an object in Google Cloud Storage. Format: `gs://`bucket`/`
1821
+ # object`` URI may also specify an object version for zipped objects. Format: `
1822
+ # gs://`bucket`/`object`#`version``
1823
+ # Corresponds to the JSON property `gcsSource`
1824
+ # @return [String]
1825
+ attr_accessor :gcs_source
1826
+
1827
+ # A set of files in a Git repository.
1828
+ # Corresponds to the JSON property `gitSource`
1829
+ # @return [Google::Apis::ConfigV1::GitSource]
1830
+ attr_accessor :git_source
1831
+
1832
+ # Input variable values for the Terraform blueprint.
1833
+ # Corresponds to the JSON property `inputValues`
1834
+ # @return [Hash<String,Google::Apis::ConfigV1::TerraformVariable>]
1835
+ attr_accessor :input_values
1836
+
1837
+ def initialize(**args)
1838
+ update!(**args)
1839
+ end
1840
+
1841
+ # Update properties of this object
1842
+ def update!(**args)
1843
+ @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
1844
+ @git_source = args[:git_source] if args.key?(:git_source)
1845
+ @input_values = args[:input_values] if args.key?(:input_values)
1846
+ end
1847
+ end
1848
+
1849
+ # Errors encountered during actuation using Terraform
1850
+ class TerraformError
1851
+ include Google::Apis::Core::Hashable
1852
+
1853
+ # The `Status` type defines a logical error model that is suitable for different
1854
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1855
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1856
+ # data: error code, error message, and error details. You can find out more
1857
+ # about this error model and how to work with it in the [API Design Guide](https:
1858
+ # //cloud.google.com/apis/design/errors).
1859
+ # Corresponds to the JSON property `error`
1860
+ # @return [Google::Apis::ConfigV1::Status]
1861
+ attr_accessor :error
1862
+
1863
+ # A human-readable error description.
1864
+ # Corresponds to the JSON property `errorDescription`
1865
+ # @return [String]
1866
+ attr_accessor :error_description
1867
+
1868
+ # HTTP response code returned from Google Cloud Platform APIs when Terraform
1869
+ # fails to provision the resource. If unset or 0, no HTTP response code was
1870
+ # returned by Terraform.
1871
+ # Corresponds to the JSON property `httpResponseCode`
1872
+ # @return [Fixnum]
1873
+ attr_accessor :http_response_code
1874
+
1875
+ # Address of the resource associated with the error, e.g. `
1876
+ # google_compute_network.vpc_network`.
1877
+ # Corresponds to the JSON property `resourceAddress`
1878
+ # @return [String]
1879
+ attr_accessor :resource_address
1880
+
1881
+ def initialize(**args)
1882
+ update!(**args)
1883
+ end
1884
+
1885
+ # Update properties of this object
1886
+ def update!(**args)
1887
+ @error = args[:error] if args.key?(:error)
1888
+ @error_description = args[:error_description] if args.key?(:error_description)
1889
+ @http_response_code = args[:http_response_code] if args.key?(:http_response_code)
1890
+ @resource_address = args[:resource_address] if args.key?(:resource_address)
1891
+ end
1892
+ end
1893
+
1894
+ # Describes a Terraform output.
1895
+ class TerraformOutput
1896
+ include Google::Apis::Core::Hashable
1897
+
1898
+ # Identifies whether Terraform has set this output as a potential sensitive
1899
+ # value.
1900
+ # Corresponds to the JSON property `sensitive`
1901
+ # @return [Boolean]
1902
+ attr_accessor :sensitive
1903
+ alias_method :sensitive?, :sensitive
1904
+
1905
+ # Value of output.
1906
+ # Corresponds to the JSON property `value`
1907
+ # @return [Object]
1908
+ attr_accessor :value
1909
+
1910
+ def initialize(**args)
1911
+ update!(**args)
1912
+ end
1913
+
1914
+ # Update properties of this object
1915
+ def update!(**args)
1916
+ @sensitive = args[:sensitive] if args.key?(:sensitive)
1917
+ @value = args[:value] if args.key?(:value)
1918
+ end
1919
+ end
1920
+
1921
+ # A Terraform input variable.
1922
+ class TerraformVariable
1923
+ include Google::Apis::Core::Hashable
1924
+
1925
+ # Input variable value.
1926
+ # Corresponds to the JSON property `inputValue`
1927
+ # @return [Object]
1928
+ attr_accessor :input_value
1929
+
1930
+ def initialize(**args)
1931
+ update!(**args)
1932
+ end
1933
+
1934
+ # Update properties of this object
1935
+ def update!(**args)
1936
+ @input_value = args[:input_value] if args.key?(:input_value)
1937
+ end
1938
+ end
1939
+
1940
+ # A TerraformVersion represents the support state the corresponding Terraform
1941
+ # version.
1942
+ class TerraformVersion
1943
+ include Google::Apis::Core::Hashable
1944
+
1945
+ # Output only. When the version is deprecated.
1946
+ # Corresponds to the JSON property `deprecateTime`
1947
+ # @return [String]
1948
+ attr_accessor :deprecate_time
1949
+
1950
+ # Identifier. The version name is in the format: 'projects/`project_id`/
1951
+ # locations/`location`/terraformVersions/`terraform_version`'.
1952
+ # Corresponds to the JSON property `name`
1953
+ # @return [String]
1954
+ attr_accessor :name
1955
+
1956
+ # Output only. When the version is obsolete.
1957
+ # Corresponds to the JSON property `obsoleteTime`
1958
+ # @return [String]
1959
+ attr_accessor :obsolete_time
1960
+
1961
+ # Output only. The state of the version, ACTIVE, DEPRECATED or OBSOLETE.
1962
+ # Corresponds to the JSON property `state`
1963
+ # @return [String]
1964
+ attr_accessor :state
1965
+
1966
+ # Output only. When the version is supported.
1967
+ # Corresponds to the JSON property `supportTime`
1968
+ # @return [String]
1969
+ attr_accessor :support_time
1970
+
1971
+ def initialize(**args)
1972
+ update!(**args)
1973
+ end
1974
+
1975
+ # Update properties of this object
1976
+ def update!(**args)
1977
+ @deprecate_time = args[:deprecate_time] if args.key?(:deprecate_time)
1978
+ @name = args[:name] if args.key?(:name)
1979
+ @obsolete_time = args[:obsolete_time] if args.key?(:obsolete_time)
1980
+ @state = args[:state] if args.key?(:state)
1981
+ @support_time = args[:support_time] if args.key?(:support_time)
1982
+ end
1983
+ end
1984
+
1985
+ # Request message for `TestIamPermissions` method.
1986
+ class TestIamPermissionsRequest
1987
+ include Google::Apis::Core::Hashable
1988
+
1989
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1990
+ # (such as `*` or `storage.*`) are not allowed. For more information see [IAM
1991
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1992
+ # Corresponds to the JSON property `permissions`
1993
+ # @return [Array<String>]
1994
+ attr_accessor :permissions
1995
+
1996
+ def initialize(**args)
1997
+ update!(**args)
1998
+ end
1999
+
2000
+ # Update properties of this object
2001
+ def update!(**args)
2002
+ @permissions = args[:permissions] if args.key?(:permissions)
2003
+ end
2004
+ end
2005
+
2006
+ # Response message for `TestIamPermissions` method.
2007
+ class TestIamPermissionsResponse
2008
+ include Google::Apis::Core::Hashable
2009
+
2010
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
2011
+ # Corresponds to the JSON property `permissions`
2012
+ # @return [Array<String>]
2013
+ attr_accessor :permissions
2014
+
2015
+ def initialize(**args)
2016
+ update!(**args)
2017
+ end
2018
+
2019
+ # Update properties of this object
2020
+ def update!(**args)
2021
+ @permissions = args[:permissions] if args.key?(:permissions)
2022
+ end
2023
+ end
2024
+
2025
+ # A request to unlock a state file passed to a 'UnlockDeployment' call.
2026
+ class UnlockDeploymentRequest
2027
+ include Google::Apis::Core::Hashable
2028
+
2029
+ # Required. Lock ID of the lock file to be unlocked.
2030
+ # Corresponds to the JSON property `lockId`
2031
+ # @return [Fixnum]
2032
+ attr_accessor :lock_id
2033
+
2034
+ def initialize(**args)
2035
+ update!(**args)
2036
+ end
2037
+
2038
+ # Update properties of this object
2039
+ def update!(**args)
2040
+ @lock_id = args[:lock_id] if args.key?(:lock_id)
2041
+ end
2042
+ end
2043
+ end
2044
+ end
2045
+ end