google-apis-compute_v1 0.117.0 → 0.119.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.
@@ -1324,6 +1324,16 @@ module Google
1324
1324
  class AllocationResourceStatus
1325
1325
  include Google::Apis::Core::Hashable
1326
1326
 
1327
+ # The number of reservation blocks associated with this reservation.
1328
+ # Corresponds to the JSON property `reservationBlockCount`
1329
+ # @return [Fixnum]
1330
+ attr_accessor :reservation_block_count
1331
+
1332
+ # Maintenance Info for ReservationBlocks.
1333
+ # Corresponds to the JSON property `reservationMaintenance`
1334
+ # @return [Google::Apis::ComputeV1::GroupMaintenanceInfo]
1335
+ attr_accessor :reservation_maintenance
1336
+
1327
1337
  # Contains Properties set for the reservation.
1328
1338
  # Corresponds to the JSON property `specificSkuAllocation`
1329
1339
  # @return [Google::Apis::ComputeV1::AllocationResourceStatusSpecificSkuAllocation]
@@ -1335,6 +1345,8 @@ module Google
1335
1345
 
1336
1346
  # Update properties of this object
1337
1347
  def update!(**args)
1348
+ @reservation_block_count = args[:reservation_block_count] if args.key?(:reservation_block_count)
1349
+ @reservation_maintenance = args[:reservation_maintenance] if args.key?(:reservation_maintenance)
1338
1350
  @specific_sku_allocation = args[:specific_sku_allocation] if args.key?(:specific_sku_allocation)
1339
1351
  end
1340
1352
  end
@@ -2955,6 +2967,14 @@ module Google
2955
2967
  # @return [String]
2956
2968
  attr_accessor :kind
2957
2969
 
2970
+ # The value can only be INTERNAL_MANAGED for cross-region internal layer 7 load
2971
+ # balancer. If loadBalancingScheme is not specified, the backend bucket can be
2972
+ # used by classic global external load balancers, or global application external
2973
+ # load balancers, or both.
2974
+ # Corresponds to the JSON property `loadBalancingScheme`
2975
+ # @return [String]
2976
+ attr_accessor :load_balancing_scheme
2977
+
2958
2978
  # Name of the resource. Provided by the client when the resource is created. The
2959
2979
  # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
2960
2980
  # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
@@ -2991,6 +3011,7 @@ module Google
2991
3011
  @enable_cdn = args[:enable_cdn] if args.key?(:enable_cdn)
2992
3012
  @id = args[:id] if args.key?(:id)
2993
3013
  @kind = args[:kind] if args.key?(:kind)
3014
+ @load_balancing_scheme = args[:load_balancing_scheme] if args.key?(:load_balancing_scheme)
2994
3015
  @name = args[:name] if args.key?(:name)
2995
3016
  @self_link = args[:self_link] if args.key?(:self_link)
2996
3017
  @used_by = args[:used_by] if args.key?(:used_by)
@@ -3045,7 +3066,7 @@ module Google
3045
3066
  attr_accessor :client_ttl
3046
3067
 
3047
3068
  # Specifies the default TTL for cached content served by this origin for
3048
- # responses that do not have an existing valid TTL (max-age or s-max-age).
3069
+ # responses that do not have an existing valid TTL (max-age or s-maxage).
3049
3070
  # Setting a TTL of "0" means "always revalidate". The value of defaultTTL cannot
3050
3071
  # be set to a value greater than that of maxTTL, but can be equal. When the
3051
3072
  # cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set
@@ -3109,7 +3130,7 @@ module Google
3109
3130
  # that do not specify a max-stale directive. Stale responses that exceed the TTL
3110
3131
  # configured here will not be served. The default limit (max-stale) is 86400s (1
3111
3132
  # day), which will allow stale content to be served up to this limit beyond the
3112
- # max-age (or s-max-age) of a cached response. The maximum allowed value is
3133
+ # max-age (or s-maxage) of a cached response. The maximum allowed value is
3113
3134
  # 604800 (1 week). Set this to zero (0) to disable serve-while-stale.
3114
3135
  # Corresponds to the JSON property `serveWhileStale`
3115
3136
  # @return [Fixnum]
@@ -3513,6 +3534,32 @@ module Google
3513
3534
  attr_accessor :enable_cdn
3514
3535
  alias_method :enable_cdn?, :enable_cdn
3515
3536
 
3537
+ # Specifies the canary migration state. Possible values are PREPARE,
3538
+ # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC. To begin the migration from EXTERNAL
3539
+ # to EXTERNAL_MANAGED, the state must be changed to PREPARE. The state must be
3540
+ # changed to TEST_ALL_TRAFFIC before the loadBalancingScheme can be changed to
3541
+ # EXTERNAL_MANAGED. Optionally, the TEST_BY_PERCENTAGE state can be used to
3542
+ # migrate traffic by percentage using externalManagedMigrationTestingPercentage.
3543
+ # Rolling back a migration requires the states to be set in reverse order. So
3544
+ # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to be
3545
+ # set to TEST_ALL_TRAFFIC at the same time. Optionally, the TEST_BY_PERCENTAGE
3546
+ # state can be used to migrate some traffic back to EXTERNAL or PREPARE can be
3547
+ # used to migrate all traffic back to EXTERNAL.
3548
+ # Corresponds to the JSON property `externalManagedMigrationState`
3549
+ # @return [String]
3550
+ attr_accessor :external_managed_migration_state
3551
+
3552
+ # Determines the fraction of requests that should be processed by the Global
3553
+ # external Application Load Balancer. The value of this field must be in the
3554
+ # range [0, 100]. Session affinity options will slightly affect this routing
3555
+ # behavior, for more details, see: Session Affinity. This value can only be set
3556
+ # if the loadBalancingScheme in the BackendService is set to EXTERNAL (when
3557
+ # using the classic Application Load Balancer) and the migration state is
3558
+ # TEST_BY_PERCENTAGE.
3559
+ # Corresponds to the JSON property `externalManagedMigrationTestingPercentage`
3560
+ # @return [Float]
3561
+ attr_accessor :external_managed_migration_testing_percentage
3562
+
3516
3563
  # For load balancers that have configurable failover: [Internal passthrough
3517
3564
  # Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/
3518
3565
  # failover-overview) and [external passthrough Network Load Balancers](https://
@@ -3645,7 +3692,7 @@ module Google
3645
3692
  # faster table lookup build times and host selection times. For more information
3646
3693
  # about Maglev, see https://ai.google/research/pubs/pub44824 This field is
3647
3694
  # applicable to either: - A regional backend service with the service_protocol
3648
- # set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to
3695
+ # set to HTTP, HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
3649
3696
  # INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme
3650
3697
  # set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If
3651
3698
  # sessionAffinity is not configured—that is, if session affinity remains at the
@@ -3722,11 +3769,11 @@ module Google
3722
3769
  attr_accessor :port_name
3723
3770
 
3724
3771
  # The protocol this BackendService uses to communicate with backends. Possible
3725
- # values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen
3726
- # load balancer or Traffic Director configuration. Refer to the documentation
3727
- # for the load balancers or for Traffic Director for more information. Must be
3728
- # set to GRPC when the backend service is referenced by a URL map that is bound
3729
- # to target gRPC proxy.
3772
+ # values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC. depending on the
3773
+ # chosen load balancer or Traffic Director configuration. Refer to the
3774
+ # documentation for the load balancers or for Traffic Director for more
3775
+ # information. Must be set to GRPC when the backend service is referenced by a
3776
+ # URL map that is bound to target gRPC proxy.
3730
3777
  # Corresponds to the JSON property `protocol`
3731
3778
  # @return [String]
3732
3779
  attr_accessor :protocol
@@ -3829,6 +3876,8 @@ module Google
3829
3876
  @description = args[:description] if args.key?(:description)
3830
3877
  @edge_security_policy = args[:edge_security_policy] if args.key?(:edge_security_policy)
3831
3878
  @enable_cdn = args[:enable_cdn] if args.key?(:enable_cdn)
3879
+ @external_managed_migration_state = args[:external_managed_migration_state] if args.key?(:external_managed_migration_state)
3880
+ @external_managed_migration_testing_percentage = args[:external_managed_migration_testing_percentage] if args.key?(:external_managed_migration_testing_percentage)
3832
3881
  @failover_policy = args[:failover_policy] if args.key?(:failover_policy)
3833
3882
  @fingerprint = args[:fingerprint] if args.key?(:fingerprint)
3834
3883
  @ha_policy = args[:ha_policy] if args.key?(:ha_policy)
@@ -4034,7 +4083,7 @@ module Google
4034
4083
  attr_accessor :client_ttl
4035
4084
 
4036
4085
  # Specifies the default TTL for cached content served by this origin for
4037
- # responses that do not have an existing valid TTL (max-age or s-max-age).
4086
+ # responses that do not have an existing valid TTL (max-age or s-maxage).
4038
4087
  # Setting a TTL of "0" means "always revalidate". The value of defaultTTL cannot
4039
4088
  # be set to a value greater than that of maxTTL, but can be equal. When the
4040
4089
  # cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set
@@ -4098,7 +4147,7 @@ module Google
4098
4147
  # that do not specify a max-stale directive. Stale responses that exceed the TTL
4099
4148
  # configured here will not be served. The default limit (max-stale) is 86400s (1
4100
4149
  # day), which will allow stale content to be served up to this limit beyond the
4101
- # max-age (or s-max-age) of a cached response. The maximum allowed value is
4150
+ # max-age (or s-maxage) of a cached response. The maximum allowed value is
4102
4151
  # 604800 (1 week). Set this to zero (0) to disable serve-while-stale.
4103
4152
  # Corresponds to the JSON property `serveWhileStale`
4104
4153
  # @return [Fixnum]
@@ -4427,16 +4476,28 @@ module Google
4427
4476
  # one of its backends is 64. - The maximum number of backend services with
4428
4477
  # fastIPMove in a VPC in a region is 64. - The network endpoints that are
4429
4478
  # attached to a backend of a backend service with fastIPMove cannot resolve to
4430
- # C3 machines. - Traffic directed to the leader by a static route next hop will
4431
- # not be redirected to a new leader by fast failover. Such traffic will only be
4432
- # redirected once an haPolicy.leader update has taken effect. Only traffic to
4433
- # the forwarding rule's virtual IP will be redirected to a new leader by fast
4434
- # failover. haPolicy.fastIPMove can be set only at backend service creation time.
4435
- # Once set, it cannot be updated. By default, fastIpMove is set to DISABLED.
4479
+ # Gen3+ machines for IPv6. - Traffic directed to the leader by a static route
4480
+ # next hop will not be redirected to a new leader by fast failover. Such traffic
4481
+ # will only be redirected once an haPolicy.leader update has taken effect. Only
4482
+ # traffic to the forwarding rule's virtual IP will be redirected to a new leader
4483
+ # by fast failover. haPolicy.fastIPMove can be set only at backend service
4484
+ # creation time. Once set, it cannot be updated. By default, fastIpMove is set
4485
+ # to DISABLED.
4436
4486
  # Corresponds to the JSON property `fastIPMove`
4437
4487
  # @return [String]
4438
4488
  attr_accessor :fast_ip_move
4439
4489
 
4490
+ # Selects one of the network endpoints attached to the backend NEGs of this
4491
+ # service as the active endpoint (the leader) that receives all traffic. When
4492
+ # the leader changes, there is no connection draining to persist existing
4493
+ # connections on the old leader. You are responsible for selecting a suitable
4494
+ # endpoint as the leader. For example, preferring a healthy endpoint over
4495
+ # unhealthy ones. Note that this service does not track backend endpoint health,
4496
+ # and selects the configured leader unconditionally.
4497
+ # Corresponds to the JSON property `leader`
4498
+ # @return [Google::Apis::ComputeV1::BackendServiceHaPolicyLeader]
4499
+ attr_accessor :leader
4500
+
4440
4501
  def initialize(**args)
4441
4502
  update!(**args)
4442
4503
  end
@@ -4444,6 +4505,62 @@ module Google
4444
4505
  # Update properties of this object
4445
4506
  def update!(**args)
4446
4507
  @fast_ip_move = args[:fast_ip_move] if args.key?(:fast_ip_move)
4508
+ @leader = args[:leader] if args.key?(:leader)
4509
+ end
4510
+ end
4511
+
4512
+ #
4513
+ class BackendServiceHaPolicyLeader
4514
+ include Google::Apis::Core::Hashable
4515
+
4516
+ # A fully-qualified URL (starting with https://www.googleapis.com/) of the zonal
4517
+ # Network Endpoint Group (NEG) with `GCE_VM_IP` endpoints that the leader is
4518
+ # attached to. The leader's backendGroup must already be specified as a backend
4519
+ # of this backend service. Removing a backend that is designated as the leader's
4520
+ # backendGroup is not permitted.
4521
+ # Corresponds to the JSON property `backendGroup`
4522
+ # @return [String]
4523
+ attr_accessor :backend_group
4524
+
4525
+ # The network endpoint within the leader.backendGroup that is designated as the
4526
+ # leader. This network endpoint cannot be detached from the NEG specified in the
4527
+ # haPolicy.leader.backendGroup until the leader is updated with another network
4528
+ # endpoint, or the leader is removed from the haPolicy.
4529
+ # Corresponds to the JSON property `networkEndpoint`
4530
+ # @return [Google::Apis::ComputeV1::BackendServiceHaPolicyLeaderNetworkEndpoint]
4531
+ attr_accessor :network_endpoint
4532
+
4533
+ def initialize(**args)
4534
+ update!(**args)
4535
+ end
4536
+
4537
+ # Update properties of this object
4538
+ def update!(**args)
4539
+ @backend_group = args[:backend_group] if args.key?(:backend_group)
4540
+ @network_endpoint = args[:network_endpoint] if args.key?(:network_endpoint)
4541
+ end
4542
+ end
4543
+
4544
+ #
4545
+ class BackendServiceHaPolicyLeaderNetworkEndpoint
4546
+ include Google::Apis::Core::Hashable
4547
+
4548
+ # The name of the VM instance of the leader network endpoint. The instance must
4549
+ # already be attached to the NEG specified in the haPolicy.leader.backendGroup.
4550
+ # The name must be 1-63 characters long, and comply with RFC1035. Authorization
4551
+ # requires the following IAM permission on the specified resource instance:
4552
+ # compute.instances.use
4553
+ # Corresponds to the JSON property `instance`
4554
+ # @return [String]
4555
+ attr_accessor :instance
4556
+
4557
+ def initialize(**args)
4558
+ update!(**args)
4559
+ end
4560
+
4561
+ # Update properties of this object
4562
+ def update!(**args)
4563
+ @instance = args[:instance] if args.key?(:instance)
4447
4564
  end
4448
4565
  end
4449
4566
 
@@ -5644,6 +5761,16 @@ module Google
5644
5761
  class CacheInvalidationRule
5645
5762
  include Google::Apis::Core::Hashable
5646
5763
 
5764
+ # A list of cache tags used to identify cached objects. - Cache tags are
5765
+ # specified when the response is first cached, by setting the `Cache-Tag`
5766
+ # response header at the origin. - Multiple cache tags in the same invalidation
5767
+ # request are treated as Boolean `OR` - for example, `tag1 OR tag2 OR tag3`. -
5768
+ # If other fields are also specified, these are treated as Boolean `AND` with
5769
+ # any tags. Up to 10 tags can be specified in a single invalidation request.
5770
+ # Corresponds to the JSON property `cacheTags`
5771
+ # @return [Array<String>]
5772
+ attr_accessor :cache_tags
5773
+
5647
5774
  # If set, this invalidation rule will only apply to requests with a Host header
5648
5775
  # matching host.
5649
5776
  # Corresponds to the JSON property `host`
@@ -5661,6 +5788,7 @@ module Google
5661
5788
 
5662
5789
  # Update properties of this object
5663
5790
  def update!(**args)
5791
+ @cache_tags = args[:cache_tags] if args.key?(:cache_tags)
5664
5792
  @host = args[:host] if args.key?(:host)
5665
5793
  @path = args[:path] if args.key?(:path)
5666
5794
  end
@@ -10209,6 +10337,33 @@ module Google
10209
10337
  # @return [String]
10210
10338
  attr_accessor :description
10211
10339
 
10340
+ # Specifies the canary migration state for the backend buckets attached to this
10341
+ # forwarding rule. Possible values are PREPARE, TEST_BY_PERCENTAGE, and
10342
+ # TEST_ALL_TRAFFIC. To begin the migration from EXTERNAL to EXTERNAL_MANAGED,
10343
+ # the state must be changed to PREPARE. The state must be changed to
10344
+ # TEST_ALL_TRAFFIC before the loadBalancingScheme can be changed to
10345
+ # EXTERNAL_MANAGED. Optionally, the TEST_BY_PERCENTAGE state can be used to
10346
+ # migrate traffic to backend buckets attached to this forwarding rule by
10347
+ # percentage using externalManagedBackendBucketMigrationTestingPercentage.
10348
+ # Rolling back a migration requires the states to be set in reverse order. So
10349
+ # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to be
10350
+ # set to TEST_ALL_TRAFFIC at the same time. Optionally, the TEST_BY_PERCENTAGE
10351
+ # state can be used to migrate some traffic back to EXTERNAL or PREPARE can be
10352
+ # used to migrate all traffic back to EXTERNAL.
10353
+ # Corresponds to the JSON property `externalManagedBackendBucketMigrationState`
10354
+ # @return [String]
10355
+ attr_accessor :external_managed_backend_bucket_migration_state
10356
+
10357
+ # Determines the fraction of requests to backend buckets that should be
10358
+ # processed by the global external Application Load Balancer. The value of this
10359
+ # field must be in the range [0, 100]. This value can only be set if the
10360
+ # loadBalancingScheme in the BackendService is set to EXTERNAL (when using the
10361
+ # classic Application Load Balancer) and the migration state is
10362
+ # TEST_BY_PERCENTAGE.
10363
+ # Corresponds to the JSON property `externalManagedBackendBucketMigrationTestingPercentage`
10364
+ # @return [Float]
10365
+ attr_accessor :external_managed_backend_bucket_migration_testing_percentage
10366
+
10212
10367
  # Fingerprint of this resource. A hash of the contents stored in this object.
10213
10368
  # This field is used in optimistic locking. This field will be ignored when
10214
10369
  # inserting a ForwardingRule. Include the fingerprint in patch request to ensure
@@ -10479,6 +10634,8 @@ module Google
10479
10634
  @base_forwarding_rule = args[:base_forwarding_rule] if args.key?(:base_forwarding_rule)
10480
10635
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
10481
10636
  @description = args[:description] if args.key?(:description)
10637
+ @external_managed_backend_bucket_migration_state = args[:external_managed_backend_bucket_migration_state] if args.key?(:external_managed_backend_bucket_migration_state)
10638
+ @external_managed_backend_bucket_migration_testing_percentage = args[:external_managed_backend_bucket_migration_testing_percentage] if args.key?(:external_managed_backend_bucket_migration_testing_percentage)
10482
10639
  @fingerprint = args[:fingerprint] if args.key?(:fingerprint)
10483
10640
  @id = args[:id] if args.key?(:id)
10484
10641
  @ip_collection = args[:ip_collection] if args.key?(:ip_collection)
@@ -11176,6 +11333,45 @@ module Google
11176
11333
  end
11177
11334
  end
11178
11335
 
11336
+ # Maintenance Info for ReservationBlocks.
11337
+ class GroupMaintenanceInfo
11338
+ include Google::Apis::Core::Hashable
11339
+
11340
+ # Progress for ongoing maintenance for this group of VMs/hosts. Describes number
11341
+ # of hosts in the block that have ongoing maintenance.
11342
+ # Corresponds to the JSON property `maintenanceOngoingCount`
11343
+ # @return [Fixnum]
11344
+ attr_accessor :maintenance_ongoing_count
11345
+
11346
+ # Progress for ongoing maintenance for this group of VMs/hosts. Describes number
11347
+ # of hosts in the block that have pending maintenance.
11348
+ # Corresponds to the JSON property `maintenancePendingCount`
11349
+ # @return [Fixnum]
11350
+ attr_accessor :maintenance_pending_count
11351
+
11352
+ # The type of maintenance for the reservation.
11353
+ # Corresponds to the JSON property `schedulingType`
11354
+ # @return [String]
11355
+ attr_accessor :scheduling_type
11356
+
11357
+ # Upcoming Maintenance notification information.
11358
+ # Corresponds to the JSON property `upcomingGroupMaintenance`
11359
+ # @return [Google::Apis::ComputeV1::UpcomingMaintenance]
11360
+ attr_accessor :upcoming_group_maintenance
11361
+
11362
+ def initialize(**args)
11363
+ update!(**args)
11364
+ end
11365
+
11366
+ # Update properties of this object
11367
+ def update!(**args)
11368
+ @maintenance_ongoing_count = args[:maintenance_ongoing_count] if args.key?(:maintenance_ongoing_count)
11369
+ @maintenance_pending_count = args[:maintenance_pending_count] if args.key?(:maintenance_pending_count)
11370
+ @scheduling_type = args[:scheduling_type] if args.key?(:scheduling_type)
11371
+ @upcoming_group_maintenance = args[:upcoming_group_maintenance] if args.key?(:upcoming_group_maintenance)
11372
+ end
11373
+ end
11374
+
11179
11375
  # A guest attributes entry.
11180
11376
  class GuestAttributes
11181
11377
  include Google::Apis::Core::Hashable
@@ -11285,8 +11481,8 @@ module Google
11285
11481
  # values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE -
11286
11482
  # WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE -
11287
11483
  # SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE_V2 - SEV_SNP_CAPABLE -
11288
- # TDX_CAPABLE - IDPF For more information, see Enabling guest operating system
11289
- # features.
11484
+ # TDX_CAPABLE - IDPF - SNP_SVSM_CAPABLE For more information, see Enabling guest
11485
+ # operating system features.
11290
11486
  # Corresponds to the JSON property `type`
11291
11487
  # @return [String]
11292
11488
  attr_accessor :type
@@ -18891,7 +19087,7 @@ module Google
18891
19087
  class InstancesReportHostAsFaultyRequest
18892
19088
  include Google::Apis::Core::Hashable
18893
19089
 
18894
- # The disruption schedule for the VM. Default to IMMEDIATE.
19090
+ # The disruption schedule for the VM. Required field, only allows IMMEDIATE.
18895
19091
  # Corresponds to the JSON property `disruptionSchedule`
18896
19092
  # @return [String]
18897
19093
  attr_accessor :disruption_schedule
@@ -19830,6 +20026,12 @@ module Google
19830
20026
  # @return [Array<String>]
19831
20027
  attr_accessor :interconnect_attachments
19832
20028
 
20029
+ # [Output Only] URLs of InterconnectGroups that include this Interconnect. Order
20030
+ # is arbitrary and items are unique.
20031
+ # Corresponds to the JSON property `interconnectGroups`
20032
+ # @return [Array<String>]
20033
+ attr_accessor :interconnect_groups
20034
+
19833
20035
  # Type of interconnect, which can take one of the following values: - PARTNER: A
19834
20036
  # partner-managed interconnection shared between customers though a partner. -
19835
20037
  # DEDICATED: A dedicated physical interconnection with the customer. Note that a
@@ -19996,6 +20198,7 @@ module Google
19996
20198
  @google_reference_id = args[:google_reference_id] if args.key?(:google_reference_id)
19997
20199
  @id = args[:id] if args.key?(:id)
19998
20200
  @interconnect_attachments = args[:interconnect_attachments] if args.key?(:interconnect_attachments)
20201
+ @interconnect_groups = args[:interconnect_groups] if args.key?(:interconnect_groups)
19999
20202
  @interconnect_type = args[:interconnect_type] if args.key?(:interconnect_type)
20000
20203
  @kind = args[:kind] if args.key?(:kind)
20001
20204
  @label_fingerprint = args[:label_fingerprint] if args.key?(:label_fingerprint)
@@ -20032,6 +20235,11 @@ module Google
20032
20235
  attr_accessor :admin_enabled
20033
20236
  alias_method :admin_enabled?, :admin_enabled
20034
20237
 
20238
+ # [Output Only] URL of the AttachmentGroup that includes this Attachment.
20239
+ # Corresponds to the JSON property `attachmentGroup`
20240
+ # @return [String]
20241
+ attr_accessor :attachment_group
20242
+
20035
20243
  # Provisioned bandwidth capacity for the interconnect attachment. For
20036
20244
  # attachments of type DEDICATED, the user can set the bandwidth. For attachments
20037
20245
  # of type PARTNER, the Google Partner that is operating the interconnect must
@@ -20352,6 +20560,7 @@ module Google
20352
20560
  # Update properties of this object
20353
20561
  def update!(**args)
20354
20562
  @admin_enabled = args[:admin_enabled] if args.key?(:admin_enabled)
20563
+ @attachment_group = args[:attachment_group] if args.key?(:attachment_group)
20355
20564
  @bandwidth = args[:bandwidth] if args.key?(:bandwidth)
20356
20565
  @candidate_ipv6_subnets = args[:candidate_ipv6_subnets] if args.key?(:candidate_ipv6_subnets)
20357
20566
  @candidate_subnets = args[:candidate_subnets] if args.key?(:candidate_subnets)
@@ -20581,22 +20790,432 @@ module Google
20581
20790
  end
20582
20791
  end
20583
20792
 
20584
- # Response to the list request, and contains a list of interconnect attachments.
20585
- class InterconnectAttachmentList
20793
+ # An interconnect attachment group resource allows customers to create, analyze,
20794
+ # and expand highly available deployments.
20795
+ class InterconnectAttachmentGroup
20796
+ include Google::Apis::Core::Hashable
20797
+
20798
+ # Attachments in the AttachmentGroup. Keys are arbitrary user-specified strings.
20799
+ # Users are encouraged, but not required, to use their preferred format for
20800
+ # resource links as keys. Note that there are add-members and remove-members
20801
+ # methods in gcloud. The size of this map is limited by an "Attachments per
20802
+ # group" quota.
20803
+ # Corresponds to the JSON property `attachments`
20804
+ # @return [Hash<String,Google::Apis::ComputeV1::InterconnectAttachmentGroupAttachment>]
20805
+ attr_accessor :attachments
20806
+
20807
+ # [Output Only] The redundancy this group is configured to support. The way a
20808
+ # user queries what SLA their Attachment gets is by looking at this field of the
20809
+ # Attachment's AttachmentGroup.
20810
+ # Corresponds to the JSON property `configured`
20811
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupConfigured]
20812
+ attr_accessor :configured
20813
+
20814
+ # [Output Only] Creation timestamp in RFC3339 text format.
20815
+ # Corresponds to the JSON property `creationTimestamp`
20816
+ # @return [String]
20817
+ attr_accessor :creation_timestamp
20818
+
20819
+ # An optional description of this resource. Provide this property when you
20820
+ # create the resource.
20821
+ # Corresponds to the JSON property `description`
20822
+ # @return [String]
20823
+ attr_accessor :description
20824
+
20825
+ # Opaque system-generated token that uniquely identifies the configuration. If
20826
+ # provided when patching a configuration in update mode, the provided token must
20827
+ # match the current token or the update is rejected. This provides a reliable
20828
+ # means of doing read-modify-write (optimistic locking) as described by AIP 154.
20829
+ # Corresponds to the JSON property `etag`
20830
+ # @return [String]
20831
+ attr_accessor :etag
20832
+
20833
+ # [Output Only] The unique identifier for the resource type. The server
20834
+ # generates this identifier.
20835
+ # Corresponds to the JSON property `id`
20836
+ # @return [Fixnum]
20837
+ attr_accessor :id
20838
+
20839
+ # The user's intent for this AttachmentGroup. This is the only required field
20840
+ # besides the name that must be specified on group creation.
20841
+ # Corresponds to the JSON property `intent`
20842
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupIntent]
20843
+ attr_accessor :intent
20844
+
20845
+ # The URL of an InterconnectGroup that groups these Attachments' Interconnects.
20846
+ # Customers do not need to set this unless directed by Google Support.
20847
+ # Corresponds to the JSON property `interconnectGroup`
20848
+ # @return [String]
20849
+ attr_accessor :interconnect_group
20850
+
20851
+ # [Output Only] Type of the resource. Always compute#interconnectAttachmentGroup.
20852
+ # Corresponds to the JSON property `kind`
20853
+ # @return [String]
20854
+ attr_accessor :kind
20855
+
20856
+ # [Output Only] An analysis of the logical layout of Attachments in this group.
20857
+ # Every Attachment in the group is shown once in this structure.
20858
+ # Corresponds to the JSON property `logicalStructure`
20859
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupLogicalStructure]
20860
+ attr_accessor :logical_structure
20861
+
20862
+ # Name of the resource. Provided by the client when the resource is created. The
20863
+ # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
20864
+ # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
20865
+ # z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter,
20866
+ # and all following characters must be a dash, lowercase letter, or digit,
20867
+ # except the last character, which cannot be a dash.
20868
+ # Corresponds to the JSON property `name`
20869
+ # @return [String]
20870
+ attr_accessor :name
20871
+
20872
+ # [Output Only] Server-defined URL for the resource.
20873
+ # Corresponds to the JSON property `selfLink`
20874
+ # @return [String]
20875
+ attr_accessor :self_link
20876
+
20877
+ def initialize(**args)
20878
+ update!(**args)
20879
+ end
20880
+
20881
+ # Update properties of this object
20882
+ def update!(**args)
20883
+ @attachments = args[:attachments] if args.key?(:attachments)
20884
+ @configured = args[:configured] if args.key?(:configured)
20885
+ @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
20886
+ @description = args[:description] if args.key?(:description)
20887
+ @etag = args[:etag] if args.key?(:etag)
20888
+ @id = args[:id] if args.key?(:id)
20889
+ @intent = args[:intent] if args.key?(:intent)
20890
+ @interconnect_group = args[:interconnect_group] if args.key?(:interconnect_group)
20891
+ @kind = args[:kind] if args.key?(:kind)
20892
+ @logical_structure = args[:logical_structure] if args.key?(:logical_structure)
20893
+ @name = args[:name] if args.key?(:name)
20894
+ @self_link = args[:self_link] if args.key?(:self_link)
20895
+ end
20896
+ end
20897
+
20898
+ # An Attachment in this AttachmentGroup.
20899
+ class InterconnectAttachmentGroupAttachment
20900
+ include Google::Apis::Core::Hashable
20901
+
20902
+ #
20903
+ # Corresponds to the JSON property `attachment`
20904
+ # @return [String]
20905
+ attr_accessor :attachment
20906
+
20907
+ def initialize(**args)
20908
+ update!(**args)
20909
+ end
20910
+
20911
+ # Update properties of this object
20912
+ def update!(**args)
20913
+ @attachment = args[:attachment] if args.key?(:attachment)
20914
+ end
20915
+ end
20916
+
20917
+ # [Output Only] The redundancy this group is configured to support. The way a
20918
+ # user queries what SLA their Attachment gets is by looking at this field of the
20919
+ # Attachment's AttachmentGroup.
20920
+ class InterconnectAttachmentGroupConfigured
20921
+ include Google::Apis::Core::Hashable
20922
+
20923
+ # [Output Only] Which SLA this group is configured to support, and why this
20924
+ # group does or does not meet that SLA's requirements.
20925
+ # Corresponds to the JSON property `availabilitySla`
20926
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupConfiguredAvailabilitySla]
20927
+ attr_accessor :availability_sla
20928
+
20929
+ def initialize(**args)
20930
+ update!(**args)
20931
+ end
20932
+
20933
+ # Update properties of this object
20934
+ def update!(**args)
20935
+ @availability_sla = args[:availability_sla] if args.key?(:availability_sla)
20936
+ end
20937
+ end
20938
+
20939
+ # [Output Only] Which SLA this group is configured to support, and why this
20940
+ # group does or does not meet that SLA's requirements.
20941
+ class InterconnectAttachmentGroupConfiguredAvailabilitySla
20942
+ include Google::Apis::Core::Hashable
20943
+
20944
+ #
20945
+ # Corresponds to the JSON property `effectiveSla`
20946
+ # @return [String]
20947
+ attr_accessor :effective_sla
20948
+
20949
+ #
20950
+ # Corresponds to the JSON property `intendedSlaBlockers`
20951
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlockers>]
20952
+ attr_accessor :intended_sla_blockers
20953
+
20954
+ def initialize(**args)
20955
+ update!(**args)
20956
+ end
20957
+
20958
+ # Update properties of this object
20959
+ def update!(**args)
20960
+ @effective_sla = args[:effective_sla] if args.key?(:effective_sla)
20961
+ @intended_sla_blockers = args[:intended_sla_blockers] if args.key?(:intended_sla_blockers)
20962
+ end
20963
+ end
20964
+
20965
+ # [Output Only] Reasons why configuration.availabilitySLA.sla differs from
20966
+ # intent.availabilitySLA. This list is empty if and only if those are the same.
20967
+ class InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlockers
20968
+ include Google::Apis::Core::Hashable
20969
+
20970
+ # [Output Only] URLs of any particular Attachments to explain this blocker in
20971
+ # more detail.
20972
+ # Corresponds to the JSON property `attachments`
20973
+ # @return [Array<String>]
20974
+ attr_accessor :attachments
20975
+
20976
+ #
20977
+ # Corresponds to the JSON property `blockerType`
20978
+ # @return [String]
20979
+ attr_accessor :blocker_type
20980
+
20981
+ # [Output Only] The url of Google Cloud public documentation explaining this
20982
+ # requirement. This is set for every type of requirement.
20983
+ # Corresponds to the JSON property `documentationLink`
20984
+ # @return [String]
20985
+ attr_accessor :documentation_link
20986
+
20987
+ # [Output Only] A human-readable explanation of this requirement and why it's
20988
+ # not met. This is set for every type of requirement.
20989
+ # Corresponds to the JSON property `explanation`
20990
+ # @return [String]
20991
+ attr_accessor :explanation
20992
+
20993
+ # [Output Only] Metros used to explain this blocker in more detail. These are
20994
+ # three-letter lowercase strings like "iad". This will be set for some blockers (
20995
+ # like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does not apply to others.
20996
+ # Corresponds to the JSON property `metros`
20997
+ # @return [Array<String>]
20998
+ attr_accessor :metros
20999
+
21000
+ # [Output Only] Regions used to explain this blocker in more detail. These are
21001
+ # region names formatted like "us-central1". This will be set for some blockers (
21002
+ # like INCOMPATIBLE_REGIONS) but does not apply to others.
21003
+ # Corresponds to the JSON property `regions`
21004
+ # @return [Array<String>]
21005
+ attr_accessor :regions
21006
+
21007
+ # [Output Only] Zones used to explain this blocker in more detail. Format is "
21008
+ # zone1" and/or "zone2". This will be set for some blockers (like MISSING_ZONE)
21009
+ # but does not apply to others.
21010
+ # Corresponds to the JSON property `zones`
21011
+ # @return [Array<String>]
21012
+ attr_accessor :zones
21013
+
21014
+ def initialize(**args)
21015
+ update!(**args)
21016
+ end
21017
+
21018
+ # Update properties of this object
21019
+ def update!(**args)
21020
+ @attachments = args[:attachments] if args.key?(:attachments)
21021
+ @blocker_type = args[:blocker_type] if args.key?(:blocker_type)
21022
+ @documentation_link = args[:documentation_link] if args.key?(:documentation_link)
21023
+ @explanation = args[:explanation] if args.key?(:explanation)
21024
+ @metros = args[:metros] if args.key?(:metros)
21025
+ @regions = args[:regions] if args.key?(:regions)
21026
+ @zones = args[:zones] if args.key?(:zones)
21027
+ end
21028
+ end
21029
+
21030
+ # The user's intent for this AttachmentGroup. This is the only required field
21031
+ # besides the name that must be specified on group creation.
21032
+ class InterconnectAttachmentGroupIntent
21033
+ include Google::Apis::Core::Hashable
21034
+
21035
+ #
21036
+ # Corresponds to the JSON property `availabilitySla`
21037
+ # @return [String]
21038
+ attr_accessor :availability_sla
21039
+
21040
+ def initialize(**args)
21041
+ update!(**args)
21042
+ end
21043
+
21044
+ # Update properties of this object
21045
+ def update!(**args)
21046
+ @availability_sla = args[:availability_sla] if args.key?(:availability_sla)
21047
+ end
21048
+ end
21049
+
21050
+ # [Output Only] An analysis of the logical layout of Attachments in this group.
21051
+ # Every Attachment in the group is shown once in this structure.
21052
+ class InterconnectAttachmentGroupLogicalStructure
21053
+ include Google::Apis::Core::Hashable
21054
+
21055
+ #
21056
+ # Corresponds to the JSON property `regions`
21057
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupLogicalStructureRegion>]
21058
+ attr_accessor :regions
21059
+
21060
+ def initialize(**args)
21061
+ update!(**args)
21062
+ end
21063
+
21064
+ # Update properties of this object
21065
+ def update!(**args)
21066
+ @regions = args[:regions] if args.key?(:regions)
21067
+ end
21068
+ end
21069
+
21070
+ # [Output Only] The regions Attachments in this group are in.
21071
+ class InterconnectAttachmentGroupLogicalStructureRegion
21072
+ include Google::Apis::Core::Hashable
21073
+
21074
+ #
21075
+ # Corresponds to the JSON property `metros`
21076
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupLogicalStructureRegionMetro>]
21077
+ attr_accessor :metros
21078
+
21079
+ # [Output Only] The name of a region, like "us-central1".
21080
+ # Corresponds to the JSON property `region`
21081
+ # @return [String]
21082
+ attr_accessor :region
21083
+
21084
+ def initialize(**args)
21085
+ update!(**args)
21086
+ end
21087
+
21088
+ # Update properties of this object
21089
+ def update!(**args)
21090
+ @metros = args[:metros] if args.key?(:metros)
21091
+ @region = args[:region] if args.key?(:region)
21092
+ end
21093
+ end
21094
+
21095
+ # [Output Only] The metros of Attachments in this group in this region.
21096
+ class InterconnectAttachmentGroupLogicalStructureRegionMetro
20586
21097
  include Google::Apis::Core::Hashable
20587
21098
 
21099
+ #
21100
+ # Corresponds to the JSON property `facilities`
21101
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupLogicalStructureRegionMetroFacility>]
21102
+ attr_accessor :facilities
21103
+
21104
+ # [Output Only] The name of the metro, as a three-letter lowercase string like "
21105
+ # iad". This is the first component of the location of an Interconnect.
21106
+ # Corresponds to the JSON property `metro`
21107
+ # @return [String]
21108
+ attr_accessor :metro
21109
+
21110
+ def initialize(**args)
21111
+ update!(**args)
21112
+ end
21113
+
21114
+ # Update properties of this object
21115
+ def update!(**args)
21116
+ @facilities = args[:facilities] if args.key?(:facilities)
21117
+ @metro = args[:metro] if args.key?(:metro)
21118
+ end
21119
+ end
21120
+
21121
+ # [Output Only] The facilities used for this group's Attachments' Interconnects.
21122
+ class InterconnectAttachmentGroupLogicalStructureRegionMetroFacility
21123
+ include Google::Apis::Core::Hashable
21124
+
21125
+ # [Output Only] The name of a facility, like "iad-1234".
21126
+ # Corresponds to the JSON property `facility`
21127
+ # @return [String]
21128
+ attr_accessor :facility
21129
+
21130
+ #
21131
+ # Corresponds to the JSON property `zones`
21132
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone>]
21133
+ attr_accessor :zones
21134
+
21135
+ def initialize(**args)
21136
+ update!(**args)
21137
+ end
21138
+
21139
+ # Update properties of this object
21140
+ def update!(**args)
21141
+ @facility = args[:facility] if args.key?(:facility)
21142
+ @zones = args[:zones] if args.key?(:zones)
21143
+ end
21144
+ end
21145
+
21146
+ # [Output Only] The zones that Attachments in this group are present in, in the
21147
+ # given facilities. This is inherited from their Interconnects.
21148
+ class InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone
21149
+ include Google::Apis::Core::Hashable
21150
+
21151
+ # [Output Only] URLs of Attachments in the given zone, to the given region, on
21152
+ # Interconnects in the given facility and metro. Every Attachment in the AG has
21153
+ # such an entry.
21154
+ # Corresponds to the JSON property `attachments`
21155
+ # @return [Array<String>]
21156
+ attr_accessor :attachments
21157
+
21158
+ # [Output Only] The name of a zone, either "zone1" or "zone2".
21159
+ # Corresponds to the JSON property `zone`
21160
+ # @return [String]
21161
+ attr_accessor :zone
21162
+
21163
+ def initialize(**args)
21164
+ update!(**args)
21165
+ end
21166
+
21167
+ # Update properties of this object
21168
+ def update!(**args)
21169
+ @attachments = args[:attachments] if args.key?(:attachments)
21170
+ @zone = args[:zone] if args.key?(:zone)
21171
+ end
21172
+ end
21173
+
21174
+ # Response for the InterconnectAttachmentGroupsGetOperationalStatusResponse.
21175
+ class InterconnectAttachmentGroupsGetOperationalStatusResponse
21176
+ include Google::Apis::Core::Hashable
21177
+
21178
+ #
21179
+ # Corresponds to the JSON property `etag`
21180
+ # @return [String]
21181
+ attr_accessor :etag
21182
+
21183
+ #
21184
+ # Corresponds to the JSON property `result`
21185
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupsOperationalStatus]
21186
+ attr_accessor :result
21187
+
21188
+ def initialize(**args)
21189
+ update!(**args)
21190
+ end
21191
+
21192
+ # Update properties of this object
21193
+ def update!(**args)
21194
+ @etag = args[:etag] if args.key?(:etag)
21195
+ @result = args[:result] if args.key?(:result)
21196
+ end
21197
+ end
21198
+
21199
+ #
21200
+ class InterconnectAttachmentGroupsListResponse
21201
+ include Google::Apis::Core::Hashable
21202
+
21203
+ #
21204
+ # Corresponds to the JSON property `etag`
21205
+ # @return [String]
21206
+ attr_accessor :etag
21207
+
20588
21208
  # [Output Only] Unique identifier for the resource; defined by the server.
20589
21209
  # Corresponds to the JSON property `id`
20590
21210
  # @return [String]
20591
21211
  attr_accessor :id
20592
21212
 
20593
- # A list of InterconnectAttachment resources.
21213
+ # A list of InterconnectAttachmentGroup resources.
20594
21214
  # Corresponds to the JSON property `items`
20595
- # @return [Array<Google::Apis::ComputeV1::InterconnectAttachment>]
21215
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroup>]
20596
21216
  attr_accessor :items
20597
21217
 
20598
- # [Output Only] Type of resource. Always compute#interconnectAttachmentList for
20599
- # lists of interconnect attachments.
21218
+ #
20600
21219
  # Corresponds to the JSON property `kind`
20601
21220
  # @return [String]
20602
21221
  attr_accessor :kind
@@ -20615,9 +21234,15 @@ module Google
20615
21234
  # @return [String]
20616
21235
  attr_accessor :self_link
20617
21236
 
21237
+ # [Output Only] Unreachable resources. end_interface:
21238
+ # MixerListResponseWithEtagBuilder
21239
+ # Corresponds to the JSON property `unreachables`
21240
+ # @return [Array<String>]
21241
+ attr_accessor :unreachables
21242
+
20618
21243
  # [Output Only] Informational warning message.
20619
21244
  # Corresponds to the JSON property `warning`
20620
- # @return [Google::Apis::ComputeV1::InterconnectAttachmentList::Warning]
21245
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse::Warning]
20621
21246
  attr_accessor :warning
20622
21247
 
20623
21248
  def initialize(**args)
@@ -20626,11 +21251,13 @@ module Google
20626
21251
 
20627
21252
  # Update properties of this object
20628
21253
  def update!(**args)
21254
+ @etag = args[:etag] if args.key?(:etag)
20629
21255
  @id = args[:id] if args.key?(:id)
20630
21256
  @items = args[:items] if args.key?(:items)
20631
21257
  @kind = args[:kind] if args.key?(:kind)
20632
21258
  @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
20633
21259
  @self_link = args[:self_link] if args.key?(:self_link)
21260
+ @unreachables = args[:unreachables] if args.key?(:unreachables)
20634
21261
  @warning = args[:warning] if args.key?(:warning)
20635
21262
  end
20636
21263
 
@@ -20647,7 +21274,217 @@ module Google
20647
21274
  # [Output Only] Metadata about this warning in key: value format. For example: "
20648
21275
  # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
20649
21276
  # Corresponds to the JSON property `data`
20650
- # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentList::Warning::Datum>]
21277
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse::Warning::Datum>]
21278
+ attr_accessor :data
21279
+
21280
+ # [Output Only] A human-readable description of the warning code.
21281
+ # Corresponds to the JSON property `message`
21282
+ # @return [String]
21283
+ attr_accessor :message
21284
+
21285
+ def initialize(**args)
21286
+ update!(**args)
21287
+ end
21288
+
21289
+ # Update properties of this object
21290
+ def update!(**args)
21291
+ @code = args[:code] if args.key?(:code)
21292
+ @data = args[:data] if args.key?(:data)
21293
+ @message = args[:message] if args.key?(:message)
21294
+ end
21295
+
21296
+ #
21297
+ class Datum
21298
+ include Google::Apis::Core::Hashable
21299
+
21300
+ # [Output Only] A key that provides more detail on the warning being returned.
21301
+ # For example, for warnings where there are no results in a list request for a
21302
+ # particular zone, this key might be scope and the key value might be the zone
21303
+ # name. Other examples might be a key indicating a deprecated resource and a
21304
+ # suggested replacement, or a warning about invalid network settings (for
21305
+ # example, if an instance attempts to perform IP forwarding but is not enabled
21306
+ # for IP forwarding).
21307
+ # Corresponds to the JSON property `key`
21308
+ # @return [String]
21309
+ attr_accessor :key
21310
+
21311
+ # [Output Only] A warning data value corresponding to the key.
21312
+ # Corresponds to the JSON property `value`
21313
+ # @return [String]
21314
+ attr_accessor :value
21315
+
21316
+ def initialize(**args)
21317
+ update!(**args)
21318
+ end
21319
+
21320
+ # Update properties of this object
21321
+ def update!(**args)
21322
+ @key = args[:key] if args.key?(:key)
21323
+ @value = args[:value] if args.key?(:value)
21324
+ end
21325
+ end
21326
+ end
21327
+ end
21328
+
21329
+ #
21330
+ class InterconnectAttachmentGroupsOperationalStatus
21331
+ include Google::Apis::Core::Hashable
21332
+
21333
+ #
21334
+ # Corresponds to the JSON property `attachmentStatuses`
21335
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentGroupsOperationalStatusAttachmentStatus>]
21336
+ attr_accessor :attachment_statuses
21337
+
21338
+ # [Output Only] The redundancy this group is configured to support. The way a
21339
+ # user queries what SLA their Attachment gets is by looking at this field of the
21340
+ # Attachment's AttachmentGroup.
21341
+ # Corresponds to the JSON property `configured`
21342
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupConfigured]
21343
+ attr_accessor :configured
21344
+
21345
+ # Summarizes the status of the group.
21346
+ # Corresponds to the JSON property `groupStatus`
21347
+ # @return [String]
21348
+ attr_accessor :group_status
21349
+
21350
+ # The user's intent for this AttachmentGroup. This is the only required field
21351
+ # besides the name that must be specified on group creation.
21352
+ # Corresponds to the JSON property `intent`
21353
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupIntent]
21354
+ attr_accessor :intent
21355
+
21356
+ # [Output Only] The redundancy this group is configured to support. The way a
21357
+ # user queries what SLA their Attachment gets is by looking at this field of the
21358
+ # Attachment's AttachmentGroup.
21359
+ # Corresponds to the JSON property `operational`
21360
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupConfigured]
21361
+ attr_accessor :operational
21362
+
21363
+ def initialize(**args)
21364
+ update!(**args)
21365
+ end
21366
+
21367
+ # Update properties of this object
21368
+ def update!(**args)
21369
+ @attachment_statuses = args[:attachment_statuses] if args.key?(:attachment_statuses)
21370
+ @configured = args[:configured] if args.key?(:configured)
21371
+ @group_status = args[:group_status] if args.key?(:group_status)
21372
+ @intent = args[:intent] if args.key?(:intent)
21373
+ @operational = args[:operational] if args.key?(:operational)
21374
+ end
21375
+ end
21376
+
21377
+ # The status of one Attachment in the group. List order is arbitrary.
21378
+ class InterconnectAttachmentGroupsOperationalStatusAttachmentStatus
21379
+ include Google::Apis::Core::Hashable
21380
+
21381
+ # Whether this Attachment is enabled. This becomes false when the customer
21382
+ # drains their Attachment.
21383
+ # Corresponds to the JSON property `adminEnabled`
21384
+ # @return [Boolean]
21385
+ attr_accessor :admin_enabled
21386
+ alias_method :admin_enabled?, :admin_enabled
21387
+
21388
+ # The URL of the Attachment being described.
21389
+ # Corresponds to the JSON property `attachment`
21390
+ # @return [String]
21391
+ attr_accessor :attachment
21392
+
21393
+ # Whether this Attachment is participating in the redundant configuration. This
21394
+ # will be ACTIVE if and only if the status below is CONNECTION_UP. Any INACTIVE
21395
+ # Attachments are excluded from the analysis that generates operational.
21396
+ # availabilitySLA.
21397
+ # Corresponds to the JSON property `isActive`
21398
+ # @return [String]
21399
+ attr_accessor :is_active
21400
+
21401
+ # Whether this Attachment is active, and if so, whether BGP is up. This is based
21402
+ # on the statuses available in the Pantheon UI here: http://google3/java/com/
21403
+ # google/cloud/boq/clientapi/gce/hybrid/api/interconnect_models.proto
21404
+ # Corresponds to the JSON property `status`
21405
+ # @return [String]
21406
+ attr_accessor :status
21407
+
21408
+ def initialize(**args)
21409
+ update!(**args)
21410
+ end
21411
+
21412
+ # Update properties of this object
21413
+ def update!(**args)
21414
+ @admin_enabled = args[:admin_enabled] if args.key?(:admin_enabled)
21415
+ @attachment = args[:attachment] if args.key?(:attachment)
21416
+ @is_active = args[:is_active] if args.key?(:is_active)
21417
+ @status = args[:status] if args.key?(:status)
21418
+ end
21419
+ end
21420
+
21421
+ # Response to the list request, and contains a list of interconnect attachments.
21422
+ class InterconnectAttachmentList
21423
+ include Google::Apis::Core::Hashable
21424
+
21425
+ # [Output Only] Unique identifier for the resource; defined by the server.
21426
+ # Corresponds to the JSON property `id`
21427
+ # @return [String]
21428
+ attr_accessor :id
21429
+
21430
+ # A list of InterconnectAttachment resources.
21431
+ # Corresponds to the JSON property `items`
21432
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachment>]
21433
+ attr_accessor :items
21434
+
21435
+ # [Output Only] Type of resource. Always compute#interconnectAttachmentList for
21436
+ # lists of interconnect attachments.
21437
+ # Corresponds to the JSON property `kind`
21438
+ # @return [String]
21439
+ attr_accessor :kind
21440
+
21441
+ # [Output Only] This token allows you to get the next page of results for list
21442
+ # requests. If the number of results is larger than maxResults, use the
21443
+ # nextPageToken as a value for the query parameter pageToken in the next list
21444
+ # request. Subsequent list requests will have their own nextPageToken to
21445
+ # continue paging through the results.
21446
+ # Corresponds to the JSON property `nextPageToken`
21447
+ # @return [String]
21448
+ attr_accessor :next_page_token
21449
+
21450
+ # [Output Only] Server-defined URL for this resource.
21451
+ # Corresponds to the JSON property `selfLink`
21452
+ # @return [String]
21453
+ attr_accessor :self_link
21454
+
21455
+ # [Output Only] Informational warning message.
21456
+ # Corresponds to the JSON property `warning`
21457
+ # @return [Google::Apis::ComputeV1::InterconnectAttachmentList::Warning]
21458
+ attr_accessor :warning
21459
+
21460
+ def initialize(**args)
21461
+ update!(**args)
21462
+ end
21463
+
21464
+ # Update properties of this object
21465
+ def update!(**args)
21466
+ @id = args[:id] if args.key?(:id)
21467
+ @items = args[:items] if args.key?(:items)
21468
+ @kind = args[:kind] if args.key?(:kind)
21469
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
21470
+ @self_link = args[:self_link] if args.key?(:self_link)
21471
+ @warning = args[:warning] if args.key?(:warning)
21472
+ end
21473
+
21474
+ # [Output Only] Informational warning message.
21475
+ class Warning
21476
+ include Google::Apis::Core::Hashable
21477
+
21478
+ # [Output Only] A warning code, if applicable. For example, Compute Engine
21479
+ # returns NO_RESULTS_ON_PAGE if there are no results in the response.
21480
+ # Corresponds to the JSON property `code`
21481
+ # @return [String]
21482
+ attr_accessor :code
21483
+
21484
+ # [Output Only] Metadata about this warning in key: value format. For example: "
21485
+ # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
21486
+ # Corresponds to the JSON property `data`
21487
+ # @return [Array<Google::Apis::ComputeV1::InterconnectAttachmentList::Warning::Datum>]
20651
21488
  attr_accessor :data
20652
21489
 
20653
21490
  # [Output Only] A human-readable description of the warning code.
@@ -20849,168 +21686,971 @@ module Google
20849
21686
  end
20850
21687
  end
20851
21688
 
20852
- # Describes a single physical circuit between the Customer and Google.
20853
- # CircuitInfo objects are created by Google, so all fields are output only.
20854
- class InterconnectCircuitInfo
20855
- include Google::Apis::Core::Hashable
20856
-
20857
- # Customer-side demarc ID for this circuit.
20858
- # Corresponds to the JSON property `customerDemarcId`
20859
- # @return [String]
20860
- attr_accessor :customer_demarc_id
20861
-
20862
- # Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
20863
- # Corresponds to the JSON property `googleCircuitId`
20864
- # @return [String]
20865
- attr_accessor :google_circuit_id
20866
-
20867
- # Google-side demarc ID for this circuit. Assigned at circuit turn-up and
20868
- # provided by Google to the customer in the LOA.
20869
- # Corresponds to the JSON property `googleDemarcId`
20870
- # @return [String]
20871
- attr_accessor :google_demarc_id
20872
-
20873
- def initialize(**args)
20874
- update!(**args)
20875
- end
20876
-
20877
- # Update properties of this object
20878
- def update!(**args)
20879
- @customer_demarc_id = args[:customer_demarc_id] if args.key?(:customer_demarc_id)
20880
- @google_circuit_id = args[:google_circuit_id] if args.key?(:google_circuit_id)
20881
- @google_demarc_id = args[:google_demarc_id] if args.key?(:google_demarc_id)
20882
- end
20883
- end
20884
-
20885
- # Diagnostics information about the Interconnect connection, which contains
20886
- # detailed and current technical information about Google's side of the
20887
- # connection.
20888
- class InterconnectDiagnostics
21689
+ # Describes a single physical circuit between the Customer and Google.
21690
+ # CircuitInfo objects are created by Google, so all fields are output only.
21691
+ class InterconnectCircuitInfo
21692
+ include Google::Apis::Core::Hashable
21693
+
21694
+ # Customer-side demarc ID for this circuit.
21695
+ # Corresponds to the JSON property `customerDemarcId`
21696
+ # @return [String]
21697
+ attr_accessor :customer_demarc_id
21698
+
21699
+ # Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
21700
+ # Corresponds to the JSON property `googleCircuitId`
21701
+ # @return [String]
21702
+ attr_accessor :google_circuit_id
21703
+
21704
+ # Google-side demarc ID for this circuit. Assigned at circuit turn-up and
21705
+ # provided by Google to the customer in the LOA.
21706
+ # Corresponds to the JSON property `googleDemarcId`
21707
+ # @return [String]
21708
+ attr_accessor :google_demarc_id
21709
+
21710
+ def initialize(**args)
21711
+ update!(**args)
21712
+ end
21713
+
21714
+ # Update properties of this object
21715
+ def update!(**args)
21716
+ @customer_demarc_id = args[:customer_demarc_id] if args.key?(:customer_demarc_id)
21717
+ @google_circuit_id = args[:google_circuit_id] if args.key?(:google_circuit_id)
21718
+ @google_demarc_id = args[:google_demarc_id] if args.key?(:google_demarc_id)
21719
+ end
21720
+ end
21721
+
21722
+ # Diagnostics information about the Interconnect connection, which contains
21723
+ # detailed and current technical information about Google's side of the
21724
+ # connection.
21725
+ class InterconnectDiagnostics
21726
+ include Google::Apis::Core::Hashable
21727
+
21728
+ # A list of InterconnectDiagnostics.ARPEntry objects, describing individual
21729
+ # neighbors currently seen by the Google router in the ARP cache for the
21730
+ # Interconnect. This will be empty when the Interconnect is not bundled.
21731
+ # Corresponds to the JSON property `arpCaches`
21732
+ # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsArpEntry>]
21733
+ attr_accessor :arp_caches
21734
+
21735
+ # The aggregation type of the bundle interface.
21736
+ # Corresponds to the JSON property `bundleAggregationType`
21737
+ # @return [String]
21738
+ attr_accessor :bundle_aggregation_type
21739
+
21740
+ # The operational status of the bundle interface.
21741
+ # Corresponds to the JSON property `bundleOperationalStatus`
21742
+ # @return [String]
21743
+ attr_accessor :bundle_operational_status
21744
+
21745
+ # A list of InterconnectDiagnostics.LinkStatus objects, describing the status
21746
+ # for each link on the Interconnect.
21747
+ # Corresponds to the JSON property `links`
21748
+ # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsLinkStatus>]
21749
+ attr_accessor :links
21750
+
21751
+ # The MAC address of the Interconnect's bundle interface.
21752
+ # Corresponds to the JSON property `macAddress`
21753
+ # @return [String]
21754
+ attr_accessor :mac_address
21755
+
21756
+ def initialize(**args)
21757
+ update!(**args)
21758
+ end
21759
+
21760
+ # Update properties of this object
21761
+ def update!(**args)
21762
+ @arp_caches = args[:arp_caches] if args.key?(:arp_caches)
21763
+ @bundle_aggregation_type = args[:bundle_aggregation_type] if args.key?(:bundle_aggregation_type)
21764
+ @bundle_operational_status = args[:bundle_operational_status] if args.key?(:bundle_operational_status)
21765
+ @links = args[:links] if args.key?(:links)
21766
+ @mac_address = args[:mac_address] if args.key?(:mac_address)
21767
+ end
21768
+ end
21769
+
21770
+ # Describing the ARP neighbor entries seen on this link
21771
+ class InterconnectDiagnosticsArpEntry
21772
+ include Google::Apis::Core::Hashable
21773
+
21774
+ # The IP address of this ARP neighbor.
21775
+ # Corresponds to the JSON property `ipAddress`
21776
+ # @return [String]
21777
+ attr_accessor :ip_address
21778
+
21779
+ # The MAC address of this ARP neighbor.
21780
+ # Corresponds to the JSON property `macAddress`
21781
+ # @return [String]
21782
+ attr_accessor :mac_address
21783
+
21784
+ def initialize(**args)
21785
+ update!(**args)
21786
+ end
21787
+
21788
+ # Update properties of this object
21789
+ def update!(**args)
21790
+ @ip_address = args[:ip_address] if args.key?(:ip_address)
21791
+ @mac_address = args[:mac_address] if args.key?(:mac_address)
21792
+ end
21793
+ end
21794
+
21795
+ #
21796
+ class InterconnectDiagnosticsLinkLacpStatus
21797
+ include Google::Apis::Core::Hashable
21798
+
21799
+ # System ID of the port on Google's side of the LACP exchange.
21800
+ # Corresponds to the JSON property `googleSystemId`
21801
+ # @return [String]
21802
+ attr_accessor :google_system_id
21803
+
21804
+ # System ID of the port on the neighbor's side of the LACP exchange.
21805
+ # Corresponds to the JSON property `neighborSystemId`
21806
+ # @return [String]
21807
+ attr_accessor :neighbor_system_id
21808
+
21809
+ # The state of a LACP link, which can take one of the following values: - ACTIVE:
21810
+ # The link is configured and active within the bundle. - DETACHED: The link is
21811
+ # not configured within the bundle. This means that the rest of the object
21812
+ # should be empty.
21813
+ # Corresponds to the JSON property `state`
21814
+ # @return [String]
21815
+ attr_accessor :state
21816
+
21817
+ def initialize(**args)
21818
+ update!(**args)
21819
+ end
21820
+
21821
+ # Update properties of this object
21822
+ def update!(**args)
21823
+ @google_system_id = args[:google_system_id] if args.key?(:google_system_id)
21824
+ @neighbor_system_id = args[:neighbor_system_id] if args.key?(:neighbor_system_id)
21825
+ @state = args[:state] if args.key?(:state)
21826
+ end
21827
+ end
21828
+
21829
+ #
21830
+ class InterconnectDiagnosticsLinkOpticalPower
21831
+ include Google::Apis::Core::Hashable
21832
+
21833
+ # The status of the current value when compared to the warning and alarm levels
21834
+ # for the receiving or transmitting transceiver. Possible states include: - OK:
21835
+ # The value has not crossed a warning threshold. - LOW_WARNING: The value has
21836
+ # crossed below the low warning threshold. - HIGH_WARNING: The value has crossed
21837
+ # above the high warning threshold. - LOW_ALARM: The value has crossed below the
21838
+ # low alarm threshold. - HIGH_ALARM: The value has crossed above the high alarm
21839
+ # threshold.
21840
+ # Corresponds to the JSON property `state`
21841
+ # @return [String]
21842
+ attr_accessor :state
21843
+
21844
+ # Value of the current receiving or transmitting optical power, read in dBm.
21845
+ # Take a known good optical value, give it a 10% margin and trigger warnings
21846
+ # relative to that value. In general, a -7dBm warning and a -11dBm alarm are
21847
+ # good optical value estimates for most links.
21848
+ # Corresponds to the JSON property `value`
21849
+ # @return [Float]
21850
+ attr_accessor :value
21851
+
21852
+ def initialize(**args)
21853
+ update!(**args)
21854
+ end
21855
+
21856
+ # Update properties of this object
21857
+ def update!(**args)
21858
+ @state = args[:state] if args.key?(:state)
21859
+ @value = args[:value] if args.key?(:value)
21860
+ end
21861
+ end
21862
+
21863
+ #
21864
+ class InterconnectDiagnosticsLinkStatus
21865
+ include Google::Apis::Core::Hashable
21866
+
21867
+ # A list of InterconnectDiagnostics.ARPEntry objects, describing the ARP
21868
+ # neighbor entries seen on this link. This will be empty if the link is bundled
21869
+ # Corresponds to the JSON property `arpCaches`
21870
+ # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsArpEntry>]
21871
+ attr_accessor :arp_caches
21872
+
21873
+ # The unique ID for this link assigned during turn up by Google.
21874
+ # Corresponds to the JSON property `circuitId`
21875
+ # @return [String]
21876
+ attr_accessor :circuit_id
21877
+
21878
+ # The Demarc address assigned by Google and provided in the LoA.
21879
+ # Corresponds to the JSON property `googleDemarc`
21880
+ # @return [String]
21881
+ attr_accessor :google_demarc
21882
+
21883
+ #
21884
+ # Corresponds to the JSON property `lacpStatus`
21885
+ # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkLacpStatus]
21886
+ attr_accessor :lacp_status
21887
+
21888
+ # Describes the status of MACsec encryption on the link.
21889
+ # Corresponds to the JSON property `macsec`
21890
+ # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsMacsecStatus]
21891
+ attr_accessor :macsec
21892
+
21893
+ # The operational status of the link.
21894
+ # Corresponds to the JSON property `operationalStatus`
21895
+ # @return [String]
21896
+ attr_accessor :operational_status
21897
+
21898
+ # An InterconnectDiagnostics.LinkOpticalPower object, describing the current
21899
+ # value and status of the received light level.
21900
+ # Corresponds to the JSON property `receivingOpticalPower`
21901
+ # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkOpticalPower]
21902
+ attr_accessor :receiving_optical_power
21903
+
21904
+ # An InterconnectDiagnostics.LinkOpticalPower object, describing the current
21905
+ # value and status of the transmitted light level.
21906
+ # Corresponds to the JSON property `transmittingOpticalPower`
21907
+ # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkOpticalPower]
21908
+ attr_accessor :transmitting_optical_power
21909
+
21910
+ def initialize(**args)
21911
+ update!(**args)
21912
+ end
21913
+
21914
+ # Update properties of this object
21915
+ def update!(**args)
21916
+ @arp_caches = args[:arp_caches] if args.key?(:arp_caches)
21917
+ @circuit_id = args[:circuit_id] if args.key?(:circuit_id)
21918
+ @google_demarc = args[:google_demarc] if args.key?(:google_demarc)
21919
+ @lacp_status = args[:lacp_status] if args.key?(:lacp_status)
21920
+ @macsec = args[:macsec] if args.key?(:macsec)
21921
+ @operational_status = args[:operational_status] if args.key?(:operational_status)
21922
+ @receiving_optical_power = args[:receiving_optical_power] if args.key?(:receiving_optical_power)
21923
+ @transmitting_optical_power = args[:transmitting_optical_power] if args.key?(:transmitting_optical_power)
21924
+ end
21925
+ end
21926
+
21927
+ # Describes the status of MACsec encryption on the link.
21928
+ class InterconnectDiagnosticsMacsecStatus
21929
+ include Google::Apis::Core::Hashable
21930
+
21931
+ # Indicates the Connectivity Association Key Name (CKN) currently being used if
21932
+ # MACsec is operational.
21933
+ # Corresponds to the JSON property `ckn`
21934
+ # @return [String]
21935
+ attr_accessor :ckn
21936
+
21937
+ # Indicates whether or not MACsec is operational on this link.
21938
+ # Corresponds to the JSON property `operational`
21939
+ # @return [Boolean]
21940
+ attr_accessor :operational
21941
+ alias_method :operational?, :operational
21942
+
21943
+ def initialize(**args)
21944
+ update!(**args)
21945
+ end
21946
+
21947
+ # Update properties of this object
21948
+ def update!(**args)
21949
+ @ckn = args[:ckn] if args.key?(:ckn)
21950
+ @operational = args[:operational] if args.key?(:operational)
21951
+ end
21952
+ end
21953
+
21954
+ # An interconnect group resource allows customers to create, analyze, and expand
21955
+ # their redundant connections.
21956
+ class InterconnectGroup
21957
+ include Google::Apis::Core::Hashable
21958
+
21959
+ # [Output Only] The status of the group as configured. This has the same
21960
+ # structure as the operational field reported by the OperationalStatus method,
21961
+ # but does not take into account the operational status of each resource.
21962
+ # Corresponds to the JSON property `configured`
21963
+ # @return [Google::Apis::ComputeV1::InterconnectGroupConfigured]
21964
+ attr_accessor :configured
21965
+
21966
+ # [Output Only] Creation timestamp in RFC3339 text format.
21967
+ # Corresponds to the JSON property `creationTimestamp`
21968
+ # @return [String]
21969
+ attr_accessor :creation_timestamp
21970
+
21971
+ # An optional description of this resource. Provide this property when you
21972
+ # create the resource.
21973
+ # Corresponds to the JSON property `description`
21974
+ # @return [String]
21975
+ attr_accessor :description
21976
+
21977
+ # Opaque system-generated token that uniquely identifies the configuration. If
21978
+ # provided when patching a configuration in update mode, the provided token must
21979
+ # match the current token or the update is rejected. This provides a reliable
21980
+ # means of doing read-modify-write (optimistic locking) as described by API 154.
21981
+ # Corresponds to the JSON property `etag`
21982
+ # @return [String]
21983
+ attr_accessor :etag
21984
+
21985
+ # [Output Only] The unique identifier for the resource type. The server
21986
+ # generates this identifier.
21987
+ # Corresponds to the JSON property `id`
21988
+ # @return [Fixnum]
21989
+ attr_accessor :id
21990
+
21991
+ # The user's intent for this group. This is the only required field besides the
21992
+ # name that must be specified on group creation.
21993
+ # Corresponds to the JSON property `intent`
21994
+ # @return [Google::Apis::ComputeV1::InterconnectGroupIntent]
21995
+ attr_accessor :intent
21996
+
21997
+ # Interconnects in the InterconnectGroup. Keys are arbitrary user-specified
21998
+ # strings. Users are encouraged, but not required, to use their preferred format
21999
+ # for resource links as keys. Note that there are add-members and remove-members
22000
+ # methods in gcloud. The size of this map is limited by an "Interconnects per
22001
+ # group" quota.
22002
+ # Corresponds to the JSON property `interconnects`
22003
+ # @return [Hash<String,Google::Apis::ComputeV1::InterconnectGroupInterconnect>]
22004
+ attr_accessor :interconnects
22005
+
22006
+ # [Output Only] Type of the resource. Always compute#InterconnectGroup
22007
+ # Corresponds to the JSON property `kind`
22008
+ # @return [String]
22009
+ attr_accessor :kind
22010
+
22011
+ # Name of the resource. Provided by the client when the resource is created. The
22012
+ # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
22013
+ # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
22014
+ # z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter,
22015
+ # and all following characters must be a dash, lowercase letter, or digit,
22016
+ # except the last character, which cannot be a dash.
22017
+ # Corresponds to the JSON property `name`
22018
+ # @return [String]
22019
+ attr_accessor :name
22020
+
22021
+ # [Output Only] An analysis of the physical layout of Interconnects in this
22022
+ # group. Every Interconnect in the group is shown once in this structure.
22023
+ # Corresponds to the JSON property `physicalStructure`
22024
+ # @return [Google::Apis::ComputeV1::InterconnectGroupPhysicalStructure]
22025
+ attr_accessor :physical_structure
22026
+
22027
+ # [Output Only] Server-defined URL for the resource.
22028
+ # Corresponds to the JSON property `selfLink`
22029
+ # @return [String]
22030
+ attr_accessor :self_link
22031
+
22032
+ def initialize(**args)
22033
+ update!(**args)
22034
+ end
22035
+
22036
+ # Update properties of this object
22037
+ def update!(**args)
22038
+ @configured = args[:configured] if args.key?(:configured)
22039
+ @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
22040
+ @description = args[:description] if args.key?(:description)
22041
+ @etag = args[:etag] if args.key?(:etag)
22042
+ @id = args[:id] if args.key?(:id)
22043
+ @intent = args[:intent] if args.key?(:intent)
22044
+ @interconnects = args[:interconnects] if args.key?(:interconnects)
22045
+ @kind = args[:kind] if args.key?(:kind)
22046
+ @name = args[:name] if args.key?(:name)
22047
+ @physical_structure = args[:physical_structure] if args.key?(:physical_structure)
22048
+ @self_link = args[:self_link] if args.key?(:self_link)
22049
+ end
22050
+ end
22051
+
22052
+ # [Output Only] The status of the group as configured. This has the same
22053
+ # structure as the operational field reported by the OperationalStatus method,
22054
+ # but does not take into account the operational status of each resource.
22055
+ class InterconnectGroupConfigured
22056
+ include Google::Apis::Core::Hashable
22057
+
22058
+ # [Output Only] How reliable this topology is configured to be, and why this
22059
+ # group does or does not meet the requirements for the intended capability.
22060
+ # Corresponds to the JSON property `topologyCapability`
22061
+ # @return [Google::Apis::ComputeV1::InterconnectGroupConfiguredTopologyCapability]
22062
+ attr_accessor :topology_capability
22063
+
22064
+ def initialize(**args)
22065
+ update!(**args)
22066
+ end
22067
+
22068
+ # Update properties of this object
22069
+ def update!(**args)
22070
+ @topology_capability = args[:topology_capability] if args.key?(:topology_capability)
22071
+ end
22072
+ end
22073
+
22074
+ # [Output Only] How reliable this topology is configured to be, and why this
22075
+ # group does or does not meet the requirements for the intended capability.
22076
+ class InterconnectGroupConfiguredTopologyCapability
22077
+ include Google::Apis::Core::Hashable
22078
+
22079
+ #
22080
+ # Corresponds to the JSON property `intendedCapabilityBlockers`
22081
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlockers>]
22082
+ attr_accessor :intended_capability_blockers
22083
+
22084
+ #
22085
+ # Corresponds to the JSON property `supportedSla`
22086
+ # @return [String]
22087
+ attr_accessor :supported_sla
22088
+
22089
+ def initialize(**args)
22090
+ update!(**args)
22091
+ end
22092
+
22093
+ # Update properties of this object
22094
+ def update!(**args)
22095
+ @intended_capability_blockers = args[:intended_capability_blockers] if args.key?(:intended_capability_blockers)
22096
+ @supported_sla = args[:supported_sla] if args.key?(:supported_sla)
22097
+ end
22098
+ end
22099
+
22100
+ # [Output Only] Reasons why configuration.topologyCapability.sla differs from
22101
+ # intent.topologyCapability. This list is empty if and only if those are the
22102
+ # same.
22103
+ class InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlockers
22104
+ include Google::Apis::Core::Hashable
22105
+
22106
+ #
22107
+ # Corresponds to the JSON property `blockerType`
22108
+ # @return [String]
22109
+ attr_accessor :blocker_type
22110
+
22111
+ # [Output Only] The url of Google Cloud public documentation explaining this
22112
+ # requirement. This is set for every type of requirement.
22113
+ # Corresponds to the JSON property `documentationLink`
22114
+ # @return [String]
22115
+ attr_accessor :documentation_link
22116
+
22117
+ # [Output Only] A human-readable explanation of this requirement and why it's
22118
+ # not met. This is set for every type of requirement.
22119
+ # Corresponds to the JSON property `explanation`
22120
+ # @return [String]
22121
+ attr_accessor :explanation
22122
+
22123
+ # [Output Only] Facilities used to explain this blocker in more detail. Like
22124
+ # physicalStructure.metros.facilities.facility, this is a numeric string like "
22125
+ # 5467".
22126
+ # Corresponds to the JSON property `facilities`
22127
+ # @return [Array<String>]
22128
+ attr_accessor :facilities
22129
+
22130
+ # [Output Only] Interconnects used to explain this blocker in more detail.
22131
+ # Corresponds to the JSON property `interconnects`
22132
+ # @return [Array<String>]
22133
+ attr_accessor :interconnects
22134
+
22135
+ # [Output Only] Metros used to explain this blocker in more detail. These are
22136
+ # three-letter lowercase strings like "iad". A blocker like INCOMPATIBLE_METROS
22137
+ # will specify the problematic metros in this field.
22138
+ # Corresponds to the JSON property `metros`
22139
+ # @return [Array<String>]
22140
+ attr_accessor :metros
22141
+
22142
+ # [Output Only] Zones used to explain this blocker in more detail. Zone names
22143
+ # are "zone1" and/or "zone2".
22144
+ # Corresponds to the JSON property `zones`
22145
+ # @return [Array<String>]
22146
+ attr_accessor :zones
22147
+
22148
+ def initialize(**args)
22149
+ update!(**args)
22150
+ end
22151
+
22152
+ # Update properties of this object
22153
+ def update!(**args)
22154
+ @blocker_type = args[:blocker_type] if args.key?(:blocker_type)
22155
+ @documentation_link = args[:documentation_link] if args.key?(:documentation_link)
22156
+ @explanation = args[:explanation] if args.key?(:explanation)
22157
+ @facilities = args[:facilities] if args.key?(:facilities)
22158
+ @interconnects = args[:interconnects] if args.key?(:interconnects)
22159
+ @metros = args[:metros] if args.key?(:metros)
22160
+ @zones = args[:zones] if args.key?(:zones)
22161
+ end
22162
+ end
22163
+
22164
+ # The user's intent for this group. This is the only required field besides the
22165
+ # name that must be specified on group creation.
22166
+ class InterconnectGroupIntent
22167
+ include Google::Apis::Core::Hashable
22168
+
22169
+ #
22170
+ # Corresponds to the JSON property `topologyCapability`
22171
+ # @return [String]
22172
+ attr_accessor :topology_capability
22173
+
22174
+ def initialize(**args)
22175
+ update!(**args)
22176
+ end
22177
+
22178
+ # Update properties of this object
22179
+ def update!(**args)
22180
+ @topology_capability = args[:topology_capability] if args.key?(:topology_capability)
22181
+ end
22182
+ end
22183
+
22184
+ # An Interconnect in this InterconnectGroup.
22185
+ class InterconnectGroupInterconnect
22186
+ include Google::Apis::Core::Hashable
22187
+
22188
+ # The URL of an Interconnect in this group. All Interconnects in the group are
22189
+ # unique.
22190
+ # Corresponds to the JSON property `interconnect`
22191
+ # @return [String]
22192
+ attr_accessor :interconnect
22193
+
22194
+ def initialize(**args)
22195
+ update!(**args)
22196
+ end
22197
+
22198
+ # Update properties of this object
22199
+ def update!(**args)
22200
+ @interconnect = args[:interconnect] if args.key?(:interconnect)
22201
+ end
22202
+ end
22203
+
22204
+ # [Output Only] An analysis of the physical layout of Interconnects in this
22205
+ # group. Every Interconnect in the group is shown once in this structure.
22206
+ class InterconnectGroupPhysicalStructure
22207
+ include Google::Apis::Core::Hashable
22208
+
22209
+ #
22210
+ # Corresponds to the JSON property `metros`
22211
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupPhysicalStructureMetros>]
22212
+ attr_accessor :metros
22213
+
22214
+ def initialize(**args)
22215
+ update!(**args)
22216
+ end
22217
+
22218
+ # Update properties of this object
22219
+ def update!(**args)
22220
+ @metros = args[:metros] if args.key?(:metros)
22221
+ end
22222
+ end
22223
+
22224
+ # [Output Only] The metros Interconnects in this group are in.
22225
+ class InterconnectGroupPhysicalStructureMetros
22226
+ include Google::Apis::Core::Hashable
22227
+
22228
+ #
22229
+ # Corresponds to the JSON property `facilities`
22230
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupPhysicalStructureMetrosFacilities>]
22231
+ attr_accessor :facilities
22232
+
22233
+ # [Output Only] The name of the metro, as a three-letter lowercase string like "
22234
+ # iad". This is the first component of the location of Interconnects underneath
22235
+ # this.
22236
+ # Corresponds to the JSON property `metro`
22237
+ # @return [String]
22238
+ attr_accessor :metro
22239
+
22240
+ def initialize(**args)
22241
+ update!(**args)
22242
+ end
22243
+
22244
+ # Update properties of this object
22245
+ def update!(**args)
22246
+ @facilities = args[:facilities] if args.key?(:facilities)
22247
+ @metro = args[:metro] if args.key?(:metro)
22248
+ end
22249
+ end
22250
+
22251
+ # [Output Only] The facilities Interconnects in this metro are present in.
22252
+ class InterconnectGroupPhysicalStructureMetrosFacilities
22253
+ include Google::Apis::Core::Hashable
22254
+
22255
+ # [Output Only] The ID of this facility, as a numeric string like "5467". This
22256
+ # is the third component of the location of Interconnects in this facility.
22257
+ # Corresponds to the JSON property `facility`
22258
+ # @return [String]
22259
+ attr_accessor :facility
22260
+
22261
+ #
22262
+ # Corresponds to the JSON property `zones`
22263
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupPhysicalStructureMetrosFacilitiesZones>]
22264
+ attr_accessor :zones
22265
+
22266
+ def initialize(**args)
22267
+ update!(**args)
22268
+ end
22269
+
22270
+ # Update properties of this object
22271
+ def update!(**args)
22272
+ @facility = args[:facility] if args.key?(:facility)
22273
+ @zones = args[:zones] if args.key?(:zones)
22274
+ end
22275
+ end
22276
+
22277
+ # [Output Only] The zones that Interconnects in this facility are present in.
22278
+ class InterconnectGroupPhysicalStructureMetrosFacilitiesZones
22279
+ include Google::Apis::Core::Hashable
22280
+
22281
+ # [Output Only] URLs of Interconnects in this redundancy group in the given
22282
+ # metro, facility, and zone.
22283
+ # Corresponds to the JSON property `interconnects`
22284
+ # @return [Array<String>]
22285
+ attr_accessor :interconnects
22286
+
22287
+ # [Output Only] The name of the zone, either "zone1" or "zone2". This is the
22288
+ # second component of the location of Interconnects in this facility.
22289
+ # Corresponds to the JSON property `zone`
22290
+ # @return [String]
22291
+ attr_accessor :zone
22292
+
22293
+ def initialize(**args)
22294
+ update!(**args)
22295
+ end
22296
+
22297
+ # Update properties of this object
22298
+ def update!(**args)
22299
+ @interconnects = args[:interconnects] if args.key?(:interconnects)
22300
+ @zone = args[:zone] if args.key?(:zone)
22301
+ end
22302
+ end
22303
+
22304
+ #
22305
+ class InterconnectGroupsCreateMembers
22306
+ include Google::Apis::Core::Hashable
22307
+
22308
+ # How to behave when configured.topologyCapability.supportedSLA would not equal
22309
+ # intent.topologyCapability after this call.
22310
+ # Corresponds to the JSON property `intentMismatchBehavior`
22311
+ # @return [String]
22312
+ attr_accessor :intent_mismatch_behavior
22313
+
22314
+ #
22315
+ # Corresponds to the JSON property `interconnects`
22316
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupsCreateMembersInterconnectInput>]
22317
+ attr_accessor :interconnects
22318
+
22319
+ # LINT.IfChange
22320
+ # Corresponds to the JSON property `templateInterconnect`
22321
+ # @return [Google::Apis::ComputeV1::InterconnectGroupsCreateMembersInterconnectInput]
22322
+ attr_accessor :template_interconnect
22323
+
22324
+ def initialize(**args)
22325
+ update!(**args)
22326
+ end
22327
+
22328
+ # Update properties of this object
22329
+ def update!(**args)
22330
+ @intent_mismatch_behavior = args[:intent_mismatch_behavior] if args.key?(:intent_mismatch_behavior)
22331
+ @interconnects = args[:interconnects] if args.key?(:interconnects)
22332
+ @template_interconnect = args[:template_interconnect] if args.key?(:template_interconnect)
22333
+ end
22334
+ end
22335
+
22336
+ # LINT.IfChange
22337
+ class InterconnectGroupsCreateMembersInterconnectInput
22338
+ include Google::Apis::Core::Hashable
22339
+
22340
+ # Administrative status of the interconnect. When this is set to true, the
22341
+ # Interconnect is functional and can carry traffic. When set to false, no
22342
+ # packets can be carried over the interconnect and no BGP routes are exchanged
22343
+ # over it. By default, the status is set to true.
22344
+ # Corresponds to the JSON property `adminEnabled`
22345
+ # @return [Boolean]
22346
+ attr_accessor :admin_enabled
22347
+ alias_method :admin_enabled?, :admin_enabled
22348
+
22349
+ # Customer name, to put in the Letter of Authorization as the party authorized
22350
+ # to request a crossconnect.
22351
+ # Corresponds to the JSON property `customerName`
22352
+ # @return [String]
22353
+ attr_accessor :customer_name
22354
+
22355
+ # An optional description of this resource. Provide this property when you
22356
+ # create the resource.
22357
+ # Corresponds to the JSON property `description`
22358
+ # @return [String]
22359
+ attr_accessor :description
22360
+
22361
+ # A zone-free location to use for all Interconnects created in this call, like "
22362
+ # iad-1234".
22363
+ # Corresponds to the JSON property `facility`
22364
+ # @return [String]
22365
+ attr_accessor :facility
22366
+
22367
+ # Type of interconnect, which can take one of the following values: - PARTNER: A
22368
+ # partner-managed interconnection shared between customers though a partner. -
22369
+ # DEDICATED: A dedicated physical interconnection with the customer. Note that a
22370
+ # value IT_PRIVATE has been deprecated in favor of DEDICATED.
22371
+ # Corresponds to the JSON property `interconnectType`
22372
+ # @return [String]
22373
+ attr_accessor :interconnect_type
22374
+
22375
+ # Type of link requested, which can take one of the following values: -
22376
+ # LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics -
22377
+ # LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. -
22378
+ # LINK_TYPE_ETHERNET_400G_LR4: A 400G Ethernet with LR4 optics. Note that this
22379
+ # field indicates the speed of each of the links in the bundle, not the speed of
22380
+ # the entire bundle.
22381
+ # Corresponds to the JSON property `linkType`
22382
+ # @return [String]
22383
+ attr_accessor :link_type
22384
+
22385
+ # Name of the Interconnects to be created. This must be specified on the
22386
+ # template and/or on each individual interconnect. The name, if not empty, must
22387
+ # be 1-63 characters long, and comply with RFC1035. Specifically, any nonempty
22388
+ # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
22389
+ # z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter,
22390
+ # and all following characters must be a dash, lowercase letter, or digit,
22391
+ # except the last character, which cannot be a dash.
22392
+ # Corresponds to the JSON property `name`
22393
+ # @return [String]
22394
+ attr_accessor :name
22395
+
22396
+ # Email address to contact the customer NOC for operations and maintenance
22397
+ # notifications regarding this Interconnect. If specified, this will be used for
22398
+ # notifications in addition to all other forms described, such as Cloud
22399
+ # Monitoring logs alerting and Cloud Notifications. This field is required for
22400
+ # users who sign up for Cloud Interconnect using workforce identity federation.
22401
+ # Corresponds to the JSON property `nocContactEmail`
22402
+ # @return [String]
22403
+ attr_accessor :noc_contact_email
22404
+
22405
+ # Indicates that this is a Cross-Cloud Interconnect. This field specifies the
22406
+ # location outside of Google's network that the interconnect is connected to.
22407
+ # Corresponds to the JSON property `remoteLocation`
22408
+ # @return [String]
22409
+ attr_accessor :remote_location
22410
+
22411
+ # Optional. List of features requested for this Interconnect connection, which
22412
+ # can take one of the following values: - IF_MACSEC If specified then the
22413
+ # connection is created on MACsec capable hardware ports. If not specified, the
22414
+ # default value is false, which allocates non-MACsec capable ports first if
22415
+ # available. This parameter can be provided only with Interconnect INSERT. It
22416
+ # isn't valid for Interconnect PATCH.
22417
+ # Corresponds to the JSON property `requestedFeatures`
22418
+ # @return [Array<String>]
22419
+ attr_accessor :requested_features
22420
+
22421
+ # Target number of physical links in the link bundle, as requested by the
22422
+ # customer.
22423
+ # Corresponds to the JSON property `requestedLinkCount`
22424
+ # @return [Fixnum]
22425
+ attr_accessor :requested_link_count
22426
+
22427
+ def initialize(**args)
22428
+ update!(**args)
22429
+ end
22430
+
22431
+ # Update properties of this object
22432
+ def update!(**args)
22433
+ @admin_enabled = args[:admin_enabled] if args.key?(:admin_enabled)
22434
+ @customer_name = args[:customer_name] if args.key?(:customer_name)
22435
+ @description = args[:description] if args.key?(:description)
22436
+ @facility = args[:facility] if args.key?(:facility)
22437
+ @interconnect_type = args[:interconnect_type] if args.key?(:interconnect_type)
22438
+ @link_type = args[:link_type] if args.key?(:link_type)
22439
+ @name = args[:name] if args.key?(:name)
22440
+ @noc_contact_email = args[:noc_contact_email] if args.key?(:noc_contact_email)
22441
+ @remote_location = args[:remote_location] if args.key?(:remote_location)
22442
+ @requested_features = args[:requested_features] if args.key?(:requested_features)
22443
+ @requested_link_count = args[:requested_link_count] if args.key?(:requested_link_count)
22444
+ end
22445
+ end
22446
+
22447
+ #
22448
+ class InterconnectGroupsCreateMembersRequest
22449
+ include Google::Apis::Core::Hashable
22450
+
22451
+ #
22452
+ # Corresponds to the JSON property `request`
22453
+ # @return [Google::Apis::ComputeV1::InterconnectGroupsCreateMembers]
22454
+ attr_accessor :request
22455
+
22456
+ def initialize(**args)
22457
+ update!(**args)
22458
+ end
22459
+
22460
+ # Update properties of this object
22461
+ def update!(**args)
22462
+ @request = args[:request] if args.key?(:request)
22463
+ end
22464
+ end
22465
+
22466
+ # Response for the InterconnectGroupsGetOperationalStatusResponse.
22467
+ class InterconnectGroupsGetOperationalStatusResponse
22468
+ include Google::Apis::Core::Hashable
22469
+
22470
+ #
22471
+ # Corresponds to the JSON property `etag`
22472
+ # @return [String]
22473
+ attr_accessor :etag
22474
+
22475
+ # Request to get the status of the interconnect group with extra detail.
22476
+ # Corresponds to the JSON property `result`
22477
+ # @return [Google::Apis::ComputeV1::InterconnectGroupsOperationalStatus]
22478
+ attr_accessor :result
22479
+
22480
+ def initialize(**args)
22481
+ update!(**args)
22482
+ end
22483
+
22484
+ # Update properties of this object
22485
+ def update!(**args)
22486
+ @etag = args[:etag] if args.key?(:etag)
22487
+ @result = args[:result] if args.key?(:result)
22488
+ end
22489
+ end
22490
+
22491
+ #
22492
+ class InterconnectGroupsListResponse
22493
+ include Google::Apis::Core::Hashable
22494
+
22495
+ #
22496
+ # Corresponds to the JSON property `etag`
22497
+ # @return [String]
22498
+ attr_accessor :etag
22499
+
22500
+ # [Output Only] Unique identifier for the resource; defined by the server.
22501
+ # Corresponds to the JSON property `id`
22502
+ # @return [String]
22503
+ attr_accessor :id
22504
+
22505
+ # A list of InterconnectGroup resources.
22506
+ # Corresponds to the JSON property `items`
22507
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroup>]
22508
+ attr_accessor :items
22509
+
22510
+ #
22511
+ # Corresponds to the JSON property `kind`
22512
+ # @return [String]
22513
+ attr_accessor :kind
22514
+
22515
+ # [Output Only] This token allows you to get the next page of results for list
22516
+ # requests. If the number of results is larger than maxResults, use the
22517
+ # nextPageToken as a value for the query parameter pageToken in the next list
22518
+ # request. Subsequent list requests will have their own nextPageToken to
22519
+ # continue paging through the results.
22520
+ # Corresponds to the JSON property `nextPageToken`
22521
+ # @return [String]
22522
+ attr_accessor :next_page_token
22523
+
22524
+ # [Output Only] Server-defined URL for this resource.
22525
+ # Corresponds to the JSON property `selfLink`
22526
+ # @return [String]
22527
+ attr_accessor :self_link
22528
+
22529
+ # [Output Only] Unreachable resources. end_interface:
22530
+ # MixerListResponseWithEtagBuilder
22531
+ # Corresponds to the JSON property `unreachables`
22532
+ # @return [Array<String>]
22533
+ attr_accessor :unreachables
22534
+
22535
+ # [Output Only] Informational warning message.
22536
+ # Corresponds to the JSON property `warning`
22537
+ # @return [Google::Apis::ComputeV1::InterconnectGroupsListResponse::Warning]
22538
+ attr_accessor :warning
22539
+
22540
+ def initialize(**args)
22541
+ update!(**args)
22542
+ end
22543
+
22544
+ # Update properties of this object
22545
+ def update!(**args)
22546
+ @etag = args[:etag] if args.key?(:etag)
22547
+ @id = args[:id] if args.key?(:id)
22548
+ @items = args[:items] if args.key?(:items)
22549
+ @kind = args[:kind] if args.key?(:kind)
22550
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
22551
+ @self_link = args[:self_link] if args.key?(:self_link)
22552
+ @unreachables = args[:unreachables] if args.key?(:unreachables)
22553
+ @warning = args[:warning] if args.key?(:warning)
22554
+ end
22555
+
22556
+ # [Output Only] Informational warning message.
22557
+ class Warning
22558
+ include Google::Apis::Core::Hashable
22559
+
22560
+ # [Output Only] A warning code, if applicable. For example, Compute Engine
22561
+ # returns NO_RESULTS_ON_PAGE if there are no results in the response.
22562
+ # Corresponds to the JSON property `code`
22563
+ # @return [String]
22564
+ attr_accessor :code
22565
+
22566
+ # [Output Only] Metadata about this warning in key: value format. For example: "
22567
+ # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
22568
+ # Corresponds to the JSON property `data`
22569
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupsListResponse::Warning::Datum>]
22570
+ attr_accessor :data
22571
+
22572
+ # [Output Only] A human-readable description of the warning code.
22573
+ # Corresponds to the JSON property `message`
22574
+ # @return [String]
22575
+ attr_accessor :message
22576
+
22577
+ def initialize(**args)
22578
+ update!(**args)
22579
+ end
22580
+
22581
+ # Update properties of this object
22582
+ def update!(**args)
22583
+ @code = args[:code] if args.key?(:code)
22584
+ @data = args[:data] if args.key?(:data)
22585
+ @message = args[:message] if args.key?(:message)
22586
+ end
22587
+
22588
+ #
22589
+ class Datum
22590
+ include Google::Apis::Core::Hashable
22591
+
22592
+ # [Output Only] A key that provides more detail on the warning being returned.
22593
+ # For example, for warnings where there are no results in a list request for a
22594
+ # particular zone, this key might be scope and the key value might be the zone
22595
+ # name. Other examples might be a key indicating a deprecated resource and a
22596
+ # suggested replacement, or a warning about invalid network settings (for
22597
+ # example, if an instance attempts to perform IP forwarding but is not enabled
22598
+ # for IP forwarding).
22599
+ # Corresponds to the JSON property `key`
22600
+ # @return [String]
22601
+ attr_accessor :key
22602
+
22603
+ # [Output Only] A warning data value corresponding to the key.
22604
+ # Corresponds to the JSON property `value`
22605
+ # @return [String]
22606
+ attr_accessor :value
22607
+
22608
+ def initialize(**args)
22609
+ update!(**args)
22610
+ end
22611
+
22612
+ # Update properties of this object
22613
+ def update!(**args)
22614
+ @key = args[:key] if args.key?(:key)
22615
+ @value = args[:value] if args.key?(:value)
22616
+ end
22617
+ end
22618
+ end
22619
+ end
22620
+
22621
+ # Request to get the status of the interconnect group with extra detail.
22622
+ class InterconnectGroupsOperationalStatus
20889
22623
  include Google::Apis::Core::Hashable
20890
22624
 
20891
- # A list of InterconnectDiagnostics.ARPEntry objects, describing individual
20892
- # neighbors currently seen by the Google router in the ARP cache for the
20893
- # Interconnect. This will be empty when the Interconnect is not bundled.
20894
- # Corresponds to the JSON property `arpCaches`
20895
- # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsArpEntry>]
20896
- attr_accessor :arp_caches
20897
-
20898
- # The aggregation type of the bundle interface.
20899
- # Corresponds to the JSON property `bundleAggregationType`
20900
- # @return [String]
20901
- attr_accessor :bundle_aggregation_type
22625
+ # [Output Only] The status of the group as configured. This has the same
22626
+ # structure as the operational field reported by the OperationalStatus method,
22627
+ # but does not take into account the operational status of each resource.
22628
+ # Corresponds to the JSON property `configured`
22629
+ # @return [Google::Apis::ComputeV1::InterconnectGroupConfigured]
22630
+ attr_accessor :configured
20902
22631
 
20903
- # The operational status of the bundle interface.
20904
- # Corresponds to the JSON property `bundleOperationalStatus`
22632
+ # Summarizes the status of the group.
22633
+ # Corresponds to the JSON property `groupStatus`
20905
22634
  # @return [String]
20906
- attr_accessor :bundle_operational_status
20907
-
20908
- # A list of InterconnectDiagnostics.LinkStatus objects, describing the status
20909
- # for each link on the Interconnect.
20910
- # Corresponds to the JSON property `links`
20911
- # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsLinkStatus>]
20912
- attr_accessor :links
20913
-
20914
- # The MAC address of the Interconnect's bundle interface.
20915
- # Corresponds to the JSON property `macAddress`
20916
- # @return [String]
20917
- attr_accessor :mac_address
20918
-
20919
- def initialize(**args)
20920
- update!(**args)
20921
- end
22635
+ attr_accessor :group_status
20922
22636
 
20923
- # Update properties of this object
20924
- def update!(**args)
20925
- @arp_caches = args[:arp_caches] if args.key?(:arp_caches)
20926
- @bundle_aggregation_type = args[:bundle_aggregation_type] if args.key?(:bundle_aggregation_type)
20927
- @bundle_operational_status = args[:bundle_operational_status] if args.key?(:bundle_operational_status)
20928
- @links = args[:links] if args.key?(:links)
20929
- @mac_address = args[:mac_address] if args.key?(:mac_address)
20930
- end
20931
- end
20932
-
20933
- # Describing the ARP neighbor entries seen on this link
20934
- class InterconnectDiagnosticsArpEntry
20935
- include Google::Apis::Core::Hashable
20936
-
20937
- # The IP address of this ARP neighbor.
20938
- # Corresponds to the JSON property `ipAddress`
20939
- # @return [String]
20940
- attr_accessor :ip_address
22637
+ # The user's intent for this group. This is the only required field besides the
22638
+ # name that must be specified on group creation.
22639
+ # Corresponds to the JSON property `intent`
22640
+ # @return [Google::Apis::ComputeV1::InterconnectGroupIntent]
22641
+ attr_accessor :intent
20941
22642
 
20942
- # The MAC address of this ARP neighbor.
20943
- # Corresponds to the JSON property `macAddress`
20944
- # @return [String]
20945
- attr_accessor :mac_address
20946
-
20947
- def initialize(**args)
20948
- update!(**args)
20949
- end
20950
-
20951
- # Update properties of this object
20952
- def update!(**args)
20953
- @ip_address = args[:ip_address] if args.key?(:ip_address)
20954
- @mac_address = args[:mac_address] if args.key?(:mac_address)
20955
- end
20956
- end
20957
-
20958
- #
20959
- class InterconnectDiagnosticsLinkLacpStatus
20960
- include Google::Apis::Core::Hashable
20961
-
20962
- # System ID of the port on Google's side of the LACP exchange.
20963
- # Corresponds to the JSON property `googleSystemId`
20964
- # @return [String]
20965
- attr_accessor :google_system_id
20966
-
20967
- # System ID of the port on the neighbor's side of the LACP exchange.
20968
- # Corresponds to the JSON property `neighborSystemId`
20969
- # @return [String]
20970
- attr_accessor :neighbor_system_id
20971
-
20972
- # The state of a LACP link, which can take one of the following values: - ACTIVE:
20973
- # The link is configured and active within the bundle. - DETACHED: The link is
20974
- # not configured within the bundle. This means that the rest of the object
20975
- # should be empty.
20976
- # Corresponds to the JSON property `state`
20977
- # @return [String]
20978
- attr_accessor :state
20979
-
20980
- def initialize(**args)
20981
- update!(**args)
20982
- end
20983
-
20984
- # Update properties of this object
20985
- def update!(**args)
20986
- @google_system_id = args[:google_system_id] if args.key?(:google_system_id)
20987
- @neighbor_system_id = args[:neighbor_system_id] if args.key?(:neighbor_system_id)
20988
- @state = args[:state] if args.key?(:state)
20989
- end
20990
- end
20991
-
20992
- #
20993
- class InterconnectDiagnosticsLinkOpticalPower
20994
- include Google::Apis::Core::Hashable
20995
-
20996
- # The status of the current value when compared to the warning and alarm levels
20997
- # for the receiving or transmitting transceiver. Possible states include: - OK:
20998
- # The value has not crossed a warning threshold. - LOW_WARNING: The value has
20999
- # crossed below the low warning threshold. - HIGH_WARNING: The value has crossed
21000
- # above the high warning threshold. - LOW_ALARM: The value has crossed below the
21001
- # low alarm threshold. - HIGH_ALARM: The value has crossed above the high alarm
21002
- # threshold.
21003
- # Corresponds to the JSON property `state`
21004
- # @return [String]
21005
- attr_accessor :state
22643
+ #
22644
+ # Corresponds to the JSON property `interconnectStatuses`
22645
+ # @return [Array<Google::Apis::ComputeV1::InterconnectGroupsOperationalStatusInterconnectStatus>]
22646
+ attr_accessor :interconnect_statuses
21006
22647
 
21007
- # Value of the current receiving or transmitting optical power, read in dBm.
21008
- # Take a known good optical value, give it a 10% margin and trigger warnings
21009
- # relative to that value. In general, a -7dBm warning and a -11dBm alarm are
21010
- # good optical value estimates for most links.
21011
- # Corresponds to the JSON property `value`
21012
- # @return [Float]
21013
- attr_accessor :value
22648
+ # [Output Only] The status of the group as configured. This has the same
22649
+ # structure as the operational field reported by the OperationalStatus method,
22650
+ # but does not take into account the operational status of each resource.
22651
+ # Corresponds to the JSON property `operational`
22652
+ # @return [Google::Apis::ComputeV1::InterconnectGroupConfigured]
22653
+ attr_accessor :operational
21014
22654
 
21015
22655
  def initialize(**args)
21016
22656
  update!(**args)
@@ -21018,90 +22658,40 @@ module Google
21018
22658
 
21019
22659
  # Update properties of this object
21020
22660
  def update!(**args)
21021
- @state = args[:state] if args.key?(:state)
21022
- @value = args[:value] if args.key?(:value)
22661
+ @configured = args[:configured] if args.key?(:configured)
22662
+ @group_status = args[:group_status] if args.key?(:group_status)
22663
+ @intent = args[:intent] if args.key?(:intent)
22664
+ @interconnect_statuses = args[:interconnect_statuses] if args.key?(:interconnect_statuses)
22665
+ @operational = args[:operational] if args.key?(:operational)
21023
22666
  end
21024
22667
  end
21025
22668
 
21026
- #
21027
- class InterconnectDiagnosticsLinkStatus
22669
+ # The status of one Interconnect in the group. The order is arbitrary.
22670
+ class InterconnectGroupsOperationalStatusInterconnectStatus
21028
22671
  include Google::Apis::Core::Hashable
21029
22672
 
21030
- # A list of InterconnectDiagnostics.ARPEntry objects, describing the ARP
21031
- # neighbor entries seen on this link. This will be empty if the link is bundled
21032
- # Corresponds to the JSON property `arpCaches`
21033
- # @return [Array<Google::Apis::ComputeV1::InterconnectDiagnosticsArpEntry>]
21034
- attr_accessor :arp_caches
21035
-
21036
- # The unique ID for this link assigned during turn up by Google.
21037
- # Corresponds to the JSON property `circuitId`
21038
- # @return [String]
21039
- attr_accessor :circuit_id
21040
-
21041
- # The Demarc address assigned by Google and provided in the LoA.
21042
- # Corresponds to the JSON property `googleDemarc`
21043
- # @return [String]
21044
- attr_accessor :google_demarc
21045
-
21046
- #
21047
- # Corresponds to the JSON property `lacpStatus`
21048
- # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkLacpStatus]
21049
- attr_accessor :lacp_status
22673
+ # Whether the Interconnect is enabled.
22674
+ # Corresponds to the JSON property `adminEnabled`
22675
+ # @return [Boolean]
22676
+ attr_accessor :admin_enabled
22677
+ alias_method :admin_enabled?, :admin_enabled
21050
22678
 
21051
- # Describes the status of MACsec encryption on the link.
21052
- # Corresponds to the JSON property `macsec`
21053
- # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsMacsecStatus]
21054
- attr_accessor :macsec
22679
+ # Diagnostics information about the Interconnect connection, which contains
22680
+ # detailed and current technical information about Google's side of the
22681
+ # connection.
22682
+ # Corresponds to the JSON property `diagnostics`
22683
+ # @return [Google::Apis::ComputeV1::InterconnectDiagnostics]
22684
+ attr_accessor :diagnostics
21055
22685
 
21056
- # The operational status of the link.
21057
- # Corresponds to the JSON property `operationalStatus`
22686
+ # The URL of the Interconnect being described.
22687
+ # Corresponds to the JSON property `interconnect`
21058
22688
  # @return [String]
21059
- attr_accessor :operational_status
21060
-
21061
- # An InterconnectDiagnostics.LinkOpticalPower object, describing the current
21062
- # value and status of the received light level.
21063
- # Corresponds to the JSON property `receivingOpticalPower`
21064
- # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkOpticalPower]
21065
- attr_accessor :receiving_optical_power
21066
-
21067
- # An InterconnectDiagnostics.LinkOpticalPower object, describing the current
21068
- # value and status of the transmitted light level.
21069
- # Corresponds to the JSON property `transmittingOpticalPower`
21070
- # @return [Google::Apis::ComputeV1::InterconnectDiagnosticsLinkOpticalPower]
21071
- attr_accessor :transmitting_optical_power
21072
-
21073
- def initialize(**args)
21074
- update!(**args)
21075
- end
21076
-
21077
- # Update properties of this object
21078
- def update!(**args)
21079
- @arp_caches = args[:arp_caches] if args.key?(:arp_caches)
21080
- @circuit_id = args[:circuit_id] if args.key?(:circuit_id)
21081
- @google_demarc = args[:google_demarc] if args.key?(:google_demarc)
21082
- @lacp_status = args[:lacp_status] if args.key?(:lacp_status)
21083
- @macsec = args[:macsec] if args.key?(:macsec)
21084
- @operational_status = args[:operational_status] if args.key?(:operational_status)
21085
- @receiving_optical_power = args[:receiving_optical_power] if args.key?(:receiving_optical_power)
21086
- @transmitting_optical_power = args[:transmitting_optical_power] if args.key?(:transmitting_optical_power)
21087
- end
21088
- end
21089
-
21090
- # Describes the status of MACsec encryption on the link.
21091
- class InterconnectDiagnosticsMacsecStatus
21092
- include Google::Apis::Core::Hashable
22689
+ attr_accessor :interconnect
21093
22690
 
21094
- # Indicates the Connectivity Association Key Name (CKN) currently being used if
21095
- # MACsec is operational.
21096
- # Corresponds to the JSON property `ckn`
22691
+ # Whether this interconnect is participating in the redundant configuration.
22692
+ # Corresponds to the JSON property `isActive`
21097
22693
  # @return [String]
21098
- attr_accessor :ckn
21099
-
21100
- # Indicates whether or not MACsec is operational on this link.
21101
- # Corresponds to the JSON property `operational`
21102
- # @return [Boolean]
21103
- attr_accessor :operational
21104
- alias_method :operational?, :operational
22694
+ attr_accessor :is_active
21105
22695
 
21106
22696
  def initialize(**args)
21107
22697
  update!(**args)
@@ -21109,8 +22699,10 @@ module Google
21109
22699
 
21110
22700
  # Update properties of this object
21111
22701
  def update!(**args)
21112
- @ckn = args[:ckn] if args.key?(:ckn)
21113
- @operational = args[:operational] if args.key?(:operational)
22702
+ @admin_enabled = args[:admin_enabled] if args.key?(:admin_enabled)
22703
+ @diagnostics = args[:diagnostics] if args.key?(:diagnostics)
22704
+ @interconnect = args[:interconnect] if args.key?(:interconnect)
22705
+ @is_active = args[:is_active] if args.key?(:is_active)
21114
22706
  end
21115
22707
  end
21116
22708
 
@@ -21260,7 +22852,7 @@ module Google
21260
22852
 
21261
22853
  # [Output only] List of link types available at this InterconnectLocation, which
21262
22854
  # can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR -
21263
- # LINK_TYPE_ETHERNET_100G_LR
22855
+ # LINK_TYPE_ETHERNET_100G_LR - LINK_TYPE_ETHERNET_400G_LR4
21264
22856
  # Corresponds to the JSON property `availableLinkTypes`
21265
22857
  # @return [Array<String>]
21266
22858
  attr_accessor :available_link_types
@@ -22152,6 +23744,18 @@ module Google
22152
23744
  class License
22153
23745
  include Google::Apis::Core::Hashable
22154
23746
 
23747
+ # Specifies licenseCodes of licenses that can replace this license. Note: such
23748
+ # replacements are allowed even if removable_from_disk is false.
23749
+ # Corresponds to the JSON property `allowedReplacementLicenses`
23750
+ # @return [Array<String>]
23751
+ attr_accessor :allowed_replacement_licenses
23752
+
23753
+ # If true, this license can be appended to an existing disk's set of licenses.
23754
+ # Corresponds to the JSON property `appendableToDisk`
23755
+ # @return [Boolean]
23756
+ attr_accessor :appendable_to_disk
23757
+ alias_method :appendable_to_disk?, :appendable_to_disk
23758
+
22155
23759
  # [Output Only] Deprecated. This field no longer reflects whether a license
22156
23760
  # charges a usage fee.
22157
23761
  # Corresponds to the JSON property `chargesUseFee`
@@ -22176,6 +23780,13 @@ module Google
22176
23780
  # @return [Fixnum]
22177
23781
  attr_accessor :id
22178
23782
 
23783
+ # Specifies licenseCodes of licenses that are incompatible with this license. If
23784
+ # a license is incompatible with this license, it cannot be attached to the same
23785
+ # disk or image.
23786
+ # Corresponds to the JSON property `incompatibleLicenses`
23787
+ # @return [Array<String>]
23788
+ attr_accessor :incompatible_licenses
23789
+
22179
23790
  # [Output Only] Type of resource. Always compute#license for licenses.
22180
23791
  # Corresponds to the JSON property `kind`
22181
23792
  # @return [String]
@@ -22187,12 +23798,47 @@ module Google
22187
23798
  # @return [Fixnum]
22188
23799
  attr_accessor :license_code
22189
23800
 
23801
+ # A Duration represents a fixed-length span of time represented as a count of
23802
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
23803
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
23804
+ # 000 years.
23805
+ # Corresponds to the JSON property `minimumRetention`
23806
+ # @return [Google::Apis::ComputeV1::Duration]
23807
+ attr_accessor :minimum_retention
23808
+
23809
+ # If true, this license can only be used on VMs on multi tenant nodes.
23810
+ # Corresponds to the JSON property `multiTenantOnly`
23811
+ # @return [Boolean]
23812
+ attr_accessor :multi_tenant_only
23813
+ alias_method :multi_tenant_only?, :multi_tenant_only
23814
+
22190
23815
  # Name of the resource. The name must be 1-63 characters long and comply with
22191
23816
  # RFC1035.
22192
23817
  # Corresponds to the JSON property `name`
22193
23818
  # @return [String]
22194
23819
  attr_accessor :name
22195
23820
 
23821
+ # If true, indicates this is an OS license. Only one OS license can be attached
23822
+ # to a disk or image at a time.
23823
+ # Corresponds to the JSON property `osLicense`
23824
+ # @return [Boolean]
23825
+ attr_accessor :os_license
23826
+ alias_method :os_license?, :os_license
23827
+
23828
+ # If true, this license can be removed from a disk's set of licenses, with no
23829
+ # replacement license needed.
23830
+ # Corresponds to the JSON property `removableFromDisk`
23831
+ # @return [Boolean]
23832
+ attr_accessor :removable_from_disk
23833
+ alias_method :removable_from_disk?, :removable_from_disk
23834
+
23835
+ # Specifies the set of permissible coattached licenseCodes of licenses that
23836
+ # satisfy the coattachment requirement of this license. At least one license
23837
+ # from the set must be attached to the same disk or image as this license.
23838
+ # Corresponds to the JSON property `requiredCoattachedLicenses`
23839
+ # @return [Array<String>]
23840
+ attr_accessor :required_coattached_licenses
23841
+
22196
23842
  # [Input Only] Deprecated.
22197
23843
  # Corresponds to the JSON property `resourceRequirements`
22198
23844
  # @return [Google::Apis::ComputeV1::LicenseResourceRequirements]
@@ -22203,6 +23849,17 @@ module Google
22203
23849
  # @return [String]
22204
23850
  attr_accessor :self_link
22205
23851
 
23852
+ # [Output Only] Server-defined URL for this resource with the resource id.
23853
+ # Corresponds to the JSON property `selfLinkWithId`
23854
+ # @return [String]
23855
+ attr_accessor :self_link_with_id
23856
+
23857
+ # If true, this license can only be used on VMs on sole tenant nodes.
23858
+ # Corresponds to the JSON property `soleTenantOnly`
23859
+ # @return [Boolean]
23860
+ attr_accessor :sole_tenant_only
23861
+ alias_method :sole_tenant_only?, :sole_tenant_only
23862
+
22206
23863
  # If false, licenses will not be copied from the source resource when creating
22207
23864
  # an image from a disk, disk from snapshot, or snapshot from disk.
22208
23865
  # Corresponds to the JSON property `transferable`
@@ -22210,22 +23867,38 @@ module Google
22210
23867
  attr_accessor :transferable
22211
23868
  alias_method :transferable?, :transferable
22212
23869
 
23870
+ # [Output Only] Last update timestamp in RFC3339 text format.
23871
+ # Corresponds to the JSON property `updateTimestamp`
23872
+ # @return [String]
23873
+ attr_accessor :update_timestamp
23874
+
22213
23875
  def initialize(**args)
22214
23876
  update!(**args)
22215
23877
  end
22216
23878
 
22217
23879
  # Update properties of this object
22218
23880
  def update!(**args)
23881
+ @allowed_replacement_licenses = args[:allowed_replacement_licenses] if args.key?(:allowed_replacement_licenses)
23882
+ @appendable_to_disk = args[:appendable_to_disk] if args.key?(:appendable_to_disk)
22219
23883
  @charges_use_fee = args[:charges_use_fee] if args.key?(:charges_use_fee)
22220
23884
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
22221
23885
  @description = args[:description] if args.key?(:description)
22222
23886
  @id = args[:id] if args.key?(:id)
23887
+ @incompatible_licenses = args[:incompatible_licenses] if args.key?(:incompatible_licenses)
22223
23888
  @kind = args[:kind] if args.key?(:kind)
22224
23889
  @license_code = args[:license_code] if args.key?(:license_code)
23890
+ @minimum_retention = args[:minimum_retention] if args.key?(:minimum_retention)
23891
+ @multi_tenant_only = args[:multi_tenant_only] if args.key?(:multi_tenant_only)
22225
23892
  @name = args[:name] if args.key?(:name)
23893
+ @os_license = args[:os_license] if args.key?(:os_license)
23894
+ @removable_from_disk = args[:removable_from_disk] if args.key?(:removable_from_disk)
23895
+ @required_coattached_licenses = args[:required_coattached_licenses] if args.key?(:required_coattached_licenses)
22226
23896
  @resource_requirements = args[:resource_requirements] if args.key?(:resource_requirements)
22227
23897
  @self_link = args[:self_link] if args.key?(:self_link)
23898
+ @self_link_with_id = args[:self_link_with_id] if args.key?(:self_link_with_id)
23899
+ @sole_tenant_only = args[:sole_tenant_only] if args.key?(:sole_tenant_only)
22228
23900
  @transferable = args[:transferable] if args.key?(:transferable)
23901
+ @update_timestamp = args[:update_timestamp] if args.key?(:update_timestamp)
22229
23902
  end
22230
23903
  end
22231
23904
 
@@ -22673,6 +24346,23 @@ module Google
22673
24346
  # @return [String]
22674
24347
  attr_accessor :kind
22675
24348
 
24349
+ # A fingerprint for the labels being applied to this machine image, which is
24350
+ # essentially a hash of the labels set used for optimistic locking. The
24351
+ # fingerprint is initially generated by Compute Engine and changes after every
24352
+ # request to modify or update labels. You must always provide an up-to-date
24353
+ # fingerprint hash in order to update or change labels. To see the latest
24354
+ # fingerprint, make get() request to the machine image.
24355
+ # Corresponds to the JSON property `labelFingerprint`
24356
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
24357
+ # @return [String]
24358
+ attr_accessor :label_fingerprint
24359
+
24360
+ # Labels to apply to this machine image. These can be later modified by the
24361
+ # setLabels method.
24362
+ # Corresponds to the JSON property `labels`
24363
+ # @return [Hash<String,String>]
24364
+ attr_accessor :labels
24365
+
22676
24366
  # Encrypts the machine image using a customer-supplied encryption key. After you
22677
24367
  # encrypt a machine image using a customer-supplied key, you must provide the
22678
24368
  # same key if you use the machine image later. For example, you must provide the
@@ -22769,6 +24459,8 @@ module Google
22769
24459
  @id = args[:id] if args.key?(:id)
22770
24460
  @instance_properties = args[:instance_properties] if args.key?(:instance_properties)
22771
24461
  @kind = args[:kind] if args.key?(:kind)
24462
+ @label_fingerprint = args[:label_fingerprint] if args.key?(:label_fingerprint)
24463
+ @labels = args[:labels] if args.key?(:labels)
22772
24464
  @machine_image_encryption_key = args[:machine_image_encryption_key] if args.key?(:machine_image_encryption_key)
22773
24465
  @name = args[:name] if args.key?(:name)
22774
24466
  @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
@@ -22985,11 +24677,6 @@ module Google
22985
24677
  # @return [String]
22986
24678
  attr_accessor :name
22987
24679
 
22988
- # [Output Only] A list of extended scratch disks assigned to the instance.
22989
- # Corresponds to the JSON property `scratchDisks`
22990
- # @return [Array<Google::Apis::ComputeV1::MachineType::ScratchDisk>]
22991
- attr_accessor :scratch_disks
22992
-
22993
24680
  # [Output Only] Server-defined URL for the resource.
22994
24681
  # Corresponds to the JSON property `selfLink`
22995
24682
  # @return [String]
@@ -23021,7 +24708,6 @@ module Google
23021
24708
  @maximum_persistent_disks_size_gb = args[:maximum_persistent_disks_size_gb] if args.key?(:maximum_persistent_disks_size_gb)
23022
24709
  @memory_mb = args[:memory_mb] if args.key?(:memory_mb)
23023
24710
  @name = args[:name] if args.key?(:name)
23024
- @scratch_disks = args[:scratch_disks] if args.key?(:scratch_disks)
23025
24711
  @self_link = args[:self_link] if args.key?(:self_link)
23026
24712
  @zone = args[:zone] if args.key?(:zone)
23027
24713
  end
@@ -23050,25 +24736,6 @@ module Google
23050
24736
  @guest_accelerator_type = args[:guest_accelerator_type] if args.key?(:guest_accelerator_type)
23051
24737
  end
23052
24738
  end
23053
-
23054
- #
23055
- class ScratchDisk
23056
- include Google::Apis::Core::Hashable
23057
-
23058
- # Size of the scratch disk, defined in GB.
23059
- # Corresponds to the JSON property `diskGb`
23060
- # @return [Fixnum]
23061
- attr_accessor :disk_gb
23062
-
23063
- def initialize(**args)
23064
- update!(**args)
23065
- end
23066
-
23067
- # Update properties of this object
23068
- def update!(**args)
23069
- @disk_gb = args[:disk_gb] if args.key?(:disk_gb)
23070
- end
23071
- end
23072
24739
  end
23073
24740
 
23074
24741
  #
@@ -26325,7 +27992,7 @@ module Google
26325
27992
  # @return [String]
26326
27993
  attr_accessor :network
26327
27994
 
26328
- # Maximum Transmission Unit in bytes.
27995
+ # [Output Only] Maximum Transmission Unit in bytes of the peer network.
26329
27996
  # Corresponds to the JSON property `peerMtu`
26330
27997
  # @return [Fixnum]
26331
27998
  attr_accessor :peer_mtu
@@ -26516,6 +28183,11 @@ module Google
26516
28183
  # @return [String]
26517
28184
  attr_accessor :allow_cloud_router
26518
28185
 
28186
+ # Specifies whether default NIC attachment is allowed.
28187
+ # Corresponds to the JSON property `allowDefaultNicAttachment`
28188
+ # @return [String]
28189
+ attr_accessor :allow_default_nic_attachment
28190
+
26519
28191
  # Specifies whether VMs are allowed to have external IP access on network
26520
28192
  # interfaces connected to this VPC.
26521
28193
  # Corresponds to the JSON property `allowExternalIpAccess`
@@ -26527,6 +28199,11 @@ module Google
26527
28199
  # @return [String]
26528
28200
  attr_accessor :allow_interconnect
26529
28201
 
28202
+ # Specifies whether IP forwarding is allowed.
28203
+ # Corresponds to the JSON property `allowIpForwarding`
28204
+ # @return [String]
28205
+ attr_accessor :allow_ip_forwarding
28206
+
26530
28207
  # Specifies whether cloud load balancing is allowed.
26531
28208
  # Corresponds to the JSON property `allowLoadBalancing`
26532
28209
  # @return [String]
@@ -26537,6 +28214,16 @@ module Google
26537
28214
  # @return [String]
26538
28215
  attr_accessor :allow_multi_nic_in_same_network
26539
28216
 
28217
+ # Specifies whether NCC is allowed.
28218
+ # Corresponds to the JSON property `allowNcc`
28219
+ # @return [String]
28220
+ attr_accessor :allow_ncc
28221
+
28222
+ # Specifies whether VM network migration is allowed.
28223
+ # Corresponds to the JSON property `allowNetworkMigration`
28224
+ # @return [String]
28225
+ attr_accessor :allow_network_migration
28226
+
26540
28227
  # Specifies whether Packet Mirroring 1.0 is supported.
26541
28228
  # Corresponds to the JSON property `allowPacketMirroring`
26542
28229
  # @return [String]
@@ -26593,6 +28280,16 @@ module Google
26593
28280
  # @return [Array<String>]
26594
28281
  attr_accessor :subnet_stack_types
26595
28282
 
28283
+ # Specifies which subnetwork purposes are supported.
28284
+ # Corresponds to the JSON property `subnetworkPurposes`
28285
+ # @return [Array<String>]
28286
+ attr_accessor :subnetwork_purposes
28287
+
28288
+ # Specifies which subnetwork stack types are supported.
28289
+ # Corresponds to the JSON property `subnetworkStackTypes`
28290
+ # @return [Array<String>]
28291
+ attr_accessor :subnetwork_stack_types
28292
+
26596
28293
  # Specifies which type of unicast is supported.
26597
28294
  # Corresponds to the JSON property `unicast`
26598
28295
  # @return [String]
@@ -26610,10 +28307,14 @@ module Google
26610
28307
  @allow_class_d_firewalls = args[:allow_class_d_firewalls] if args.key?(:allow_class_d_firewalls)
26611
28308
  @allow_cloud_nat = args[:allow_cloud_nat] if args.key?(:allow_cloud_nat)
26612
28309
  @allow_cloud_router = args[:allow_cloud_router] if args.key?(:allow_cloud_router)
28310
+ @allow_default_nic_attachment = args[:allow_default_nic_attachment] if args.key?(:allow_default_nic_attachment)
26613
28311
  @allow_external_ip_access = args[:allow_external_ip_access] if args.key?(:allow_external_ip_access)
26614
28312
  @allow_interconnect = args[:allow_interconnect] if args.key?(:allow_interconnect)
28313
+ @allow_ip_forwarding = args[:allow_ip_forwarding] if args.key?(:allow_ip_forwarding)
26615
28314
  @allow_load_balancing = args[:allow_load_balancing] if args.key?(:allow_load_balancing)
26616
28315
  @allow_multi_nic_in_same_network = args[:allow_multi_nic_in_same_network] if args.key?(:allow_multi_nic_in_same_network)
28316
+ @allow_ncc = args[:allow_ncc] if args.key?(:allow_ncc)
28317
+ @allow_network_migration = args[:allow_network_migration] if args.key?(:allow_network_migration)
26617
28318
  @allow_packet_mirroring = args[:allow_packet_mirroring] if args.key?(:allow_packet_mirroring)
26618
28319
  @allow_private_google_access = args[:allow_private_google_access] if args.key?(:allow_private_google_access)
26619
28320
  @allow_psc = args[:allow_psc] if args.key?(:allow_psc)
@@ -26625,6 +28326,8 @@ module Google
26625
28326
  @interface_types = args[:interface_types] if args.key?(:interface_types)
26626
28327
  @subnet_purposes = args[:subnet_purposes] if args.key?(:subnet_purposes)
26627
28328
  @subnet_stack_types = args[:subnet_stack_types] if args.key?(:subnet_stack_types)
28329
+ @subnetwork_purposes = args[:subnetwork_purposes] if args.key?(:subnetwork_purposes)
28330
+ @subnetwork_stack_types = args[:subnetwork_stack_types] if args.key?(:subnetwork_stack_types)
26628
28331
  @unicast = args[:unicast] if args.key?(:unicast)
26629
28332
  end
26630
28333
  end
@@ -31608,8 +33311,8 @@ module Google
31608
33311
  # following values: - `INITIALIZING` The public delegated prefix is being
31609
33312
  # initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The
31610
33313
  # public delegated prefix is a live migration prefix and is active. - `ANNOUNCED`
31611
- # The public delegated prefix is active. - `DELETING` The public delegated
31612
- # prefix is being deprovsioned.
33314
+ # The public delegated prefix is announced and ready to use. - `DELETING` The
33315
+ # public delegated prefix is being deprovsioned.
31613
33316
  # Corresponds to the JSON property `status`
31614
33317
  # @return [String]
31615
33318
  attr_accessor :status
@@ -34023,6 +35726,25 @@ module Google
34023
35726
  # @return [String]
34024
35727
  attr_accessor :creation_timestamp
34025
35728
 
35729
+ # A Duration represents a fixed-length span of time represented as a count of
35730
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
35731
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
35732
+ # 000 years.
35733
+ # Corresponds to the JSON property `deleteAfterDuration`
35734
+ # @return [Google::Apis::ComputeV1::Duration]
35735
+ attr_accessor :delete_after_duration
35736
+
35737
+ # Absolute time in future when the reservation will be auto-deleted by Compute
35738
+ # Engine. Timestamp is represented in RFC3339 text format.
35739
+ # Corresponds to the JSON property `deleteAtTime`
35740
+ # @return [String]
35741
+ attr_accessor :delete_at_time
35742
+
35743
+ # Specifies the deployment strategy for this reservation.
35744
+ # Corresponds to the JSON property `deploymentType`
35745
+ # @return [String]
35746
+ attr_accessor :deployment_type
35747
+
34026
35748
  # An optional description of this resource. Provide this property when you
34027
35749
  # create the resource.
34028
35750
  # Corresponds to the JSON property `description`
@@ -34041,6 +35763,12 @@ module Google
34041
35763
  # @return [String]
34042
35764
  attr_accessor :kind
34043
35765
 
35766
+ # [Output Only] Full or partial URL to parent commitments. This field displays
35767
+ # for reservations that are tied to multiple commitments.
35768
+ # Corresponds to the JSON property `linkedCommitments`
35769
+ # @return [Array<String>]
35770
+ attr_accessor :linked_commitments
35771
+
34044
35772
  # The name of the resource, provided by the client when initially creating the
34045
35773
  # resource. The resource name must be 1-63 characters long, and comply with
34046
35774
  # RFC1035. Specifically, the name must be 1-63 characters long and match the
@@ -34122,9 +35850,13 @@ module Google
34122
35850
  @aggregate_reservation = args[:aggregate_reservation] if args.key?(:aggregate_reservation)
34123
35851
  @commitment = args[:commitment] if args.key?(:commitment)
34124
35852
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
35853
+ @delete_after_duration = args[:delete_after_duration] if args.key?(:delete_after_duration)
35854
+ @delete_at_time = args[:delete_at_time] if args.key?(:delete_at_time)
35855
+ @deployment_type = args[:deployment_type] if args.key?(:deployment_type)
34125
35856
  @description = args[:description] if args.key?(:description)
34126
35857
  @id = args[:id] if args.key?(:id)
34127
35858
  @kind = args[:kind] if args.key?(:kind)
35859
+ @linked_commitments = args[:linked_commitments] if args.key?(:linked_commitments)
34128
35860
  @name = args[:name] if args.key?(:name)
34129
35861
  @reservation_sharing_policy = args[:reservation_sharing_policy] if args.key?(:reservation_sharing_policy)
34130
35862
  @resource_policies = args[:resource_policies] if args.key?(:resource_policies)
@@ -34300,6 +36032,259 @@ module Google
34300
36032
  end
34301
36033
  end
34302
36034
 
36035
+ # Represents a reservation block resource.
36036
+ class ReservationBlock
36037
+ include Google::Apis::Core::Hashable
36038
+
36039
+ # [Output Only] The number of resources that are allocated in this reservation
36040
+ # block.
36041
+ # Corresponds to the JSON property `count`
36042
+ # @return [Fixnum]
36043
+ attr_accessor :count
36044
+
36045
+ # [Output Only] Creation timestamp in RFC3339 text format.
36046
+ # Corresponds to the JSON property `creationTimestamp`
36047
+ # @return [String]
36048
+ attr_accessor :creation_timestamp
36049
+
36050
+ # [Output Only] The unique identifier for the resource. This identifier is
36051
+ # defined by the server.
36052
+ # Corresponds to the JSON property `id`
36053
+ # @return [Fixnum]
36054
+ attr_accessor :id
36055
+
36056
+ # [Output Only] The number of instances that are currently in use on this
36057
+ # reservation block.
36058
+ # Corresponds to the JSON property `inUseCount`
36059
+ # @return [Fixnum]
36060
+ attr_accessor :in_use_count
36061
+
36062
+ # [Output Only] Type of the resource. Always compute#reservationBlock for
36063
+ # reservation blocks.
36064
+ # Corresponds to the JSON property `kind`
36065
+ # @return [String]
36066
+ attr_accessor :kind
36067
+
36068
+ # [Output Only] The name of this reservation block generated by Google Compute
36069
+ # Engine. The name must be 1-63 characters long, and comply with RFC1035 @
36070
+ # pattern [a-z](?:[-a-z0-9]`0,61`[a-z0-9])?
36071
+ # Corresponds to the JSON property `name`
36072
+ # @return [String]
36073
+ attr_accessor :name
36074
+
36075
+ # [Output Only] The physical topology of the reservation block.
36076
+ # Corresponds to the JSON property `physicalTopology`
36077
+ # @return [Google::Apis::ComputeV1::ReservationBlockPhysicalTopology]
36078
+ attr_accessor :physical_topology
36079
+
36080
+ # Maintenance Info for ReservationBlocks.
36081
+ # Corresponds to the JSON property `reservationMaintenance`
36082
+ # @return [Google::Apis::ComputeV1::GroupMaintenanceInfo]
36083
+ attr_accessor :reservation_maintenance
36084
+
36085
+ # [Output Only] Server-defined fully-qualified URL for this resource.
36086
+ # Corresponds to the JSON property `selfLink`
36087
+ # @return [String]
36088
+ attr_accessor :self_link
36089
+
36090
+ # [Output Only] Server-defined URL for this resource with the resource id.
36091
+ # Corresponds to the JSON property `selfLinkWithId`
36092
+ # @return [String]
36093
+ attr_accessor :self_link_with_id
36094
+
36095
+ # [Output Only] Status of the reservation block.
36096
+ # Corresponds to the JSON property `status`
36097
+ # @return [String]
36098
+ attr_accessor :status
36099
+
36100
+ # [Output Only] Zone in which the reservation block resides.
36101
+ # Corresponds to the JSON property `zone`
36102
+ # @return [String]
36103
+ attr_accessor :zone
36104
+
36105
+ def initialize(**args)
36106
+ update!(**args)
36107
+ end
36108
+
36109
+ # Update properties of this object
36110
+ def update!(**args)
36111
+ @count = args[:count] if args.key?(:count)
36112
+ @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
36113
+ @id = args[:id] if args.key?(:id)
36114
+ @in_use_count = args[:in_use_count] if args.key?(:in_use_count)
36115
+ @kind = args[:kind] if args.key?(:kind)
36116
+ @name = args[:name] if args.key?(:name)
36117
+ @physical_topology = args[:physical_topology] if args.key?(:physical_topology)
36118
+ @reservation_maintenance = args[:reservation_maintenance] if args.key?(:reservation_maintenance)
36119
+ @self_link = args[:self_link] if args.key?(:self_link)
36120
+ @self_link_with_id = args[:self_link_with_id] if args.key?(:self_link_with_id)
36121
+ @status = args[:status] if args.key?(:status)
36122
+ @zone = args[:zone] if args.key?(:zone)
36123
+ end
36124
+ end
36125
+
36126
+ #
36127
+ class ReservationBlockPhysicalTopology
36128
+ include Google::Apis::Core::Hashable
36129
+
36130
+ # The hash of the capacity block within the cluster.
36131
+ # Corresponds to the JSON property `block`
36132
+ # @return [String]
36133
+ attr_accessor :block
36134
+
36135
+ # The cluster name of the reservation block.
36136
+ # Corresponds to the JSON property `cluster`
36137
+ # @return [String]
36138
+ attr_accessor :cluster
36139
+
36140
+ def initialize(**args)
36141
+ update!(**args)
36142
+ end
36143
+
36144
+ # Update properties of this object
36145
+ def update!(**args)
36146
+ @block = args[:block] if args.key?(:block)
36147
+ @cluster = args[:cluster] if args.key?(:cluster)
36148
+ end
36149
+ end
36150
+
36151
+ #
36152
+ class ReservationBlocksGetResponse
36153
+ include Google::Apis::Core::Hashable
36154
+
36155
+ # Represents a reservation block resource.
36156
+ # Corresponds to the JSON property `resource`
36157
+ # @return [Google::Apis::ComputeV1::ReservationBlock]
36158
+ attr_accessor :resource
36159
+
36160
+ def initialize(**args)
36161
+ update!(**args)
36162
+ end
36163
+
36164
+ # Update properties of this object
36165
+ def update!(**args)
36166
+ @resource = args[:resource] if args.key?(:resource)
36167
+ end
36168
+ end
36169
+
36170
+ # A list of reservation blocks under a single reservation.
36171
+ class ReservationBlocksListResponse
36172
+ include Google::Apis::Core::Hashable
36173
+
36174
+ # Unique identifier for the resource; defined by the server.
36175
+ # Corresponds to the JSON property `id`
36176
+ # @return [String]
36177
+ attr_accessor :id
36178
+
36179
+ # A list of reservation block resources.
36180
+ # Corresponds to the JSON property `items`
36181
+ # @return [Array<Google::Apis::ComputeV1::ReservationBlock>]
36182
+ attr_accessor :items
36183
+
36184
+ # Type of the resource. Always compute#reservationBlock for a list of
36185
+ # reservation blocks.
36186
+ # Corresponds to the JSON property `kind`
36187
+ # @return [String]
36188
+ attr_accessor :kind
36189
+
36190
+ # This token allows you to get the next page of results for list requests. If
36191
+ # the number of results is larger than maxResults, use the nextPageToken as a
36192
+ # value for the query parameter pageToken in the next list request. Subsequent
36193
+ # list requests will have their own nextPageToken to continue paging through the
36194
+ # results.
36195
+ # Corresponds to the JSON property `nextPageToken`
36196
+ # @return [String]
36197
+ attr_accessor :next_page_token
36198
+
36199
+ # Server-defined URL for this resource.
36200
+ # Corresponds to the JSON property `selfLink`
36201
+ # @return [String]
36202
+ attr_accessor :self_link
36203
+
36204
+ # Informational warning message.
36205
+ # Corresponds to the JSON property `warning`
36206
+ # @return [Google::Apis::ComputeV1::ReservationBlocksListResponse::Warning]
36207
+ attr_accessor :warning
36208
+
36209
+ def initialize(**args)
36210
+ update!(**args)
36211
+ end
36212
+
36213
+ # Update properties of this object
36214
+ def update!(**args)
36215
+ @id = args[:id] if args.key?(:id)
36216
+ @items = args[:items] if args.key?(:items)
36217
+ @kind = args[:kind] if args.key?(:kind)
36218
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
36219
+ @self_link = args[:self_link] if args.key?(:self_link)
36220
+ @warning = args[:warning] if args.key?(:warning)
36221
+ end
36222
+
36223
+ # Informational warning message.
36224
+ class Warning
36225
+ include Google::Apis::Core::Hashable
36226
+
36227
+ # [Output Only] A warning code, if applicable. For example, Compute Engine
36228
+ # returns NO_RESULTS_ON_PAGE if there are no results in the response.
36229
+ # Corresponds to the JSON property `code`
36230
+ # @return [String]
36231
+ attr_accessor :code
36232
+
36233
+ # [Output Only] Metadata about this warning in key: value format. For example: "
36234
+ # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
36235
+ # Corresponds to the JSON property `data`
36236
+ # @return [Array<Google::Apis::ComputeV1::ReservationBlocksListResponse::Warning::Datum>]
36237
+ attr_accessor :data
36238
+
36239
+ # [Output Only] A human-readable description of the warning code.
36240
+ # Corresponds to the JSON property `message`
36241
+ # @return [String]
36242
+ attr_accessor :message
36243
+
36244
+ def initialize(**args)
36245
+ update!(**args)
36246
+ end
36247
+
36248
+ # Update properties of this object
36249
+ def update!(**args)
36250
+ @code = args[:code] if args.key?(:code)
36251
+ @data = args[:data] if args.key?(:data)
36252
+ @message = args[:message] if args.key?(:message)
36253
+ end
36254
+
36255
+ #
36256
+ class Datum
36257
+ include Google::Apis::Core::Hashable
36258
+
36259
+ # [Output Only] A key that provides more detail on the warning being returned.
36260
+ # For example, for warnings where there are no results in a list request for a
36261
+ # particular zone, this key might be scope and the key value might be the zone
36262
+ # name. Other examples might be a key indicating a deprecated resource and a
36263
+ # suggested replacement, or a warning about invalid network settings (for
36264
+ # example, if an instance attempts to perform IP forwarding but is not enabled
36265
+ # for IP forwarding).
36266
+ # Corresponds to the JSON property `key`
36267
+ # @return [String]
36268
+ attr_accessor :key
36269
+
36270
+ # [Output Only] A warning data value corresponding to the key.
36271
+ # Corresponds to the JSON property `value`
36272
+ # @return [String]
36273
+ attr_accessor :value
36274
+
36275
+ def initialize(**args)
36276
+ update!(**args)
36277
+ end
36278
+
36279
+ # Update properties of this object
36280
+ def update!(**args)
36281
+ @key = args[:key] if args.key?(:key)
36282
+ @value = args[:value] if args.key?(:value)
36283
+ end
36284
+ end
36285
+ end
36286
+ end
36287
+
34303
36288
  #
34304
36289
  class ReservationList
34305
36290
  include Google::Apis::Core::Hashable
@@ -34419,6 +36404,44 @@ module Google
34419
36404
  end
34420
36405
  end
34421
36406
 
36407
+ #
36408
+ class ReservationsBlocksPerformMaintenanceRequest
36409
+ include Google::Apis::Core::Hashable
36410
+
36411
+ # Specifies if all, running or unused hosts are in scope for this request.
36412
+ # Corresponds to the JSON property `maintenanceScope`
36413
+ # @return [String]
36414
+ attr_accessor :maintenance_scope
36415
+
36416
+ def initialize(**args)
36417
+ update!(**args)
36418
+ end
36419
+
36420
+ # Update properties of this object
36421
+ def update!(**args)
36422
+ @maintenance_scope = args[:maintenance_scope] if args.key?(:maintenance_scope)
36423
+ end
36424
+ end
36425
+
36426
+ #
36427
+ class ReservationsPerformMaintenanceRequest
36428
+ include Google::Apis::Core::Hashable
36429
+
36430
+ # Specifies if all, running or unused hosts are in scope for this request.
36431
+ # Corresponds to the JSON property `maintenanceScope`
36432
+ # @return [String]
36433
+ attr_accessor :maintenance_scope
36434
+
36435
+ def initialize(**args)
36436
+ update!(**args)
36437
+ end
36438
+
36439
+ # Update properties of this object
36440
+ def update!(**args)
36441
+ @maintenance_scope = args[:maintenance_scope] if args.key?(:maintenance_scope)
36442
+ end
36443
+ end
36444
+
34422
36445
  #
34423
36446
  class ReservationsResizeRequest
34424
36447
  include Google::Apis::Core::Hashable
@@ -37012,6 +39035,13 @@ module Google
37012
39035
  # @return [String]
37013
39036
  attr_accessor :name
37014
39037
 
39038
+ # List of Subnetwork resources whose traffic should be translated by NAT64
39039
+ # Gateway. It is used only when LIST_OF_IPV6_SUBNETWORKS is selected for the
39040
+ # SubnetworkIpRangeToNat64Option above.
39041
+ # Corresponds to the JSON property `nat64Subnetworks`
39042
+ # @return [Array<Google::Apis::ComputeV1::RouterNatSubnetworkToNat64>]
39043
+ attr_accessor :nat64_subnetworks
39044
+
37015
39045
  # Specify the NatIpAllocateOption, which can take one of the following values: -
37016
39046
  # MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are
37017
39047
  # not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY:
@@ -37044,6 +39074,18 @@ module Google
37044
39074
  # @return [String]
37045
39075
  attr_accessor :source_subnetwork_ip_ranges_to_nat
37046
39076
 
39077
+ # Specify the Nat option for NAT64, which can take one of the following values: -
39078
+ # ALL_IPV6_SUBNETWORKS: All of the IP ranges in every Subnetwork are allowed to
39079
+ # Nat. - LIST_OF_IPV6_SUBNETWORKS: A list of Subnetworks are allowed to Nat (
39080
+ # specified in the field nat64_subnetwork below) The default is
39081
+ # NAT64_OPTION_UNSPECIFIED. Note that if this field contains
39082
+ # NAT64_ALL_V6_SUBNETWORKS no other Router.Nat section in this region can also
39083
+ # enable NAT64 for any Subnetworks in this network. Other Router.Nat sections
39084
+ # can still be present to enable NAT44 only.
39085
+ # Corresponds to the JSON property `sourceSubnetworkIpRangesToNat64`
39086
+ # @return [String]
39087
+ attr_accessor :source_subnetwork_ip_ranges_to_nat64
39088
+
37047
39089
  # A list of Subnetwork resources whose traffic should be translated by NAT
37048
39090
  # Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the
37049
39091
  # SubnetworkIpRangeToNatOption above.
@@ -37096,10 +39138,12 @@ module Google
37096
39138
  @max_ports_per_vm = args[:max_ports_per_vm] if args.key?(:max_ports_per_vm)
37097
39139
  @min_ports_per_vm = args[:min_ports_per_vm] if args.key?(:min_ports_per_vm)
37098
39140
  @name = args[:name] if args.key?(:name)
39141
+ @nat64_subnetworks = args[:nat64_subnetworks] if args.key?(:nat64_subnetworks)
37099
39142
  @nat_ip_allocate_option = args[:nat_ip_allocate_option] if args.key?(:nat_ip_allocate_option)
37100
39143
  @nat_ips = args[:nat_ips] if args.key?(:nat_ips)
37101
39144
  @rules = args[:rules] if args.key?(:rules)
37102
39145
  @source_subnetwork_ip_ranges_to_nat = args[:source_subnetwork_ip_ranges_to_nat] if args.key?(:source_subnetwork_ip_ranges_to_nat)
39146
+ @source_subnetwork_ip_ranges_to_nat64 = args[:source_subnetwork_ip_ranges_to_nat64] if args.key?(:source_subnetwork_ip_ranges_to_nat64)
37103
39147
  @subnetworks = args[:subnetworks] if args.key?(:subnetworks)
37104
39148
  @tcp_established_idle_timeout_sec = args[:tcp_established_idle_timeout_sec] if args.key?(:tcp_established_idle_timeout_sec)
37105
39149
  @tcp_time_wait_timeout_sec = args[:tcp_time_wait_timeout_sec] if args.key?(:tcp_time_wait_timeout_sec)
@@ -37267,6 +39311,25 @@ module Google
37267
39311
  end
37268
39312
  end
37269
39313
 
39314
+ # Specifies a subnetwork to enable NAT64.
39315
+ class RouterNatSubnetworkToNat64
39316
+ include Google::Apis::Core::Hashable
39317
+
39318
+ # URL for the subnetwork resource that will use NAT64.
39319
+ # Corresponds to the JSON property `name`
39320
+ # @return [String]
39321
+ attr_accessor :name
39322
+
39323
+ def initialize(**args)
39324
+ update!(**args)
39325
+ end
39326
+
39327
+ # Update properties of this object
39328
+ def update!(**args)
39329
+ @name = args[:name] if args.key?(:name)
39330
+ end
39331
+ end
39332
+
37270
39333
  #
37271
39334
  class RouterStatus
37272
39335
  include Google::Apis::Core::Hashable
@@ -41030,7 +43093,7 @@ module Google
41030
43093
 
41031
43094
  # Represents a Persistent Disk Snapshot resource. You can use snapshots to back
41032
43095
  # up data on a regular interval. For more information, read Creating persistent
41033
- # disk snapshots.
43096
+ # disk snapshots. LINT.IfChange
41034
43097
  class Snapshot
41035
43098
  include Google::Apis::Core::Hashable
41036
43099
 
@@ -41090,6 +43153,13 @@ module Google
41090
43153
  attr_accessor :enable_confidential_compute
41091
43154
  alias_method :enable_confidential_compute?, :enable_confidential_compute
41092
43155
 
43156
+ # [Input Only] Whether to attempt an application consistent snapshot by
43157
+ # informing the OS to prepare for the snapshot process.
43158
+ # Corresponds to the JSON property `guestFlush`
43159
+ # @return [Boolean]
43160
+ attr_accessor :guest_flush
43161
+ alias_method :guest_flush?, :guest_flush
43162
+
41093
43163
  # [Output Only] A list of features to enable on the guest operating system.
41094
43164
  # Applicable only for bootable images. Read Enabling guest operating system
41095
43165
  # features to see a list of available options.
@@ -41287,6 +43357,7 @@ module Google
41287
43357
  @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
41288
43358
  @download_bytes = args[:download_bytes] if args.key?(:download_bytes)
41289
43359
  @enable_confidential_compute = args[:enable_confidential_compute] if args.key?(:enable_confidential_compute)
43360
+ @guest_flush = args[:guest_flush] if args.key?(:guest_flush)
41290
43361
  @guest_os_features = args[:guest_os_features] if args.key?(:guest_os_features)
41291
43362
  @id = args[:id] if args.key?(:id)
41292
43363
  @kind = args[:kind] if args.key?(:kind)
@@ -44276,20 +46347,7 @@ module Google
44276
46347
  # @return [String]
44277
46348
  attr_accessor :private_ipv6_google_access
44278
46349
 
44279
- # The purpose of the resource. This field can be either PRIVATE,
44280
- # GLOBAL_MANAGED_PROXY, REGIONAL_MANAGED_PROXY, PEER_MIGRATION,
44281
- # PRIVATE_SERVICE_CONNECT or PRIVATE_NAT. PRIVATE is the default purpose for
44282
- # user-created subnets or subnets that are automatically created in auto mode
44283
- # networks. Subnets with purpose set to GLOBAL_MANAGED_PROXY or
44284
- # REGIONAL_MANAGED_PROXY are user-created subnetworks that are reserved for
44285
- # Envoy-based load balancers. A subnet with purpose set to
44286
- # PRIVATE_SERVICE_CONNECT is used to publish services using Private Service
44287
- # Connect. A subnet with purpose set to PEER_MIGRATION is used for subnet
44288
- # migration from one peered VPC to another. A subnet with purpose set to
44289
- # PRIVATE_NAT is used for Private NAT IP address by Private NAT Gateway. If
44290
- # unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field
44291
- # isn't supported if the subnet purpose field is set to GLOBAL_MANAGED_PROXY or
44292
- # REGIONAL_MANAGED_PROXY.
46350
+ #
44293
46351
  # Corresponds to the JSON property `purpose`
44294
46352
  # @return [String]
44295
46353
  attr_accessor :purpose
@@ -44346,6 +46404,18 @@ module Google
44346
46404
  # @return [String]
44347
46405
  attr_accessor :state
44348
46406
 
46407
+ # Output only. [Output Only] The array of external IPv6 network ranges reserved
46408
+ # from the subnetwork's external IPv6 range for system use.
46409
+ # Corresponds to the JSON property `systemReservedExternalIpv6Ranges`
46410
+ # @return [Array<String>]
46411
+ attr_accessor :system_reserved_external_ipv6_ranges
46412
+
46413
+ # Output only. [Output Only] The array of internal IPv6 network ranges reserved
46414
+ # from the subnetwork's internal IPv6 range for system use.
46415
+ # Corresponds to the JSON property `systemReservedInternalIpv6Ranges`
46416
+ # @return [Array<String>]
46417
+ attr_accessor :system_reserved_internal_ipv6_ranges
46418
+
44349
46419
  def initialize(**args)
44350
46420
  update!(**args)
44351
46421
  end
@@ -44379,6 +46449,8 @@ module Google
44379
46449
  @self_link = args[:self_link] if args.key?(:self_link)
44380
46450
  @stack_type = args[:stack_type] if args.key?(:stack_type)
44381
46451
  @state = args[:state] if args.key?(:state)
46452
+ @system_reserved_external_ipv6_ranges = args[:system_reserved_external_ipv6_ranges] if args.key?(:system_reserved_external_ipv6_ranges)
46453
+ @system_reserved_internal_ipv6_ranges = args[:system_reserved_internal_ipv6_ranges] if args.key?(:system_reserved_internal_ipv6_ranges)
44382
46454
  end
44383
46455
  end
44384
46456
 
@@ -44838,6 +46910,95 @@ module Google
44838
46910
  end
44839
46911
  end
44840
46912
 
46913
+ #
46914
+ class SubnetworksScopedWarning
46915
+ include Google::Apis::Core::Hashable
46916
+
46917
+ # Name of the scope containing this set of Subnetworks.
46918
+ # Corresponds to the JSON property `scopeName`
46919
+ # @return [String]
46920
+ attr_accessor :scope_name
46921
+
46922
+ # An informational warning about unreachable scope
46923
+ # Corresponds to the JSON property `warning`
46924
+ # @return [Google::Apis::ComputeV1::SubnetworksScopedWarning::Warning]
46925
+ attr_accessor :warning
46926
+
46927
+ def initialize(**args)
46928
+ update!(**args)
46929
+ end
46930
+
46931
+ # Update properties of this object
46932
+ def update!(**args)
46933
+ @scope_name = args[:scope_name] if args.key?(:scope_name)
46934
+ @warning = args[:warning] if args.key?(:warning)
46935
+ end
46936
+
46937
+ # An informational warning about unreachable scope
46938
+ class Warning
46939
+ include Google::Apis::Core::Hashable
46940
+
46941
+ # [Output Only] A warning code, if applicable. For example, Compute Engine
46942
+ # returns NO_RESULTS_ON_PAGE if there are no results in the response.
46943
+ # Corresponds to the JSON property `code`
46944
+ # @return [String]
46945
+ attr_accessor :code
46946
+
46947
+ # [Output Only] Metadata about this warning in key: value format. For example: "
46948
+ # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
46949
+ # Corresponds to the JSON property `data`
46950
+ # @return [Array<Google::Apis::ComputeV1::SubnetworksScopedWarning::Warning::Datum>]
46951
+ attr_accessor :data
46952
+
46953
+ # [Output Only] A human-readable description of the warning code.
46954
+ # Corresponds to the JSON property `message`
46955
+ # @return [String]
46956
+ attr_accessor :message
46957
+
46958
+ def initialize(**args)
46959
+ update!(**args)
46960
+ end
46961
+
46962
+ # Update properties of this object
46963
+ def update!(**args)
46964
+ @code = args[:code] if args.key?(:code)
46965
+ @data = args[:data] if args.key?(:data)
46966
+ @message = args[:message] if args.key?(:message)
46967
+ end
46968
+
46969
+ #
46970
+ class Datum
46971
+ include Google::Apis::Core::Hashable
46972
+
46973
+ # [Output Only] A key that provides more detail on the warning being returned.
46974
+ # For example, for warnings where there are no results in a list request for a
46975
+ # particular zone, this key might be scope and the key value might be the zone
46976
+ # name. Other examples might be a key indicating a deprecated resource and a
46977
+ # suggested replacement, or a warning about invalid network settings (for
46978
+ # example, if an instance attempts to perform IP forwarding but is not enabled
46979
+ # for IP forwarding).
46980
+ # Corresponds to the JSON property `key`
46981
+ # @return [String]
46982
+ attr_accessor :key
46983
+
46984
+ # [Output Only] A warning data value corresponding to the key.
46985
+ # Corresponds to the JSON property `value`
46986
+ # @return [String]
46987
+ attr_accessor :value
46988
+
46989
+ def initialize(**args)
46990
+ update!(**args)
46991
+ end
46992
+
46993
+ # Update properties of this object
46994
+ def update!(**args)
46995
+ @key = args[:key] if args.key?(:key)
46996
+ @value = args[:value] if args.key?(:value)
46997
+ end
46998
+ end
46999
+ end
47000
+ end
47001
+
44841
47002
  #
44842
47003
  class SubnetworksSetPrivateIpGoogleAccessRequest
44843
47004
  include Google::Apis::Core::Hashable
@@ -49419,20 +51580,7 @@ module Google
49419
51580
  # @return [String]
49420
51581
  attr_accessor :network
49421
51582
 
49422
- # The purpose of the resource. This field can be either PRIVATE,
49423
- # GLOBAL_MANAGED_PROXY, REGIONAL_MANAGED_PROXY, PEER_MIGRATION,
49424
- # PRIVATE_SERVICE_CONNECT or PRIVATE_NAT. PRIVATE is the default purpose for
49425
- # user-created subnets or subnets that are automatically created in auto mode
49426
- # networks. Subnets with purpose set to GLOBAL_MANAGED_PROXY or
49427
- # REGIONAL_MANAGED_PROXY are user-created subnetworks that are reserved for
49428
- # Envoy-based load balancers. A subnet with purpose set to
49429
- # PRIVATE_SERVICE_CONNECT is used to publish services using Private Service
49430
- # Connect. A subnet with purpose set to PEER_MIGRATION is used for subnet
49431
- # migration from one peered VPC to another. A subnet with purpose set to
49432
- # PRIVATE_NAT is used for Private NAT IP address by Private NAT Gateway. If
49433
- # unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field
49434
- # isn't supported if the subnet purpose field is set to GLOBAL_MANAGED_PROXY or
49435
- # REGIONAL_MANAGED_PROXY.
51583
+ #
49436
51584
  # Corresponds to the JSON property `purpose`
49437
51585
  # @return [String]
49438
51586
  attr_accessor :purpose
@@ -49543,11 +51691,22 @@ module Google
49543
51691
  # @return [String]
49544
51692
  attr_accessor :next_page_token
49545
51693
 
51694
+ # [Output Only] Informational warning messages for failures encountered from
51695
+ # scopes.
51696
+ # Corresponds to the JSON property `scopedWarnings`
51697
+ # @return [Array<Google::Apis::ComputeV1::SubnetworksScopedWarning>]
51698
+ attr_accessor :scoped_warnings
51699
+
49546
51700
  # [Output Only] Server-defined URL for this resource.
49547
51701
  # Corresponds to the JSON property `selfLink`
49548
51702
  # @return [String]
49549
51703
  attr_accessor :self_link
49550
51704
 
51705
+ # [Output Only] Unreachable resources.
51706
+ # Corresponds to the JSON property `unreachables`
51707
+ # @return [Array<String>]
51708
+ attr_accessor :unreachables
51709
+
49551
51710
  # [Output Only] Informational warning message.
49552
51711
  # Corresponds to the JSON property `warning`
49553
51712
  # @return [Google::Apis::ComputeV1::UsableSubnetworksAggregatedList::Warning]
@@ -49563,7 +51722,9 @@ module Google
49563
51722
  @items = args[:items] if args.key?(:items)
49564
51723
  @kind = args[:kind] if args.key?(:kind)
49565
51724
  @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
51725
+ @scoped_warnings = args[:scoped_warnings] if args.key?(:scoped_warnings)
49566
51726
  @self_link = args[:self_link] if args.key?(:self_link)
51727
+ @unreachables = args[:unreachables] if args.key?(:unreachables)
49567
51728
  @warning = args[:warning] if args.key?(:warning)
49568
51729
  end
49569
51730