google-apis-saasservicemgmt_v1beta1 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,1967 @@
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 SaasservicemgmtV1beta1
24
+
25
+ # Represents the aggregation of a set of population of like records by a certain
26
+ # group. For example, a collection of unit counts can be aggregated and grouped
27
+ # by their state.
28
+ class Aggregate
29
+ include Google::Apis::Core::Hashable
30
+
31
+ # Required. Number of records in the group.
32
+ # Corresponds to the JSON property `count`
33
+ # @return [Fixnum]
34
+ attr_accessor :count
35
+
36
+ # Required. Group by which to aggregate.
37
+ # Corresponds to the JSON property `group`
38
+ # @return [String]
39
+ attr_accessor :group
40
+
41
+ def initialize(**args)
42
+ update!(**args)
43
+ end
44
+
45
+ # Update properties of this object
46
+ def update!(**args)
47
+ @count = args[:count] if args.key?(:count)
48
+ @group = args[:group] if args.key?(:group)
49
+ end
50
+ end
51
+
52
+ # Blueprints are OCI Images that contain all of the artifacts needed to
53
+ # provision a unit. Metadata such as, type of the engine used to actuate the
54
+ # blueprint (e.g. terraform, helm etc) and version will come from the image
55
+ # manifest. If the hostname is omitted, it will be assumed to be the regional
56
+ # path to Artifact Registry (eg. us-east1-docker.pkg.dev).
57
+ class Blueprint
58
+ include Google::Apis::Core::Hashable
59
+
60
+ # Output only. Type of the engine used to actuate the blueprint. e.g. terraform,
61
+ # helm etc.
62
+ # Corresponds to the JSON property `engine`
63
+ # @return [String]
64
+ attr_accessor :engine
65
+
66
+ # Optional. Immutable. URI to a blueprint used by the Unit (required unless
67
+ # unitKind or release is set).
68
+ # Corresponds to the JSON property `package`
69
+ # @return [String]
70
+ attr_accessor :package
71
+
72
+ # Output only. Version metadata if present on the blueprint.
73
+ # Corresponds to the JSON property `version`
74
+ # @return [String]
75
+ attr_accessor :version
76
+
77
+ def initialize(**args)
78
+ update!(**args)
79
+ end
80
+
81
+ # Update properties of this object
82
+ def update!(**args)
83
+ @engine = args[:engine] if args.key?(:engine)
84
+ @package = args[:package] if args.key?(:package)
85
+ @version = args[:version] if args.key?(:version)
86
+ end
87
+ end
88
+
89
+ # Dependency represent a single dependency with another unit kind by alias.
90
+ class Dependency
91
+ include Google::Apis::Core::Hashable
92
+
93
+ # Required. An alias for the dependency. Used for input variable mapping.
94
+ # Corresponds to the JSON property `alias`
95
+ # @return [String]
96
+ attr_accessor :alias
97
+
98
+ # Required. Immutable. The unit kind of the dependency.
99
+ # Corresponds to the JSON property `unitKind`
100
+ # @return [String]
101
+ attr_accessor :unit_kind
102
+
103
+ def initialize(**args)
104
+ update!(**args)
105
+ end
106
+
107
+ # Update properties of this object
108
+ def update!(**args)
109
+ @alias = args[:alias] if args.key?(:alias)
110
+ @unit_kind = args[:unit_kind] if args.key?(:unit_kind)
111
+ end
112
+ end
113
+
114
+ # Deprovision is the unit operation that deprovision the underlying resources
115
+ # represented by a Unit. Can only execute if the Unit is currently provisioned.
116
+ class Deprovision
117
+ include Google::Apis::Core::Hashable
118
+
119
+ def initialize(**args)
120
+ update!(**args)
121
+ end
122
+
123
+ # Update properties of this object
124
+ def update!(**args)
125
+ end
126
+ end
127
+
128
+ # A generic empty message that you can re-use to avoid defining duplicated empty
129
+ # messages in your APIs. A typical example is to use it as the request or the
130
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
131
+ # protobuf.Empty) returns (google.protobuf.Empty); `
132
+ class Empty
133
+ include Google::Apis::Core::Hashable
134
+
135
+ def initialize(**args)
136
+ update!(**args)
137
+ end
138
+
139
+ # Update properties of this object
140
+ def update!(**args)
141
+ end
142
+ end
143
+
144
+ # The configuration for error budget. If the number of failed units exceeds max(
145
+ # allowed_count, allowed_ratio * total_units), the rollout will be paused.
146
+ class ErrorBudget
147
+ include Google::Apis::Core::Hashable
148
+
149
+ # Optional. The maximum number of failed units allowed in a location without
150
+ # pausing the rollout.
151
+ # Corresponds to the JSON property `allowedCount`
152
+ # @return [Fixnum]
153
+ attr_accessor :allowed_count
154
+
155
+ # Optional. The maximum percentage of units allowed to fail (0, 100] within a
156
+ # location without pausing the rollout.
157
+ # Corresponds to the JSON property `allowedPercentage`
158
+ # @return [Fixnum]
159
+ attr_accessor :allowed_percentage
160
+
161
+ def initialize(**args)
162
+ update!(**args)
163
+ end
164
+
165
+ # Update properties of this object
166
+ def update!(**args)
167
+ @allowed_count = args[:allowed_count] if args.key?(:allowed_count)
168
+ @allowed_percentage = args[:allowed_percentage] if args.key?(:allowed_percentage)
169
+ end
170
+ end
171
+
172
+ # Output variables whose values will be passed on to dependencies
173
+ class FromMapping
174
+ include Google::Apis::Core::Hashable
175
+
176
+ # Required. Alias of the dependency that the outputVariable will pass its value
177
+ # to
178
+ # Corresponds to the JSON property `dependency`
179
+ # @return [String]
180
+ attr_accessor :dependency
181
+
182
+ # Required. Name of the outputVariable on the dependency
183
+ # Corresponds to the JSON property `outputVariable`
184
+ # @return [String]
185
+ attr_accessor :output_variable
186
+
187
+ def initialize(**args)
188
+ update!(**args)
189
+ end
190
+
191
+ # Update properties of this object
192
+ def update!(**args)
193
+ @dependency = args[:dependency] if args.key?(:dependency)
194
+ @output_variable = args[:output_variable] if args.key?(:output_variable)
195
+ end
196
+ end
197
+
198
+ # A resource that represents a Google Cloud location.
199
+ class GoogleCloudLocationLocation
200
+ include Google::Apis::Core::Hashable
201
+
202
+ # The friendly name for this location, typically a nearby city name. For example,
203
+ # "Tokyo".
204
+ # Corresponds to the JSON property `displayName`
205
+ # @return [String]
206
+ attr_accessor :display_name
207
+
208
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
209
+ # region": "us-east1"`
210
+ # Corresponds to the JSON property `labels`
211
+ # @return [Hash<String,String>]
212
+ attr_accessor :labels
213
+
214
+ # The canonical id for this location. For example: `"us-east1"`.
215
+ # Corresponds to the JSON property `locationId`
216
+ # @return [String]
217
+ attr_accessor :location_id
218
+
219
+ # Service-specific metadata. For example the available capacity at the given
220
+ # location.
221
+ # Corresponds to the JSON property `metadata`
222
+ # @return [Hash<String,Object>]
223
+ attr_accessor :metadata
224
+
225
+ # Resource name for the location, which may vary between implementations. For
226
+ # example: `"projects/example-project/locations/us-east1"`
227
+ # Corresponds to the JSON property `name`
228
+ # @return [String]
229
+ attr_accessor :name
230
+
231
+ def initialize(**args)
232
+ update!(**args)
233
+ end
234
+
235
+ # Update properties of this object
236
+ def update!(**args)
237
+ @display_name = args[:display_name] if args.key?(:display_name)
238
+ @labels = args[:labels] if args.key?(:labels)
239
+ @location_id = args[:location_id] if args.key?(:location_id)
240
+ @metadata = args[:metadata] if args.key?(:metadata)
241
+ @name = args[:name] if args.key?(:name)
242
+ end
243
+ end
244
+
245
+ # The response message for Locations.ListLocations.
246
+ class ListLocationsResponse
247
+ include Google::Apis::Core::Hashable
248
+
249
+ # A list of locations that matches the specified filter in the request.
250
+ # Corresponds to the JSON property `locations`
251
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::GoogleCloudLocationLocation>]
252
+ attr_accessor :locations
253
+
254
+ # The standard List next-page token.
255
+ # Corresponds to the JSON property `nextPageToken`
256
+ # @return [String]
257
+ attr_accessor :next_page_token
258
+
259
+ def initialize(**args)
260
+ update!(**args)
261
+ end
262
+
263
+ # Update properties of this object
264
+ def update!(**args)
265
+ @locations = args[:locations] if args.key?(:locations)
266
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
267
+ end
268
+ end
269
+
270
+ # The response structure for the ListReleases method.
271
+ class ListReleasesResponse
272
+ include Google::Apis::Core::Hashable
273
+
274
+ # If present, the next page token can be provided to a subsequent ListReleases
275
+ # call to list the next page. If empty, there are no more pages.
276
+ # Corresponds to the JSON property `nextPageToken`
277
+ # @return [String]
278
+ attr_accessor :next_page_token
279
+
280
+ # The resulting releases.
281
+ # Corresponds to the JSON property `releases`
282
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Release>]
283
+ attr_accessor :releases
284
+
285
+ # Locations that could not be reached.
286
+ # Corresponds to the JSON property `unreachable`
287
+ # @return [Array<String>]
288
+ attr_accessor :unreachable
289
+
290
+ def initialize(**args)
291
+ update!(**args)
292
+ end
293
+
294
+ # Update properties of this object
295
+ def update!(**args)
296
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
297
+ @releases = args[:releases] if args.key?(:releases)
298
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
299
+ end
300
+ end
301
+
302
+ # The response structure for the ListRolloutKinds method.
303
+ class ListRolloutKindsResponse
304
+ include Google::Apis::Core::Hashable
305
+
306
+ # If present, the next page token can be provided to a subsequent
307
+ # ListRolloutKinds call to list the next page. If empty, there are no more pages.
308
+ # Corresponds to the JSON property `nextPageToken`
309
+ # @return [String]
310
+ attr_accessor :next_page_token
311
+
312
+ # The resulting rollout kinds.
313
+ # Corresponds to the JSON property `rolloutKinds`
314
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::RolloutKind>]
315
+ attr_accessor :rollout_kinds
316
+
317
+ # Locations that could not be reached.
318
+ # Corresponds to the JSON property `unreachable`
319
+ # @return [Array<String>]
320
+ attr_accessor :unreachable
321
+
322
+ def initialize(**args)
323
+ update!(**args)
324
+ end
325
+
326
+ # Update properties of this object
327
+ def update!(**args)
328
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
329
+ @rollout_kinds = args[:rollout_kinds] if args.key?(:rollout_kinds)
330
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
331
+ end
332
+ end
333
+
334
+ # The response structure for the ListRollouts method.
335
+ class ListRolloutsResponse
336
+ include Google::Apis::Core::Hashable
337
+
338
+ # If present, the next page token can be provided to a subsequent ListRollouts
339
+ # call to list the next page. If empty, there are no more pages.
340
+ # Corresponds to the JSON property `nextPageToken`
341
+ # @return [String]
342
+ attr_accessor :next_page_token
343
+
344
+ # The resulting rollouts.
345
+ # Corresponds to the JSON property `rollouts`
346
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Rollout>]
347
+ attr_accessor :rollouts
348
+
349
+ # Locations that could not be reached.
350
+ # Corresponds to the JSON property `unreachable`
351
+ # @return [Array<String>]
352
+ attr_accessor :unreachable
353
+
354
+ def initialize(**args)
355
+ update!(**args)
356
+ end
357
+
358
+ # Update properties of this object
359
+ def update!(**args)
360
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
361
+ @rollouts = args[:rollouts] if args.key?(:rollouts)
362
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
363
+ end
364
+ end
365
+
366
+ # The response structure for the ListSaas method.
367
+ class ListSaasResponse
368
+ include Google::Apis::Core::Hashable
369
+
370
+ # If present, the next page token can be provided to a subsequent ListSaas call
371
+ # to list the next page. If empty, there are no more pages.
372
+ # Corresponds to the JSON property `nextPageToken`
373
+ # @return [String]
374
+ attr_accessor :next_page_token
375
+
376
+ # The resulting saas.
377
+ # Corresponds to the JSON property `saas`
378
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Saas>]
379
+ attr_accessor :saas
380
+
381
+ # Locations that could not be reached.
382
+ # Corresponds to the JSON property `unreachable`
383
+ # @return [Array<String>]
384
+ attr_accessor :unreachable
385
+
386
+ def initialize(**args)
387
+ update!(**args)
388
+ end
389
+
390
+ # Update properties of this object
391
+ def update!(**args)
392
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
393
+ @saas = args[:saas] if args.key?(:saas)
394
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
395
+ end
396
+ end
397
+
398
+ # The response structure for the ListTenants method.
399
+ class ListTenantsResponse
400
+ include Google::Apis::Core::Hashable
401
+
402
+ # If present, the next page token can be provided to a subsequent ListTenants
403
+ # call to list the next page. If empty, there are no more pages.
404
+ # Corresponds to the JSON property `nextPageToken`
405
+ # @return [String]
406
+ attr_accessor :next_page_token
407
+
408
+ # The resulting tenants.
409
+ # Corresponds to the JSON property `tenants`
410
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Tenant>]
411
+ attr_accessor :tenants
412
+
413
+ # Locations that could not be reached.
414
+ # Corresponds to the JSON property `unreachable`
415
+ # @return [Array<String>]
416
+ attr_accessor :unreachable
417
+
418
+ def initialize(**args)
419
+ update!(**args)
420
+ end
421
+
422
+ # Update properties of this object
423
+ def update!(**args)
424
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
425
+ @tenants = args[:tenants] if args.key?(:tenants)
426
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
427
+ end
428
+ end
429
+
430
+ # The response structure for the ListUnitKinds method.
431
+ class ListUnitKindsResponse
432
+ include Google::Apis::Core::Hashable
433
+
434
+ # If present, the next page token can be provided to a subsequent ListUnitKinds
435
+ # call to list the next page. If empty, there are no more pages.
436
+ # Corresponds to the JSON property `nextPageToken`
437
+ # @return [String]
438
+ attr_accessor :next_page_token
439
+
440
+ # The resulting unit kinds.
441
+ # Corresponds to the JSON property `unitKinds`
442
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitKind>]
443
+ attr_accessor :unit_kinds
444
+
445
+ # Locations that could not be reached.
446
+ # Corresponds to the JSON property `unreachable`
447
+ # @return [Array<String>]
448
+ attr_accessor :unreachable
449
+
450
+ def initialize(**args)
451
+ update!(**args)
452
+ end
453
+
454
+ # Update properties of this object
455
+ def update!(**args)
456
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
457
+ @unit_kinds = args[:unit_kinds] if args.key?(:unit_kinds)
458
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
459
+ end
460
+ end
461
+
462
+ # The response structure for the ListUnitOperations method.
463
+ class ListUnitOperationsResponse
464
+ include Google::Apis::Core::Hashable
465
+
466
+ # If present, the next page token can be provided to a subsequent
467
+ # ListUnitOperations call to list the next page. If empty, there are no more
468
+ # pages.
469
+ # Corresponds to the JSON property `nextPageToken`
470
+ # @return [String]
471
+ attr_accessor :next_page_token
472
+
473
+ # The resulting unit operations.
474
+ # Corresponds to the JSON property `unitOperations`
475
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitOperation>]
476
+ attr_accessor :unit_operations
477
+
478
+ # Locations that could not be reached.
479
+ # Corresponds to the JSON property `unreachable`
480
+ # @return [Array<String>]
481
+ attr_accessor :unreachable
482
+
483
+ def initialize(**args)
484
+ update!(**args)
485
+ end
486
+
487
+ # Update properties of this object
488
+ def update!(**args)
489
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
490
+ @unit_operations = args[:unit_operations] if args.key?(:unit_operations)
491
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
492
+ end
493
+ end
494
+
495
+ # The response structure for the ListUnits method.
496
+ class ListUnitsResponse
497
+ include Google::Apis::Core::Hashable
498
+
499
+ # If present, the next page token can be provided to a subsequent ListUnits call
500
+ # to list the next page. If empty, there are no more pages.
501
+ # Corresponds to the JSON property `nextPageToken`
502
+ # @return [String]
503
+ attr_accessor :next_page_token
504
+
505
+ # The resulting units.
506
+ # Corresponds to the JSON property `units`
507
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Unit>]
508
+ attr_accessor :units
509
+
510
+ # Locations that could not be reached.
511
+ # Corresponds to the JSON property `unreachable`
512
+ # @return [Array<String>]
513
+ attr_accessor :unreachable
514
+
515
+ def initialize(**args)
516
+ update!(**args)
517
+ end
518
+
519
+ # Update properties of this object
520
+ def update!(**args)
521
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
522
+ @units = args[:units] if args.key?(:units)
523
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
524
+ end
525
+ end
526
+
527
+ # Location information that the service is available in.
528
+ class Location
529
+ include Google::Apis::Core::Hashable
530
+
531
+ # Optional. Name of location.
532
+ # Corresponds to the JSON property `name`
533
+ # @return [String]
534
+ attr_accessor :name
535
+
536
+ def initialize(**args)
537
+ update!(**args)
538
+ end
539
+
540
+ # Update properties of this object
541
+ def update!(**args)
542
+ @name = args[:name] if args.key?(:name)
543
+ end
544
+ end
545
+
546
+ # Captures requested directives for performing future maintenance on the unit.
547
+ # This includes a request for the unit to skip maintenance for a period of time
548
+ # and remain pinned to its current release as well as controls for postponing
549
+ # maintenance scheduled in future.
550
+ class MaintenanceSettings
551
+ include Google::Apis::Core::Hashable
552
+
553
+ # Optional. If present, it fixes the release on the unit until the given time; i.
554
+ # e. changes to the release field will be rejected. Rollouts should and will
555
+ # also respect this by not requesting an upgrade in the first place.
556
+ # Corresponds to the JSON property `pinnedUntilTime`
557
+ # @return [String]
558
+ attr_accessor :pinned_until_time
559
+
560
+ def initialize(**args)
561
+ update!(**args)
562
+ end
563
+
564
+ # Update properties of this object
565
+ def update!(**args)
566
+ @pinned_until_time = args[:pinned_until_time] if args.key?(:pinned_until_time)
567
+ end
568
+ end
569
+
570
+ # Provision is the unit operation that provision the underlying resources
571
+ # represented by a Unit. Can only execute if the Unit is not currently
572
+ # provisioned.
573
+ class Provision
574
+ include Google::Apis::Core::Hashable
575
+
576
+ # Optional. Set of input variables. Maximum 100. (optional)
577
+ # Corresponds to the JSON property `inputVariables`
578
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
579
+ attr_accessor :input_variables
580
+
581
+ # Optional. Reference to the Release object to use for the Unit. (optional).
582
+ # Corresponds to the JSON property `release`
583
+ # @return [String]
584
+ attr_accessor :release
585
+
586
+ def initialize(**args)
587
+ update!(**args)
588
+ end
589
+
590
+ # Update properties of this object
591
+ def update!(**args)
592
+ @input_variables = args[:input_variables] if args.key?(:input_variables)
593
+ @release = args[:release] if args.key?(:release)
594
+ end
595
+ end
596
+
597
+ # A new version to be propagated and deployed to units. This includes pointers
598
+ # to packaged blueprints for actuation (e.g Helm or Terraform configuration
599
+ # packages) via artifact registry.
600
+ class Release
601
+ include Google::Apis::Core::Hashable
602
+
603
+ # Optional. Annotations is an unstructured key-value map stored with a resource
604
+ # that may be set by external tools to store and retrieve arbitrary metadata.
605
+ # They are not queryable and should be preserved when modifying objects. More
606
+ # info: https://kubernetes.io/docs/user-guide/annotations
607
+ # Corresponds to the JSON property `annotations`
608
+ # @return [Hash<String,String>]
609
+ attr_accessor :annotations
610
+
611
+ # Blueprints are OCI Images that contain all of the artifacts needed to
612
+ # provision a unit. Metadata such as, type of the engine used to actuate the
613
+ # blueprint (e.g. terraform, helm etc) and version will come from the image
614
+ # manifest. If the hostname is omitted, it will be assumed to be the regional
615
+ # path to Artifact Registry (eg. us-east1-docker.pkg.dev).
616
+ # Corresponds to the JSON property `blueprint`
617
+ # @return [Google::Apis::SaasservicemgmtV1beta1::Blueprint]
618
+ attr_accessor :blueprint
619
+
620
+ # Output only. The timestamp when the resource was created.
621
+ # Corresponds to the JSON property `createTime`
622
+ # @return [String]
623
+ attr_accessor :create_time
624
+
625
+ # Output only. An opaque value that uniquely identifies a version or generation
626
+ # of a resource. It can be used to confirm that the client and server agree on
627
+ # the ordering of a resource being written.
628
+ # Corresponds to the JSON property `etag`
629
+ # @return [String]
630
+ attr_accessor :etag
631
+
632
+ # Optional. Mapping of input variables to default values. Maximum 100
633
+ # Corresponds to the JSON property `inputVariableDefaults`
634
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
635
+ attr_accessor :input_variable_defaults
636
+
637
+ # Optional. Output only. List of input variables declared on the blueprint and
638
+ # can be present with their values on the unit spec
639
+ # Corresponds to the JSON property `inputVariables`
640
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
641
+ attr_accessor :input_variables
642
+
643
+ # Optional. The labels on the resource, which can be used for categorization.
644
+ # similar to Kubernetes resource labels.
645
+ # Corresponds to the JSON property `labels`
646
+ # @return [Hash<String,String>]
647
+ attr_accessor :labels
648
+
649
+ # Identifier. The resource name (full URI of the resource) following the
650
+ # standard naming scheme: "projects/`project`/locations/`location`/releases/`
651
+ # release`"
652
+ # Corresponds to the JSON property `name`
653
+ # @return [String]
654
+ attr_accessor :name
655
+
656
+ # Optional. Output only. List of output variables declared on the blueprint and
657
+ # can be present with their values on the unit status
658
+ # Corresponds to the JSON property `outputVariables`
659
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
660
+ attr_accessor :output_variables
661
+
662
+ # Set of requirements to be fulfilled on the Unit when using this Release.
663
+ # Corresponds to the JSON property `releaseRequirements`
664
+ # @return [Google::Apis::SaasservicemgmtV1beta1::ReleaseRequirements]
665
+ attr_accessor :release_requirements
666
+
667
+ # Output only. The unique identifier of the resource. UID is unique in the time
668
+ # and space for this resource within the scope of the service. It is typically
669
+ # generated by the server on successful creation of a resource and must not be
670
+ # changed. UID is used to uniquely identify resources with resource name reuses.
671
+ # This should be a UUID4.
672
+ # Corresponds to the JSON property `uid`
673
+ # @return [String]
674
+ attr_accessor :uid
675
+
676
+ # Required. Immutable. Reference to the UnitKind this Release corresponds to (
677
+ # required and immutable once created).
678
+ # Corresponds to the JSON property `unitKind`
679
+ # @return [String]
680
+ attr_accessor :unit_kind
681
+
682
+ # Output only. The timestamp when the resource was last updated. Any change to
683
+ # the resource made by users must refresh this value. Changes to a resource made
684
+ # by the service should refresh this value.
685
+ # Corresponds to the JSON property `updateTime`
686
+ # @return [String]
687
+ attr_accessor :update_time
688
+
689
+ def initialize(**args)
690
+ update!(**args)
691
+ end
692
+
693
+ # Update properties of this object
694
+ def update!(**args)
695
+ @annotations = args[:annotations] if args.key?(:annotations)
696
+ @blueprint = args[:blueprint] if args.key?(:blueprint)
697
+ @create_time = args[:create_time] if args.key?(:create_time)
698
+ @etag = args[:etag] if args.key?(:etag)
699
+ @input_variable_defaults = args[:input_variable_defaults] if args.key?(:input_variable_defaults)
700
+ @input_variables = args[:input_variables] if args.key?(:input_variables)
701
+ @labels = args[:labels] if args.key?(:labels)
702
+ @name = args[:name] if args.key?(:name)
703
+ @output_variables = args[:output_variables] if args.key?(:output_variables)
704
+ @release_requirements = args[:release_requirements] if args.key?(:release_requirements)
705
+ @uid = args[:uid] if args.key?(:uid)
706
+ @unit_kind = args[:unit_kind] if args.key?(:unit_kind)
707
+ @update_time = args[:update_time] if args.key?(:update_time)
708
+ end
709
+ end
710
+
711
+ # Set of requirements to be fulfilled on the Unit when using this Release.
712
+ class ReleaseRequirements
713
+ include Google::Apis::Core::Hashable
714
+
715
+ # Optional. A list of releases from which a unit can be upgraded to this one (
716
+ # optional). If left empty no constraints will be applied. When provided, unit
717
+ # upgrade requests to this release will check and enforce this constraint.
718
+ # Corresponds to the JSON property `upgradeableFromReleases`
719
+ # @return [Array<String>]
720
+ attr_accessor :upgradeable_from_releases
721
+
722
+ def initialize(**args)
723
+ update!(**args)
724
+ end
725
+
726
+ # Update properties of this object
727
+ def update!(**args)
728
+ @upgradeable_from_releases = args[:upgradeable_from_releases] if args.key?(:upgradeable_from_releases)
729
+ end
730
+ end
731
+
732
+ # Represents a single rollout execution and its results
733
+ class Rollout
734
+ include Google::Apis::Core::Hashable
735
+
736
+ # Optional. Annotations is an unstructured key-value map stored with a resource
737
+ # that may be set by external tools to store and retrieve arbitrary metadata.
738
+ # They are not queryable and should be preserved when modifying objects. More
739
+ # info: https://kubernetes.io/docs/user-guide/annotations
740
+ # Corresponds to the JSON property `annotations`
741
+ # @return [Hash<String,String>]
742
+ attr_accessor :annotations
743
+
744
+ # RolloutControl provides a way to request a change to the execution of a
745
+ # Rollout by pausing or canceling it.
746
+ # Corresponds to the JSON property `control`
747
+ # @return [Google::Apis::SaasservicemgmtV1beta1::RolloutControl]
748
+ attr_accessor :control
749
+
750
+ # Output only. The timestamp when the resource was created.
751
+ # Corresponds to the JSON property `createTime`
752
+ # @return [String]
753
+ attr_accessor :create_time
754
+
755
+ # Optional. Output only. The time when the rollout finished execution (
756
+ # regardless of success, failure, or cancellation). Will be empty if the rollout
757
+ # hasn't finished yet. Once set, the rollout is in terminal state and all the
758
+ # results are final.
759
+ # Corresponds to the JSON property `endTime`
760
+ # @return [String]
761
+ attr_accessor :end_time
762
+
763
+ # Output only. An opaque value that uniquely identifies a version or generation
764
+ # of a resource. It can be used to confirm that the client and server agree on
765
+ # the ordering of a resource being written.
766
+ # Corresponds to the JSON property `etag`
767
+ # @return [String]
768
+ attr_accessor :etag
769
+
770
+ # Optional. The labels on the resource, which can be used for categorization.
771
+ # similar to Kubernetes resource labels.
772
+ # Corresponds to the JSON property `labels`
773
+ # @return [Hash<String,String>]
774
+ attr_accessor :labels
775
+
776
+ # Identifier. The resource name (full URI of the resource) following the
777
+ # standard naming scheme: "projects/`project`/locations/`location`/rollout/`
778
+ # rollout_id`"
779
+ # Corresponds to the JSON property `name`
780
+ # @return [String]
781
+ attr_accessor :name
782
+
783
+ # Optional. Output only. The direct parent rollout that this rollout is stemming
784
+ # from. The resource name (full URI of the resource) following the standard
785
+ # naming scheme: "projects/`project`/locations/`location`/rollouts/`rollout_id`"
786
+ # Corresponds to the JSON property `parentRollout`
787
+ # @return [String]
788
+ attr_accessor :parent_rollout
789
+
790
+ # Optional. Immutable. Name of the Release that gets rolled out to target Units.
791
+ # Required if no other type of release is specified.
792
+ # Corresponds to the JSON property `release`
793
+ # @return [String]
794
+ attr_accessor :release
795
+
796
+ # Optional. Immutable. Name of the RolloutKind this rollout is stemming from and
797
+ # adhering to.
798
+ # Corresponds to the JSON property `rolloutKind`
799
+ # @return [String]
800
+ attr_accessor :rollout_kind
801
+
802
+ # Optional. The strategy used for executing this Rollout. This strategy will
803
+ # override whatever strategy is specified in the RolloutType. If not specified
804
+ # on creation, the strategy from RolloutType will be used. There are two
805
+ # supported values strategies which are used to control - "Google.Cloud.Simple.
806
+ # AllAtOnce" - "Google.Cloud.Simple.OneLocationAtATime" A rollout with one of
807
+ # these simple strategies will rollout across all locations defined in the
808
+ # targeted UnitKind's Saas Locations.
809
+ # Corresponds to the JSON property `rolloutOrchestrationStrategy`
810
+ # @return [String]
811
+ attr_accessor :rollout_orchestration_strategy
812
+
813
+ # Optional. Output only. The root rollout that this rollout is stemming from.
814
+ # The resource name (full URI of the resource) following the standard naming
815
+ # scheme: "projects/`project`/locations/`location`/rollouts/`rollout_id`"
816
+ # Corresponds to the JSON property `rootRollout`
817
+ # @return [String]
818
+ attr_accessor :root_rollout
819
+
820
+ # Optional. Output only. The time when the rollout started executing. Will be
821
+ # empty if the rollout hasn't started yet.
822
+ # Corresponds to the JSON property `startTime`
823
+ # @return [String]
824
+ attr_accessor :start_time
825
+
826
+ # Output only. Current state of the rollout.
827
+ # Corresponds to the JSON property `state`
828
+ # @return [String]
829
+ attr_accessor :state
830
+
831
+ # Output only. Human readable message indicating details about the last state
832
+ # transition.
833
+ # Corresponds to the JSON property `stateMessage`
834
+ # @return [String]
835
+ attr_accessor :state_message
836
+
837
+ # Optional. Output only. The time when the rollout transitioned into its current
838
+ # state.
839
+ # Corresponds to the JSON property `stateTransitionTime`
840
+ # @return [String]
841
+ attr_accessor :state_transition_time
842
+
843
+ # RolloutStats contains information about the progress of a rollout.
844
+ # Corresponds to the JSON property `stats`
845
+ # @return [Google::Apis::SaasservicemgmtV1beta1::RolloutStats]
846
+ attr_accessor :stats
847
+
848
+ # Output only. The unique identifier of the resource. UID is unique in the time
849
+ # and space for this resource within the scope of the service. It is typically
850
+ # generated by the server on successful creation of a resource and must not be
851
+ # changed. UID is used to uniquely identify resources with resource name reuses.
852
+ # This should be a UUID4.
853
+ # Corresponds to the JSON property `uid`
854
+ # @return [String]
855
+ attr_accessor :uid
856
+
857
+ # Optional. CEL(https://github.com/google/cel-spec) formatted filter string
858
+ # against Unit. The filter will be applied to determine the eligible unit
859
+ # population. This filter can only reduce, but not expand the scope of the
860
+ # rollout. If not provided, the unit_filter from the RolloutType will be used.
861
+ # Corresponds to the JSON property `unitFilter`
862
+ # @return [String]
863
+ attr_accessor :unit_filter
864
+
865
+ # Output only. The timestamp when the resource was last updated. Any change to
866
+ # the resource made by users must refresh this value. Changes to a resource made
867
+ # by the service should refresh this value.
868
+ # Corresponds to the JSON property `updateTime`
869
+ # @return [String]
870
+ attr_accessor :update_time
871
+
872
+ def initialize(**args)
873
+ update!(**args)
874
+ end
875
+
876
+ # Update properties of this object
877
+ def update!(**args)
878
+ @annotations = args[:annotations] if args.key?(:annotations)
879
+ @control = args[:control] if args.key?(:control)
880
+ @create_time = args[:create_time] if args.key?(:create_time)
881
+ @end_time = args[:end_time] if args.key?(:end_time)
882
+ @etag = args[:etag] if args.key?(:etag)
883
+ @labels = args[:labels] if args.key?(:labels)
884
+ @name = args[:name] if args.key?(:name)
885
+ @parent_rollout = args[:parent_rollout] if args.key?(:parent_rollout)
886
+ @release = args[:release] if args.key?(:release)
887
+ @rollout_kind = args[:rollout_kind] if args.key?(:rollout_kind)
888
+ @rollout_orchestration_strategy = args[:rollout_orchestration_strategy] if args.key?(:rollout_orchestration_strategy)
889
+ @root_rollout = args[:root_rollout] if args.key?(:root_rollout)
890
+ @start_time = args[:start_time] if args.key?(:start_time)
891
+ @state = args[:state] if args.key?(:state)
892
+ @state_message = args[:state_message] if args.key?(:state_message)
893
+ @state_transition_time = args[:state_transition_time] if args.key?(:state_transition_time)
894
+ @stats = args[:stats] if args.key?(:stats)
895
+ @uid = args[:uid] if args.key?(:uid)
896
+ @unit_filter = args[:unit_filter] if args.key?(:unit_filter)
897
+ @update_time = args[:update_time] if args.key?(:update_time)
898
+ end
899
+ end
900
+
901
+ # RolloutControl provides a way to request a change to the execution of a
902
+ # Rollout by pausing or canceling it.
903
+ class RolloutControl
904
+ include Google::Apis::Core::Hashable
905
+
906
+ # Required. Action to be performed on the Rollout. The default behavior is to
907
+ # run the rollout until it naturally reaches a terminal state.
908
+ # Corresponds to the JSON property `action`
909
+ # @return [String]
910
+ attr_accessor :action
911
+
912
+ # Parameters for the RUN action controlling the behavior of the rollout when it
913
+ # is resumed from a PAUSED state.
914
+ # Corresponds to the JSON property `runParams`
915
+ # @return [Google::Apis::SaasservicemgmtV1beta1::RunRolloutActionParams]
916
+ attr_accessor :run_params
917
+
918
+ def initialize(**args)
919
+ update!(**args)
920
+ end
921
+
922
+ # Update properties of this object
923
+ def update!(**args)
924
+ @action = args[:action] if args.key?(:action)
925
+ @run_params = args[:run_params] if args.key?(:run_params)
926
+ end
927
+ end
928
+
929
+ # An object that describes various settings of Rollout execution. Includes built-
930
+ # in policies across GCP and GDC, and customizable policies.
931
+ class RolloutKind
932
+ include Google::Apis::Core::Hashable
933
+
934
+ # Optional. Annotations is an unstructured key-value map stored with a resource
935
+ # that may be set by external tools to store and retrieve arbitrary metadata.
936
+ # They are not queryable and should be preserved when modifying objects. More
937
+ # info: https://kubernetes.io/docs/user-guide/annotations
938
+ # Corresponds to the JSON property `annotations`
939
+ # @return [Hash<String,String>]
940
+ attr_accessor :annotations
941
+
942
+ # Output only. The timestamp when the resource was created.
943
+ # Corresponds to the JSON property `createTime`
944
+ # @return [String]
945
+ attr_accessor :create_time
946
+
947
+ # The configuration for error budget. If the number of failed units exceeds max(
948
+ # allowed_count, allowed_ratio * total_units), the rollout will be paused.
949
+ # Corresponds to the JSON property `errorBudget`
950
+ # @return [Google::Apis::SaasservicemgmtV1beta1::ErrorBudget]
951
+ attr_accessor :error_budget
952
+
953
+ # Output only. An opaque value that uniquely identifies a version or generation
954
+ # of a resource. It can be used to confirm that the client and server agree on
955
+ # the ordering of a resource being written.
956
+ # Corresponds to the JSON property `etag`
957
+ # @return [String]
958
+ attr_accessor :etag
959
+
960
+ # Optional. The labels on the resource, which can be used for categorization.
961
+ # similar to Kubernetes resource labels.
962
+ # Corresponds to the JSON property `labels`
963
+ # @return [Hash<String,String>]
964
+ attr_accessor :labels
965
+
966
+ # Identifier. The resource name (full URI of the resource) following the
967
+ # standard naming scheme: "projects/`project`/locations/`location`/rolloutKinds/`
968
+ # rollout_kind_id`"
969
+ # Corresponds to the JSON property `name`
970
+ # @return [String]
971
+ attr_accessor :name
972
+
973
+ # Optional. The strategy used for executing a Rollout. This is a required field.
974
+ # There are two supported values strategies which are used to control - "Google.
975
+ # Cloud.Simple.AllAtOnce" - "Google.Cloud.Simple.OneLocationAtATime" A rollout
976
+ # with one of these simple strategies will rollout across all locations defined
977
+ # in the associated UnitKind's Saas Locations.
978
+ # Corresponds to the JSON property `rolloutOrchestrationStrategy`
979
+ # @return [String]
980
+ attr_accessor :rollout_orchestration_strategy
981
+
982
+ # Output only. The unique identifier of the resource. UID is unique in the time
983
+ # and space for this resource within the scope of the service. It is typically
984
+ # generated by the server on successful creation of a resource and must not be
985
+ # changed. UID is used to uniquely identify resources with resource name reuses.
986
+ # This should be a UUID4.
987
+ # Corresponds to the JSON property `uid`
988
+ # @return [String]
989
+ attr_accessor :uid
990
+
991
+ # Optional. CEL(https://github.com/google/cel-spec) formatted filter string
992
+ # against Unit. The filter will be applied to determine the eligible unit
993
+ # population. This filter can only reduce, but not expand the scope of the
994
+ # rollout.
995
+ # Corresponds to the JSON property `unitFilter`
996
+ # @return [String]
997
+ attr_accessor :unit_filter
998
+
999
+ # Required. Immutable. UnitKind that this rollout kind corresponds to. Rollouts
1000
+ # stemming from this rollout kind will target the units of this unit kind. In
1001
+ # other words, this defines the population of target units to be upgraded by
1002
+ # rollouts.
1003
+ # Corresponds to the JSON property `unitKind`
1004
+ # @return [String]
1005
+ attr_accessor :unit_kind
1006
+
1007
+ # Output only. The timestamp when the resource was last updated. Any change to
1008
+ # the resource made by users must refresh this value. Changes to a resource made
1009
+ # by the service should refresh this value.
1010
+ # Corresponds to the JSON property `updateTime`
1011
+ # @return [String]
1012
+ attr_accessor :update_time
1013
+
1014
+ # Optional. The config for updating the unit kind. By default, the unit kind
1015
+ # will be updated on the rollout start.
1016
+ # Corresponds to the JSON property `updateUnitKindStrategy`
1017
+ # @return [String]
1018
+ attr_accessor :update_unit_kind_strategy
1019
+
1020
+ def initialize(**args)
1021
+ update!(**args)
1022
+ end
1023
+
1024
+ # Update properties of this object
1025
+ def update!(**args)
1026
+ @annotations = args[:annotations] if args.key?(:annotations)
1027
+ @create_time = args[:create_time] if args.key?(:create_time)
1028
+ @error_budget = args[:error_budget] if args.key?(:error_budget)
1029
+ @etag = args[:etag] if args.key?(:etag)
1030
+ @labels = args[:labels] if args.key?(:labels)
1031
+ @name = args[:name] if args.key?(:name)
1032
+ @rollout_orchestration_strategy = args[:rollout_orchestration_strategy] if args.key?(:rollout_orchestration_strategy)
1033
+ @uid = args[:uid] if args.key?(:uid)
1034
+ @unit_filter = args[:unit_filter] if args.key?(:unit_filter)
1035
+ @unit_kind = args[:unit_kind] if args.key?(:unit_kind)
1036
+ @update_time = args[:update_time] if args.key?(:update_time)
1037
+ @update_unit_kind_strategy = args[:update_unit_kind_strategy] if args.key?(:update_unit_kind_strategy)
1038
+ end
1039
+ end
1040
+
1041
+ # RolloutStats contains information about the progress of a rollout.
1042
+ class RolloutStats
1043
+ include Google::Apis::Core::Hashable
1044
+
1045
+ # Output only. A breakdown of the progress of operations triggered by the
1046
+ # rollout. Provides a count of Operations by their state. This can be used to
1047
+ # determine the number of units which have been updated, or are scheduled to be
1048
+ # updated. There will be at most one entry per group. Possible values for
1049
+ # operation groups are: - "SCHEDULED" - "PENDING" - "RUNNING" - "SUCCEEDED" - "
1050
+ # FAILED" - "CANCELLED"
1051
+ # Corresponds to the JSON property `operationsByState`
1052
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Aggregate>]
1053
+ attr_accessor :operations_by_state
1054
+
1055
+ def initialize(**args)
1056
+ update!(**args)
1057
+ end
1058
+
1059
+ # Update properties of this object
1060
+ def update!(**args)
1061
+ @operations_by_state = args[:operations_by_state] if args.key?(:operations_by_state)
1062
+ end
1063
+ end
1064
+
1065
+ # Parameters for the RUN action controlling the behavior of the rollout when it
1066
+ # is resumed from a PAUSED state.
1067
+ class RunRolloutActionParams
1068
+ include Google::Apis::Core::Hashable
1069
+
1070
+ # Required. If true, the rollout will retry failed operations when resumed. This
1071
+ # is applicable only the current state of the Rollout is PAUSED and the
1072
+ # requested action is RUN.
1073
+ # Corresponds to the JSON property `retryFailedOperations`
1074
+ # @return [Boolean]
1075
+ attr_accessor :retry_failed_operations
1076
+ alias_method :retry_failed_operations?, :retry_failed_operations
1077
+
1078
+ def initialize(**args)
1079
+ update!(**args)
1080
+ end
1081
+
1082
+ # Update properties of this object
1083
+ def update!(**args)
1084
+ @retry_failed_operations = args[:retry_failed_operations] if args.key?(:retry_failed_operations)
1085
+ end
1086
+ end
1087
+
1088
+ # Saas is a representation of a SaaS service managed by the Producer.
1089
+ class Saas
1090
+ include Google::Apis::Core::Hashable
1091
+
1092
+ # Optional. Annotations is an unstructured key-value map stored with a resource
1093
+ # that may be set by external tools to store and retrieve arbitrary metadata.
1094
+ # They are not queryable and should be preserved when modifying objects. More
1095
+ # info: https://kubernetes.io/docs/user-guide/annotations
1096
+ # Corresponds to the JSON property `annotations`
1097
+ # @return [Hash<String,String>]
1098
+ attr_accessor :annotations
1099
+
1100
+ # Output only. The timestamp when the resource was created.
1101
+ # Corresponds to the JSON property `createTime`
1102
+ # @return [String]
1103
+ attr_accessor :create_time
1104
+
1105
+ # Output only. An opaque value that uniquely identifies a version or generation
1106
+ # of a resource. It can be used to confirm that the client and server agree on
1107
+ # the ordering of a resource being written.
1108
+ # Corresponds to the JSON property `etag`
1109
+ # @return [String]
1110
+ attr_accessor :etag
1111
+
1112
+ # Optional. The labels on the resource, which can be used for categorization.
1113
+ # similar to Kubernetes resource labels.
1114
+ # Corresponds to the JSON property `labels`
1115
+ # @return [Hash<String,String>]
1116
+ attr_accessor :labels
1117
+
1118
+ # Optional. Immutable. List of locations that the service is available in.
1119
+ # Rollout refers to the list to generate a rollout plan.
1120
+ # Corresponds to the JSON property `locations`
1121
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Location>]
1122
+ attr_accessor :locations
1123
+
1124
+ # Identifier. The resource name (full URI of the resource) following the
1125
+ # standard naming scheme: "projects/`project`/locations/`location`/saas/`saas`"
1126
+ # Corresponds to the JSON property `name`
1127
+ # @return [String]
1128
+ attr_accessor :name
1129
+
1130
+ # Output only. The unique identifier of the resource. UID is unique in the time
1131
+ # and space for this resource within the scope of the service. It is typically
1132
+ # generated by the server on successful creation of a resource and must not be
1133
+ # changed. UID is used to uniquely identify resources with resource name reuses.
1134
+ # This should be a UUID4.
1135
+ # Corresponds to the JSON property `uid`
1136
+ # @return [String]
1137
+ attr_accessor :uid
1138
+
1139
+ # Output only. The timestamp when the resource was last updated. Any change to
1140
+ # the resource made by users must refresh this value. Changes to a resource made
1141
+ # by the service should refresh this value.
1142
+ # Corresponds to the JSON property `updateTime`
1143
+ # @return [String]
1144
+ attr_accessor :update_time
1145
+
1146
+ def initialize(**args)
1147
+ update!(**args)
1148
+ end
1149
+
1150
+ # Update properties of this object
1151
+ def update!(**args)
1152
+ @annotations = args[:annotations] if args.key?(:annotations)
1153
+ @create_time = args[:create_time] if args.key?(:create_time)
1154
+ @etag = args[:etag] if args.key?(:etag)
1155
+ @labels = args[:labels] if args.key?(:labels)
1156
+ @locations = args[:locations] if args.key?(:locations)
1157
+ @name = args[:name] if args.key?(:name)
1158
+ @uid = args[:uid] if args.key?(:uid)
1159
+ @update_time = args[:update_time] if args.key?(:update_time)
1160
+ end
1161
+ end
1162
+
1163
+ # A time specification to schedule the maintenance.
1164
+ class Schedule
1165
+ include Google::Apis::Core::Hashable
1166
+
1167
+ # Optional. Start of operation. If not set, will be set to the start of the next
1168
+ # window. (optional)
1169
+ # Corresponds to the JSON property `startTime`
1170
+ # @return [String]
1171
+ attr_accessor :start_time
1172
+
1173
+ def initialize(**args)
1174
+ update!(**args)
1175
+ end
1176
+
1177
+ # Update properties of this object
1178
+ def update!(**args)
1179
+ @start_time = args[:start_time] if args.key?(:start_time)
1180
+ end
1181
+ end
1182
+
1183
+ # Tenant represents the service producer side of an instance of the service
1184
+ # created based on a request from a consumer. In a typical scenario a Tenant has
1185
+ # a one-to-one mapping with a resource given out to a service consumer. Example:
1186
+ # tenant: name: "projects/svc1/locations/loc/tenants/inst-068afff8"
1187
+ # consumer_resource: "projects/gshoe/locations/loc/shoes/black-shoe"
1188
+ class Tenant
1189
+ include Google::Apis::Core::Hashable
1190
+
1191
+ # Optional. Annotations is an unstructured key-value map stored with a resource
1192
+ # that may be set by external tools to store and retrieve arbitrary metadata.
1193
+ # They are not queryable and should be preserved when modifying objects. More
1194
+ # info: https://kubernetes.io/docs/user-guide/annotations
1195
+ # Corresponds to the JSON property `annotations`
1196
+ # @return [Hash<String,String>]
1197
+ attr_accessor :annotations
1198
+
1199
+ # Optional. Immutable. A reference to the consumer resource this SaaS Tenant is
1200
+ # representing. The relationship with a consumer resource can be used by
1201
+ # EasySaaS for retrieving consumer-defined settings and policies such as
1202
+ # maintenance policies (using Unified Maintenance Policy API).
1203
+ # Corresponds to the JSON property `consumerResource`
1204
+ # @return [String]
1205
+ attr_accessor :consumer_resource
1206
+
1207
+ # Output only. The timestamp when the resource was created.
1208
+ # Corresponds to the JSON property `createTime`
1209
+ # @return [String]
1210
+ attr_accessor :create_time
1211
+
1212
+ # Output only. An opaque value that uniquely identifies a version or generation
1213
+ # of a resource. It can be used to confirm that the client and server agree on
1214
+ # the ordering of a resource being written.
1215
+ # Corresponds to the JSON property `etag`
1216
+ # @return [String]
1217
+ attr_accessor :etag
1218
+
1219
+ # Optional. The labels on the resource, which can be used for categorization.
1220
+ # similar to Kubernetes resource labels.
1221
+ # Corresponds to the JSON property `labels`
1222
+ # @return [Hash<String,String>]
1223
+ attr_accessor :labels
1224
+
1225
+ # Identifier. The resource name (full URI of the resource) following the
1226
+ # standard naming scheme: "projects/`project`/locations/`location`/tenants/`
1227
+ # tenant`"
1228
+ # Corresponds to the JSON property `name`
1229
+ # @return [String]
1230
+ attr_accessor :name
1231
+
1232
+ # Required. Immutable. A reference to the Saas that defines the product (managed
1233
+ # service) that the producer wants to manage with EasySaaS. Part of the EasySaaS
1234
+ # common data model.
1235
+ # Corresponds to the JSON property `saas`
1236
+ # @return [String]
1237
+ attr_accessor :saas
1238
+
1239
+ # Output only. The unique identifier of the resource. UID is unique in the time
1240
+ # and space for this resource within the scope of the service. It is typically
1241
+ # generated by the server on successful creation of a resource and must not be
1242
+ # changed. UID is used to uniquely identify resources with resource name reuses.
1243
+ # This should be a UUID4.
1244
+ # Corresponds to the JSON property `uid`
1245
+ # @return [String]
1246
+ attr_accessor :uid
1247
+
1248
+ # Output only. The timestamp when the resource was last updated. Any change to
1249
+ # the resource made by users must refresh this value. Changes to a resource made
1250
+ # by the service should refresh this value.
1251
+ # Corresponds to the JSON property `updateTime`
1252
+ # @return [String]
1253
+ attr_accessor :update_time
1254
+
1255
+ def initialize(**args)
1256
+ update!(**args)
1257
+ end
1258
+
1259
+ # Update properties of this object
1260
+ def update!(**args)
1261
+ @annotations = args[:annotations] if args.key?(:annotations)
1262
+ @consumer_resource = args[:consumer_resource] if args.key?(:consumer_resource)
1263
+ @create_time = args[:create_time] if args.key?(:create_time)
1264
+ @etag = args[:etag] if args.key?(:etag)
1265
+ @labels = args[:labels] if args.key?(:labels)
1266
+ @name = args[:name] if args.key?(:name)
1267
+ @saas = args[:saas] if args.key?(:saas)
1268
+ @uid = args[:uid] if args.key?(:uid)
1269
+ @update_time = args[:update_time] if args.key?(:update_time)
1270
+ end
1271
+ end
1272
+
1273
+ # Input variables whose values will be passed on to dependencies
1274
+ class ToMapping
1275
+ include Google::Apis::Core::Hashable
1276
+
1277
+ # Required. Alias of the dependency that the inputVariable will pass its value
1278
+ # to
1279
+ # Corresponds to the JSON property `dependency`
1280
+ # @return [String]
1281
+ attr_accessor :dependency
1282
+
1283
+ # Optional. Tells EasySaaS if this mapping should be used during lookup or not
1284
+ # Corresponds to the JSON property `ignoreForLookup`
1285
+ # @return [Boolean]
1286
+ attr_accessor :ignore_for_lookup
1287
+ alias_method :ignore_for_lookup?, :ignore_for_lookup
1288
+
1289
+ # Required. Name of the inputVariable on the dependency
1290
+ # Corresponds to the JSON property `inputVariable`
1291
+ # @return [String]
1292
+ attr_accessor :input_variable
1293
+
1294
+ def initialize(**args)
1295
+ update!(**args)
1296
+ end
1297
+
1298
+ # Update properties of this object
1299
+ def update!(**args)
1300
+ @dependency = args[:dependency] if args.key?(:dependency)
1301
+ @ignore_for_lookup = args[:ignore_for_lookup] if args.key?(:ignore_for_lookup)
1302
+ @input_variable = args[:input_variable] if args.key?(:input_variable)
1303
+ end
1304
+ end
1305
+
1306
+ # A unit of deployment that has its lifecycle via a CRUD API using an actuation
1307
+ # engine under the hood (e.g. based on Terraform, Helm or a custom
1308
+ # implementation provided by a service producer). A building block of a SaaS
1309
+ # Tenant.
1310
+ class Unit
1311
+ include Google::Apis::Core::Hashable
1312
+
1313
+ # Optional. Annotations is an unstructured key-value map stored with a resource
1314
+ # that may be set by external tools to store and retrieve arbitrary metadata.
1315
+ # They are not queryable and should be preserved when modifying objects. More
1316
+ # info: https://kubernetes.io/docs/user-guide/annotations
1317
+ # Corresponds to the JSON property `annotations`
1318
+ # @return [Hash<String,String>]
1319
+ attr_accessor :annotations
1320
+
1321
+ # Optional. Output only. A set of conditions which indicate the various
1322
+ # conditions this resource can have.
1323
+ # Corresponds to the JSON property `conditions`
1324
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitCondition>]
1325
+ attr_accessor :conditions
1326
+
1327
+ # Output only. The timestamp when the resource was created.
1328
+ # Corresponds to the JSON property `createTime`
1329
+ # @return [String]
1330
+ attr_accessor :create_time
1331
+
1332
+ # Optional. Output only. Set of dependencies for this unit. Maximum 10.
1333
+ # Corresponds to the JSON property `dependencies`
1334
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitDependency>]
1335
+ attr_accessor :dependencies
1336
+
1337
+ # Optional. Output only. List of Units that depend on this unit. Unit can only
1338
+ # be deprovisioned if this list is empty. Maximum 1000.
1339
+ # Corresponds to the JSON property `dependents`
1340
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitDependency>]
1341
+ attr_accessor :dependents
1342
+
1343
+ # Output only. An opaque value that uniquely identifies a version or generation
1344
+ # of a resource. It can be used to confirm that the client and server agree on
1345
+ # the ordering of a resource being written.
1346
+ # Corresponds to the JSON property `etag`
1347
+ # @return [String]
1348
+ attr_accessor :etag
1349
+
1350
+ # Optional. Output only. Indicates the current input variables deployed by the
1351
+ # unit
1352
+ # Corresponds to the JSON property `inputVariables`
1353
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
1354
+ attr_accessor :input_variables
1355
+
1356
+ # Optional. The labels on the resource, which can be used for categorization.
1357
+ # similar to Kubernetes resource labels.
1358
+ # Corresponds to the JSON property `labels`
1359
+ # @return [Hash<String,String>]
1360
+ attr_accessor :labels
1361
+
1362
+ # Captures requested directives for performing future maintenance on the unit.
1363
+ # This includes a request for the unit to skip maintenance for a period of time
1364
+ # and remain pinned to its current release as well as controls for postponing
1365
+ # maintenance scheduled in future.
1366
+ # Corresponds to the JSON property `maintenance`
1367
+ # @return [Google::Apis::SaasservicemgmtV1beta1::MaintenanceSettings]
1368
+ attr_accessor :maintenance
1369
+
1370
+ # Optional. Immutable. Indicates whether the Unit life cycle is controlled by
1371
+ # the user or by the system. Immutable once created.
1372
+ # Corresponds to the JSON property `managementMode`
1373
+ # @return [String]
1374
+ attr_accessor :management_mode
1375
+
1376
+ # Identifier. The resource name (full URI of the resource) following the
1377
+ # standard naming scheme: "projects/`project`/locations/`location`/units/`unit`"
1378
+ # Corresponds to the JSON property `name`
1379
+ # @return [String]
1380
+ attr_accessor :name
1381
+
1382
+ # Optional. Output only. List of concurrent UnitOperations that are operating on
1383
+ # this Unit.
1384
+ # Corresponds to the JSON property `ongoingOperations`
1385
+ # @return [Array<String>]
1386
+ attr_accessor :ongoing_operations
1387
+
1388
+ # Optional. Output only. Set of key/value pairs corresponding to output
1389
+ # variables from execution of actuation templates. The variables are declared in
1390
+ # actuation configs (e.g in helm chart or terraform) and the values are fetched
1391
+ # and returned by the actuation engine upon completion of execution.
1392
+ # Corresponds to the JSON property `outputVariables`
1393
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
1394
+ attr_accessor :output_variables
1395
+
1396
+ # Optional. Output only. List of pending (wait to be executed) UnitOperations
1397
+ # for this unit.
1398
+ # Corresponds to the JSON property `pendingOperations`
1399
+ # @return [Array<String>]
1400
+ attr_accessor :pending_operations
1401
+
1402
+ # Optional. Output only. The current Release object for this Unit.
1403
+ # Corresponds to the JSON property `release`
1404
+ # @return [String]
1405
+ attr_accessor :release
1406
+
1407
+ # Optional. Output only. List of scheduled UnitOperations for this unit.
1408
+ # Corresponds to the JSON property `scheduledOperations`
1409
+ # @return [Array<String>]
1410
+ attr_accessor :scheduled_operations
1411
+
1412
+ # Optional. Output only. Current lifecycle state of the resource (e.g. if it's
1413
+ # being created or ready to use).
1414
+ # Corresponds to the JSON property `state`
1415
+ # @return [String]
1416
+ attr_accessor :state
1417
+
1418
+ # Optional. Output only. If set, indicates the time when the system will start
1419
+ # removing the unit.
1420
+ # Corresponds to the JSON property `systemCleanupAt`
1421
+ # @return [String]
1422
+ attr_accessor :system_cleanup_at
1423
+
1424
+ # Optional. Output only. Indicates the system managed state of the unit.
1425
+ # Corresponds to the JSON property `systemManagedState`
1426
+ # @return [String]
1427
+ attr_accessor :system_managed_state
1428
+
1429
+ # Optional. Reference to the Saas Tenant resource this unit belongs to. This for
1430
+ # example informs the maintenance policies to use for scheduling future updates
1431
+ # on a unit. (optional and immutable once created)
1432
+ # Corresponds to the JSON property `tenant`
1433
+ # @return [String]
1434
+ attr_accessor :tenant
1435
+
1436
+ # Output only. The unique identifier of the resource. UID is unique in the time
1437
+ # and space for this resource within the scope of the service. It is typically
1438
+ # generated by the server on successful creation of a resource and must not be
1439
+ # changed. UID is used to uniquely identify resources with resource name reuses.
1440
+ # This should be a UUID4.
1441
+ # Corresponds to the JSON property `uid`
1442
+ # @return [String]
1443
+ attr_accessor :uid
1444
+
1445
+ # Optional. Reference to the UnitKind this Unit belongs to. Immutable once set.
1446
+ # Corresponds to the JSON property `unitKind`
1447
+ # @return [String]
1448
+ attr_accessor :unit_kind
1449
+
1450
+ # Output only. The timestamp when the resource was last updated. Any change to
1451
+ # the resource made by users must refresh this value. Changes to a resource made
1452
+ # by the service should refresh this value.
1453
+ # Corresponds to the JSON property `updateTime`
1454
+ # @return [String]
1455
+ attr_accessor :update_time
1456
+
1457
+ def initialize(**args)
1458
+ update!(**args)
1459
+ end
1460
+
1461
+ # Update properties of this object
1462
+ def update!(**args)
1463
+ @annotations = args[:annotations] if args.key?(:annotations)
1464
+ @conditions = args[:conditions] if args.key?(:conditions)
1465
+ @create_time = args[:create_time] if args.key?(:create_time)
1466
+ @dependencies = args[:dependencies] if args.key?(:dependencies)
1467
+ @dependents = args[:dependents] if args.key?(:dependents)
1468
+ @etag = args[:etag] if args.key?(:etag)
1469
+ @input_variables = args[:input_variables] if args.key?(:input_variables)
1470
+ @labels = args[:labels] if args.key?(:labels)
1471
+ @maintenance = args[:maintenance] if args.key?(:maintenance)
1472
+ @management_mode = args[:management_mode] if args.key?(:management_mode)
1473
+ @name = args[:name] if args.key?(:name)
1474
+ @ongoing_operations = args[:ongoing_operations] if args.key?(:ongoing_operations)
1475
+ @output_variables = args[:output_variables] if args.key?(:output_variables)
1476
+ @pending_operations = args[:pending_operations] if args.key?(:pending_operations)
1477
+ @release = args[:release] if args.key?(:release)
1478
+ @scheduled_operations = args[:scheduled_operations] if args.key?(:scheduled_operations)
1479
+ @state = args[:state] if args.key?(:state)
1480
+ @system_cleanup_at = args[:system_cleanup_at] if args.key?(:system_cleanup_at)
1481
+ @system_managed_state = args[:system_managed_state] if args.key?(:system_managed_state)
1482
+ @tenant = args[:tenant] if args.key?(:tenant)
1483
+ @uid = args[:uid] if args.key?(:uid)
1484
+ @unit_kind = args[:unit_kind] if args.key?(:unit_kind)
1485
+ @update_time = args[:update_time] if args.key?(:update_time)
1486
+ end
1487
+ end
1488
+
1489
+ # UnitCondition describes the status of an Unit. UnitCondition is individual
1490
+ # components that contribute to an overall state.
1491
+ class UnitCondition
1492
+ include Google::Apis::Core::Hashable
1493
+
1494
+ # Required. Last time the condition transited from one status to another.
1495
+ # Corresponds to the JSON property `lastTransitionTime`
1496
+ # @return [String]
1497
+ attr_accessor :last_transition_time
1498
+
1499
+ # Required. Human readable message indicating details about the last transition.
1500
+ # Corresponds to the JSON property `message`
1501
+ # @return [String]
1502
+ attr_accessor :message
1503
+
1504
+ # Required. Brief reason for the condition's last transition.
1505
+ # Corresponds to the JSON property `reason`
1506
+ # @return [String]
1507
+ attr_accessor :reason
1508
+
1509
+ # Required. Status of the condition.
1510
+ # Corresponds to the JSON property `status`
1511
+ # @return [String]
1512
+ attr_accessor :status
1513
+
1514
+ # Required. Type of the condition.
1515
+ # Corresponds to the JSON property `type`
1516
+ # @return [String]
1517
+ attr_accessor :type
1518
+
1519
+ def initialize(**args)
1520
+ update!(**args)
1521
+ end
1522
+
1523
+ # Update properties of this object
1524
+ def update!(**args)
1525
+ @last_transition_time = args[:last_transition_time] if args.key?(:last_transition_time)
1526
+ @message = args[:message] if args.key?(:message)
1527
+ @reason = args[:reason] if args.key?(:reason)
1528
+ @status = args[:status] if args.key?(:status)
1529
+ @type = args[:type] if args.key?(:type)
1530
+ end
1531
+ end
1532
+
1533
+ # Set of dependencies for this unit. Maximum 10.
1534
+ class UnitDependency
1535
+ include Google::Apis::Core::Hashable
1536
+
1537
+ # Output only. Alias for the name of the dependency.
1538
+ # Corresponds to the JSON property `alias`
1539
+ # @return [String]
1540
+ attr_accessor :alias
1541
+
1542
+ # Output only. A reference to the Unit object.
1543
+ # Corresponds to the JSON property `unit`
1544
+ # @return [String]
1545
+ attr_accessor :unit
1546
+
1547
+ def initialize(**args)
1548
+ update!(**args)
1549
+ end
1550
+
1551
+ # Update properties of this object
1552
+ def update!(**args)
1553
+ @alias = args[:alias] if args.key?(:alias)
1554
+ @unit = args[:unit] if args.key?(:unit)
1555
+ end
1556
+ end
1557
+
1558
+ # Definition of a Unit. Units belonging to the same UnitKind are managed
1559
+ # together; for example they follow the same release model (blueprints, versions
1560
+ # etc.) and are typically rolled out together.
1561
+ class UnitKind
1562
+ include Google::Apis::Core::Hashable
1563
+
1564
+ # Optional. Annotations is an unstructured key-value map stored with a resource
1565
+ # that may be set by external tools to store and retrieve arbitrary metadata.
1566
+ # They are not queryable and should be preserved when modifying objects. More
1567
+ # info: https://kubernetes.io/docs/user-guide/annotations
1568
+ # Corresponds to the JSON property `annotations`
1569
+ # @return [Hash<String,String>]
1570
+ attr_accessor :annotations
1571
+
1572
+ # Output only. The timestamp when the resource was created.
1573
+ # Corresponds to the JSON property `createTime`
1574
+ # @return [String]
1575
+ attr_accessor :create_time
1576
+
1577
+ # Optional. A reference to the Release object to use as default for creating new
1578
+ # units of this UnitKind (optional). If not specified, a new unit must
1579
+ # explicitly reference which release to use for its creation.
1580
+ # Corresponds to the JSON property `defaultRelease`
1581
+ # @return [String]
1582
+ attr_accessor :default_release
1583
+
1584
+ # Optional. Immutable. List of other unit kinds that this release will depend on.
1585
+ # Dependencies will be automatically provisioned if not found. Maximum 10.
1586
+ # Corresponds to the JSON property `dependencies`
1587
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::Dependency>]
1588
+ attr_accessor :dependencies
1589
+
1590
+ # Output only. An opaque value that uniquely identifies a version or generation
1591
+ # of a resource. It can be used to confirm that the client and server agree on
1592
+ # the ordering of a resource being written.
1593
+ # Corresponds to the JSON property `etag`
1594
+ # @return [String]
1595
+ attr_accessor :etag
1596
+
1597
+ # Optional. List of inputVariables for this release that will either be
1598
+ # retrieved from a dependency’s outputVariables, or will be passed on to a
1599
+ # dependency’s inputVariables. Maximum 100.
1600
+ # Corresponds to the JSON property `inputVariableMappings`
1601
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::VariableMapping>]
1602
+ attr_accessor :input_variable_mappings
1603
+
1604
+ # Optional. The labels on the resource, which can be used for categorization.
1605
+ # similar to Kubernetes resource labels.
1606
+ # Corresponds to the JSON property `labels`
1607
+ # @return [Hash<String,String>]
1608
+ attr_accessor :labels
1609
+
1610
+ # Identifier. The resource name (full URI of the resource) following the
1611
+ # standard naming scheme: "projects/`project`/locations/`location`/unitKinds/`
1612
+ # unitKind`"
1613
+ # Corresponds to the JSON property `name`
1614
+ # @return [String]
1615
+ attr_accessor :name
1616
+
1617
+ # Optional. List of outputVariables for this unit kind will be passed to this
1618
+ # unit's outputVariables. Maximum 100.
1619
+ # Corresponds to the JSON property `outputVariableMappings`
1620
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::VariableMapping>]
1621
+ attr_accessor :output_variable_mappings
1622
+
1623
+ # Required. Immutable. A reference to the Saas that defines the product (managed
1624
+ # service) that the producer wants to manage with EasySaaS. Part of the EasySaaS
1625
+ # common data model. Immutable once set.
1626
+ # Corresponds to the JSON property `saas`
1627
+ # @return [String]
1628
+ attr_accessor :saas
1629
+
1630
+ # Output only. The unique identifier of the resource. UID is unique in the time
1631
+ # and space for this resource within the scope of the service. It is typically
1632
+ # generated by the server on successful creation of a resource and must not be
1633
+ # changed. UID is used to uniquely identify resources with resource name reuses.
1634
+ # This should be a UUID4.
1635
+ # Corresponds to the JSON property `uid`
1636
+ # @return [String]
1637
+ attr_accessor :uid
1638
+
1639
+ # Output only. The timestamp when the resource was last updated. Any change to
1640
+ # the resource made by users must refresh this value. Changes to a resource made
1641
+ # by the service should refresh this value.
1642
+ # Corresponds to the JSON property `updateTime`
1643
+ # @return [String]
1644
+ attr_accessor :update_time
1645
+
1646
+ def initialize(**args)
1647
+ update!(**args)
1648
+ end
1649
+
1650
+ # Update properties of this object
1651
+ def update!(**args)
1652
+ @annotations = args[:annotations] if args.key?(:annotations)
1653
+ @create_time = args[:create_time] if args.key?(:create_time)
1654
+ @default_release = args[:default_release] if args.key?(:default_release)
1655
+ @dependencies = args[:dependencies] if args.key?(:dependencies)
1656
+ @etag = args[:etag] if args.key?(:etag)
1657
+ @input_variable_mappings = args[:input_variable_mappings] if args.key?(:input_variable_mappings)
1658
+ @labels = args[:labels] if args.key?(:labels)
1659
+ @name = args[:name] if args.key?(:name)
1660
+ @output_variable_mappings = args[:output_variable_mappings] if args.key?(:output_variable_mappings)
1661
+ @saas = args[:saas] if args.key?(:saas)
1662
+ @uid = args[:uid] if args.key?(:uid)
1663
+ @update_time = args[:update_time] if args.key?(:update_time)
1664
+ end
1665
+ end
1666
+
1667
+ # UnitOperation encapsulates the intent of changing/interacting with the service
1668
+ # component represented by the specific Unit. Multiple UnitOperations can be
1669
+ # created (requested) and scheduled in the future, however only one will be
1670
+ # allowed to execute at a time (that can change in the future for non-mutating
1671
+ # operations). UnitOperations allow different actors interacting with the same
1672
+ # unit to focus only on the change they have requested. This is a base object
1673
+ # that contains the common fields in all unit operations.
1674
+ class UnitOperation
1675
+ include Google::Apis::Core::Hashable
1676
+
1677
+ # Optional. Annotations is an unstructured key-value map stored with a resource
1678
+ # that may be set by external tools to store and retrieve arbitrary metadata.
1679
+ # They are not queryable and should be preserved when modifying objects. More
1680
+ # info: https://kubernetes.io/docs/user-guide/annotations
1681
+ # Corresponds to the JSON property `annotations`
1682
+ # @return [Hash<String,String>]
1683
+ attr_accessor :annotations
1684
+
1685
+ # Optional. When true, attempt to cancel the operation. Cancellation may fail if
1686
+ # the operation is already executing. (Optional)
1687
+ # Corresponds to the JSON property `cancel`
1688
+ # @return [Boolean]
1689
+ attr_accessor :cancel
1690
+ alias_method :cancel?, :cancel
1691
+
1692
+ # Optional. Output only. A set of conditions which indicate the various
1693
+ # conditions this resource can have.
1694
+ # Corresponds to the JSON property `conditions`
1695
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitOperationCondition>]
1696
+ attr_accessor :conditions
1697
+
1698
+ # Output only. The timestamp when the resource was created.
1699
+ # Corresponds to the JSON property `createTime`
1700
+ # @return [String]
1701
+ attr_accessor :create_time
1702
+
1703
+ # Deprovision is the unit operation that deprovision the underlying resources
1704
+ # represented by a Unit. Can only execute if the Unit is currently provisioned.
1705
+ # Corresponds to the JSON property `deprovision`
1706
+ # @return [Google::Apis::SaasservicemgmtV1beta1::Deprovision]
1707
+ attr_accessor :deprovision
1708
+
1709
+ # Optional. Output only. The engine state for on-going deployment engine
1710
+ # operation(s). This field is opaque for external usage.
1711
+ # Corresponds to the JSON property `engineState`
1712
+ # @return [String]
1713
+ attr_accessor :engine_state
1714
+
1715
+ # Optional. Output only. UnitOperationErrorCategory describe the error category.
1716
+ # Corresponds to the JSON property `errorCategory`
1717
+ # @return [String]
1718
+ attr_accessor :error_category
1719
+
1720
+ # Output only. An opaque value that uniquely identifies a version or generation
1721
+ # of a resource. It can be used to confirm that the client and server agree on
1722
+ # the ordering of a resource being written.
1723
+ # Corresponds to the JSON property `etag`
1724
+ # @return [String]
1725
+ attr_accessor :etag
1726
+
1727
+ # Optional. The labels on the resource, which can be used for categorization.
1728
+ # similar to Kubernetes resource labels.
1729
+ # Corresponds to the JSON property `labels`
1730
+ # @return [Hash<String,String>]
1731
+ attr_accessor :labels
1732
+
1733
+ # Identifier. The resource name (full URI of the resource) following the
1734
+ # standard naming scheme: "projects/`project`/locations/`location`/
1735
+ # unitOperations/`unitOperation`"
1736
+ # Corresponds to the JSON property `name`
1737
+ # @return [String]
1738
+ attr_accessor :name
1739
+
1740
+ # Optional. Reference to parent resource: UnitOperation. If an operation needs
1741
+ # to create other operations as part of its workflow, each of the child
1742
+ # operations should have this field set to the parent. This can be used for
1743
+ # tracing. (Optional)
1744
+ # Corresponds to the JSON property `parentUnitOperation`
1745
+ # @return [String]
1746
+ attr_accessor :parent_unit_operation
1747
+
1748
+ # Provision is the unit operation that provision the underlying resources
1749
+ # represented by a Unit. Can only execute if the Unit is not currently
1750
+ # provisioned.
1751
+ # Corresponds to the JSON property `provision`
1752
+ # @return [Google::Apis::SaasservicemgmtV1beta1::Provision]
1753
+ attr_accessor :provision
1754
+
1755
+ # Optional. Specifies which rollout created this Unit Operation. This cannot be
1756
+ # modified and is used for filtering purposes only. If a dependent unit and unit
1757
+ # operation are created as part of another unit operation, they will use the
1758
+ # same rolloutId.
1759
+ # Corresponds to the JSON property `rollout`
1760
+ # @return [String]
1761
+ attr_accessor :rollout
1762
+
1763
+ # A time specification to schedule the maintenance.
1764
+ # Corresponds to the JSON property `schedule`
1765
+ # @return [Google::Apis::SaasservicemgmtV1beta1::Schedule]
1766
+ attr_accessor :schedule
1767
+
1768
+ # Optional. Output only. UnitOperationState describes the current state of the
1769
+ # unit operation.
1770
+ # Corresponds to the JSON property `state`
1771
+ # @return [String]
1772
+ attr_accessor :state
1773
+
1774
+ # Output only. The unique identifier of the resource. UID is unique in the time
1775
+ # and space for this resource within the scope of the service. It is typically
1776
+ # generated by the server on successful creation of a resource and must not be
1777
+ # changed. UID is used to uniquely identify resources with resource name reuses.
1778
+ # This should be a UUID4.
1779
+ # Corresponds to the JSON property `uid`
1780
+ # @return [String]
1781
+ attr_accessor :uid
1782
+
1783
+ # Required. Immutable. The Unit a given UnitOperation will act upon.
1784
+ # Corresponds to the JSON property `unit`
1785
+ # @return [String]
1786
+ attr_accessor :unit
1787
+
1788
+ # Output only. The timestamp when the resource was last updated. Any change to
1789
+ # the resource made by users must refresh this value. Changes to a resource made
1790
+ # by the service should refresh this value.
1791
+ # Corresponds to the JSON property `updateTime`
1792
+ # @return [String]
1793
+ attr_accessor :update_time
1794
+
1795
+ # Upgrade is the unit operation that upgrades a provisioned unit, which may also
1796
+ # include the underlying resources represented by a Unit. Can only execute if
1797
+ # the Unit is currently provisioned.
1798
+ # Corresponds to the JSON property `upgrade`
1799
+ # @return [Google::Apis::SaasservicemgmtV1beta1::Upgrade]
1800
+ attr_accessor :upgrade
1801
+
1802
+ def initialize(**args)
1803
+ update!(**args)
1804
+ end
1805
+
1806
+ # Update properties of this object
1807
+ def update!(**args)
1808
+ @annotations = args[:annotations] if args.key?(:annotations)
1809
+ @cancel = args[:cancel] if args.key?(:cancel)
1810
+ @conditions = args[:conditions] if args.key?(:conditions)
1811
+ @create_time = args[:create_time] if args.key?(:create_time)
1812
+ @deprovision = args[:deprovision] if args.key?(:deprovision)
1813
+ @engine_state = args[:engine_state] if args.key?(:engine_state)
1814
+ @error_category = args[:error_category] if args.key?(:error_category)
1815
+ @etag = args[:etag] if args.key?(:etag)
1816
+ @labels = args[:labels] if args.key?(:labels)
1817
+ @name = args[:name] if args.key?(:name)
1818
+ @parent_unit_operation = args[:parent_unit_operation] if args.key?(:parent_unit_operation)
1819
+ @provision = args[:provision] if args.key?(:provision)
1820
+ @rollout = args[:rollout] if args.key?(:rollout)
1821
+ @schedule = args[:schedule] if args.key?(:schedule)
1822
+ @state = args[:state] if args.key?(:state)
1823
+ @uid = args[:uid] if args.key?(:uid)
1824
+ @unit = args[:unit] if args.key?(:unit)
1825
+ @update_time = args[:update_time] if args.key?(:update_time)
1826
+ @upgrade = args[:upgrade] if args.key?(:upgrade)
1827
+ end
1828
+ end
1829
+
1830
+ # UnitOperationCondition describes the status of an Unit Operation.
1831
+ # UnitOperationCondition is individual components that contribute to an overall
1832
+ # state.
1833
+ class UnitOperationCondition
1834
+ include Google::Apis::Core::Hashable
1835
+
1836
+ # Required. Last time the condition transited from one status to another.
1837
+ # Corresponds to the JSON property `lastTransitionTime`
1838
+ # @return [String]
1839
+ attr_accessor :last_transition_time
1840
+
1841
+ # Required. Human readable message indicating details about the last transition.
1842
+ # Corresponds to the JSON property `message`
1843
+ # @return [String]
1844
+ attr_accessor :message
1845
+
1846
+ # Required. Brief reason for the condition's last transition.
1847
+ # Corresponds to the JSON property `reason`
1848
+ # @return [String]
1849
+ attr_accessor :reason
1850
+
1851
+ # Required. Status of the condition.
1852
+ # Corresponds to the JSON property `status`
1853
+ # @return [String]
1854
+ attr_accessor :status
1855
+
1856
+ # Required. Type of the condition.
1857
+ # Corresponds to the JSON property `type`
1858
+ # @return [String]
1859
+ attr_accessor :type
1860
+
1861
+ def initialize(**args)
1862
+ update!(**args)
1863
+ end
1864
+
1865
+ # Update properties of this object
1866
+ def update!(**args)
1867
+ @last_transition_time = args[:last_transition_time] if args.key?(:last_transition_time)
1868
+ @message = args[:message] if args.key?(:message)
1869
+ @reason = args[:reason] if args.key?(:reason)
1870
+ @status = args[:status] if args.key?(:status)
1871
+ @type = args[:type] if args.key?(:type)
1872
+ end
1873
+ end
1874
+
1875
+ # UnitVariable describes a parameter for a Unit.
1876
+ class UnitVariable
1877
+ include Google::Apis::Core::Hashable
1878
+
1879
+ # Optional. Immutable. Name of a supported variable type. Supported types are
1880
+ # string, int, bool.
1881
+ # Corresponds to the JSON property `type`
1882
+ # @return [String]
1883
+ attr_accessor :type
1884
+
1885
+ # Optional. String encoded value for the variable.
1886
+ # Corresponds to the JSON property `value`
1887
+ # @return [String]
1888
+ attr_accessor :value
1889
+
1890
+ # Required. Immutable. Name of the variable from actuation configs.
1891
+ # Corresponds to the JSON property `variable`
1892
+ # @return [String]
1893
+ attr_accessor :variable
1894
+
1895
+ def initialize(**args)
1896
+ update!(**args)
1897
+ end
1898
+
1899
+ # Update properties of this object
1900
+ def update!(**args)
1901
+ @type = args[:type] if args.key?(:type)
1902
+ @value = args[:value] if args.key?(:value)
1903
+ @variable = args[:variable] if args.key?(:variable)
1904
+ end
1905
+ end
1906
+
1907
+ # Upgrade is the unit operation that upgrades a provisioned unit, which may also
1908
+ # include the underlying resources represented by a Unit. Can only execute if
1909
+ # the Unit is currently provisioned.
1910
+ class Upgrade
1911
+ include Google::Apis::Core::Hashable
1912
+
1913
+ # Optional. Set of input variables. Maximum 100. (optional)
1914
+ # Corresponds to the JSON property `inputVariables`
1915
+ # @return [Array<Google::Apis::SaasservicemgmtV1beta1::UnitVariable>]
1916
+ attr_accessor :input_variables
1917
+
1918
+ # Optional. Reference to the Release object to use for the Unit. (optional).
1919
+ # Corresponds to the JSON property `release`
1920
+ # @return [String]
1921
+ attr_accessor :release
1922
+
1923
+ def initialize(**args)
1924
+ update!(**args)
1925
+ end
1926
+
1927
+ # Update properties of this object
1928
+ def update!(**args)
1929
+ @input_variables = args[:input_variables] if args.key?(:input_variables)
1930
+ @release = args[:release] if args.key?(:release)
1931
+ end
1932
+ end
1933
+
1934
+ # Mapping of input variables to their respective output variable for
1935
+ # depedenencies
1936
+ class VariableMapping
1937
+ include Google::Apis::Core::Hashable
1938
+
1939
+ # Output variables whose values will be passed on to dependencies
1940
+ # Corresponds to the JSON property `from`
1941
+ # @return [Google::Apis::SaasservicemgmtV1beta1::FromMapping]
1942
+ attr_accessor :from
1943
+
1944
+ # Input variables whose values will be passed on to dependencies
1945
+ # Corresponds to the JSON property `to`
1946
+ # @return [Google::Apis::SaasservicemgmtV1beta1::ToMapping]
1947
+ attr_accessor :to
1948
+
1949
+ # Required. name of the variable
1950
+ # Corresponds to the JSON property `variable`
1951
+ # @return [String]
1952
+ attr_accessor :variable
1953
+
1954
+ def initialize(**args)
1955
+ update!(**args)
1956
+ end
1957
+
1958
+ # Update properties of this object
1959
+ def update!(**args)
1960
+ @from = args[:from] if args.key?(:from)
1961
+ @to = args[:to] if args.key?(:to)
1962
+ @variable = args[:variable] if args.key?(:variable)
1963
+ end
1964
+ end
1965
+ end
1966
+ end
1967
+ end