google-apis-compute_v1 0.20.0 → 0.21.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.
@@ -633,14 +633,14 @@ module Google
633
633
  # regional internal IP address in a subnet of a VPC network) - VPC_PEERING for
634
634
  # global internal IP addresses used for private services access allocated ranges.
635
635
  # - NAT_AUTO for the regional external IP addresses used by Cloud NAT when
636
- # allocating addresses using . - IPSEC_INTERCONNECT for addresses created from a
637
- # private IP range that are reserved for a VLAN attachment in an *IPsec-
638
- # encrypted Cloud Interconnect* configuration. These addresses are regional
639
- # resources. Not currently available publicly. - `SHARED_LOADBALANCER_VIP` for
640
- # an internal IP address that is assigned to multiple internal forwarding rules.
641
- # - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to
642
- # configure Private Service Connect. Only global internal addresses can use this
643
- # purpose.
636
+ # allocating addresses using automatic NAT IP address allocation. -
637
+ # IPSEC_INTERCONNECT for addresses created from a private IP range that are
638
+ # reserved for a VLAN attachment in an *IPsec-encrypted Cloud Interconnect*
639
+ # configuration. These addresses are regional resources. Not currently available
640
+ # publicly. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is
641
+ # assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT`
642
+ # for a private network address that is used to configure Private Service
643
+ # Connect. Only global internal addresses can use this purpose.
644
644
  # Corresponds to the JSON property `purpose`
645
645
  # @return [String]
646
646
  attr_accessor :purpose
@@ -1315,7 +1315,8 @@ module Google
1315
1315
  # initializeParams.sourceSnapshot or disks.source is required except for local
1316
1316
  # SSD. If desired, you can also attach existing non-root persistent disks using
1317
1317
  # this property. This field is only applicable for persistent disks. Note that
1318
- # for InstanceTemplate, specify the disk name, not the URL for the disk.
1318
+ # for InstanceTemplate, specify the disk name for zonal disk, and the URL for
1319
+ # regional disk.
1319
1320
  # Corresponds to the JSON property `source`
1320
1321
  # @return [String]
1321
1322
  attr_accessor :source
@@ -2633,6 +2634,12 @@ module Google
2633
2634
  # @return [Array<Google::Apis::ComputeV1::BackendBucketCdnPolicyBypassCacheOnRequestHeader>]
2634
2635
  attr_accessor :bypass_cache_on_request_headers
2635
2636
 
2637
+ # Message containing what to include in the cache key for a request for Cloud
2638
+ # CDN.
2639
+ # Corresponds to the JSON property `cacheKeyPolicy`
2640
+ # @return [Google::Apis::ComputeV1::BackendBucketCdnPolicyCacheKeyPolicy]
2641
+ attr_accessor :cache_key_policy
2642
+
2636
2643
  # Specifies the cache setting for all responses from this backend. The possible
2637
2644
  # values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching
2638
2645
  # headers to cache content. Responses without these headers will not be cached
@@ -2756,6 +2763,7 @@ module Google
2756
2763
  # Update properties of this object
2757
2764
  def update!(**args)
2758
2765
  @bypass_cache_on_request_headers = args[:bypass_cache_on_request_headers] if args.key?(:bypass_cache_on_request_headers)
2766
+ @cache_key_policy = args[:cache_key_policy] if args.key?(:cache_key_policy)
2759
2767
  @cache_mode = args[:cache_mode] if args.key?(:cache_mode)
2760
2768
  @client_ttl = args[:client_ttl] if args.key?(:client_ttl)
2761
2769
  @default_ttl = args[:default_ttl] if args.key?(:default_ttl)
@@ -2791,6 +2799,34 @@ module Google
2791
2799
  end
2792
2800
  end
2793
2801
 
2802
+ # Message containing what to include in the cache key for a request for Cloud
2803
+ # CDN.
2804
+ class BackendBucketCdnPolicyCacheKeyPolicy
2805
+ include Google::Apis::Core::Hashable
2806
+
2807
+ # Allows HTTP request headers (by name) to be used in the cache key.
2808
+ # Corresponds to the JSON property `includeHttpHeaders`
2809
+ # @return [Array<String>]
2810
+ attr_accessor :include_http_headers
2811
+
2812
+ # Names of query string parameters to include in cache keys. All other
2813
+ # parameters will be excluded. '&' and '=' will be percent encoded and not
2814
+ # treated as delimiters.
2815
+ # Corresponds to the JSON property `queryStringWhitelist`
2816
+ # @return [Array<String>]
2817
+ attr_accessor :query_string_whitelist
2818
+
2819
+ def initialize(**args)
2820
+ update!(**args)
2821
+ end
2822
+
2823
+ # Update properties of this object
2824
+ def update!(**args)
2825
+ @include_http_headers = args[:include_http_headers] if args.key?(:include_http_headers)
2826
+ @query_string_whitelist = args[:query_string_whitelist] if args.key?(:query_string_whitelist)
2827
+ end
2828
+ end
2829
+
2794
2830
  # Specify CDN TTLs for response error codes.
2795
2831
  class BackendBucketCdnPolicyNegativeCachingPolicy
2796
2832
  include Google::Apis::Core::Hashable
@@ -3032,14 +3068,14 @@ module Google
3032
3068
 
3033
3069
  # For load balancers that have configurable failover: [Internal TCP/UDP Load
3034
3070
  # Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-
3035
- # overview) and [external TCP/UDP Load Balancing](/network/networklb-failover-
3036
- # overview). On failover or failback, this field indicates whether connection
3037
- # draining will be honored. Google Cloud has a fixed connection draining timeout
3038
- # of 10 minutes. A setting of true terminates existing TCP connections to the
3039
- # active pool during failover and failback, immediately draining traffic. A
3040
- # setting of false allows existing TCP connections to persist, even on VMs no
3041
- # longer in the active pool, for up to the duration of the connection draining
3042
- # timeout (10 minutes).
3071
+ # overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-
3072
+ # balancing/docs/network/networklb-failover-overview). On failover or failback,
3073
+ # this field indicates whether connection draining will be honored. Google Cloud
3074
+ # has a fixed connection draining timeout of 10 minutes. A setting of true
3075
+ # terminates existing TCP connections to the active pool during failover and
3076
+ # failback, immediately draining traffic. A setting of false allows existing TCP
3077
+ # connections to persist, even on VMs no longer in the active pool, for up to
3078
+ # the duration of the connection draining timeout (10 minutes).
3043
3079
  # Corresponds to the JSON property `failoverPolicy`
3044
3080
  # @return [Google::Apis::ComputeV1::BackendServiceFailoverPolicy]
3045
3081
  attr_accessor :failover_policy
@@ -3663,14 +3699,14 @@ module Google
3663
3699
 
3664
3700
  # For load balancers that have configurable failover: [Internal TCP/UDP Load
3665
3701
  # Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-
3666
- # overview) and [external TCP/UDP Load Balancing](/network/networklb-failover-
3667
- # overview). On failover or failback, this field indicates whether connection
3668
- # draining will be honored. Google Cloud has a fixed connection draining timeout
3669
- # of 10 minutes. A setting of true terminates existing TCP connections to the
3670
- # active pool during failover and failback, immediately draining traffic. A
3671
- # setting of false allows existing TCP connections to persist, even on VMs no
3672
- # longer in the active pool, for up to the duration of the connection draining
3673
- # timeout (10 minutes).
3702
+ # overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-
3703
+ # balancing/docs/network/networklb-failover-overview). On failover or failback,
3704
+ # this field indicates whether connection draining will be honored. Google Cloud
3705
+ # has a fixed connection draining timeout of 10 minutes. A setting of true
3706
+ # terminates existing TCP connections to the active pool during failover and
3707
+ # failback, immediately draining traffic. A setting of false allows existing TCP
3708
+ # connections to persist, even on VMs no longer in the active pool, for up to
3709
+ # the duration of the connection draining timeout (10 minutes).
3674
3710
  class BackendServiceFailoverPolicy
3675
3711
  include Google::Apis::Core::Hashable
3676
3712
 
@@ -3685,8 +3721,9 @@ module Google
3685
3721
  # distributed among all primary VMs when all primary and all backup backend VMs
3686
3722
  # are unhealthy. For load balancers that have configurable failover: [Internal
3687
3723
  # TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/
3688
- # failover-overview) and [external TCP/UDP Load Balancing](/network/networklb-
3689
- # failover-overview). The default is false.
3724
+ # failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.
3725
+ # com/load-balancing/docs/network/networklb-failover-overview). The default is
3726
+ # false.
3690
3727
  # Corresponds to the JSON property `dropTrafficIfUnhealthy`
3691
3728
  # @return [Boolean]
3692
3729
  attr_accessor :drop_traffic_if_unhealthy
@@ -3698,7 +3735,8 @@ module Google
3698
3735
  # the total number of healthy primary VMs is less than this ratio. For load
3699
3736
  # balancers that have configurable failover: [Internal TCP/UDP Load Balancing](
3700
3737
  # https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [
3701
- # external TCP/UDP Load Balancing](/network/networklb-failover-overview).
3738
+ # external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/
3739
+ # network/networklb-failover-overview).
3702
3740
  # Corresponds to the JSON property `failoverRatio`
3703
3741
  # @return [Float]
3704
3742
  attr_accessor :failover_ratio
@@ -4512,6 +4550,17 @@ module Google
4512
4550
  attr_accessor :include_host
4513
4551
  alias_method :include_host?, :include_host
4514
4552
 
4553
+ # Allows HTTP request headers (by name) to be used in the cache key.
4554
+ # Corresponds to the JSON property `includeHttpHeaders`
4555
+ # @return [Array<String>]
4556
+ attr_accessor :include_http_headers
4557
+
4558
+ # Allows HTTP cookies (by name) to be used in the cache key. The name=value pair
4559
+ # will be used in the cache key Cloud CDN generates.
4560
+ # Corresponds to the JSON property `includeNamedCookies`
4561
+ # @return [Array<String>]
4562
+ attr_accessor :include_named_cookies
4563
+
4515
4564
  # If true, http and https requests will be cached separately.
4516
4565
  # Corresponds to the JSON property `includeProtocol`
4517
4566
  # @return [Boolean]
@@ -4550,6 +4599,8 @@ module Google
4550
4599
  # Update properties of this object
4551
4600
  def update!(**args)
4552
4601
  @include_host = args[:include_host] if args.key?(:include_host)
4602
+ @include_http_headers = args[:include_http_headers] if args.key?(:include_http_headers)
4603
+ @include_named_cookies = args[:include_named_cookies] if args.key?(:include_named_cookies)
4553
4604
  @include_protocol = args[:include_protocol] if args.key?(:include_protocol)
4554
4605
  @include_query_string = args[:include_query_string] if args.key?(:include_query_string)
4555
4606
  @query_string_blacklist = args[:query_string_blacklist] if args.key?(:query_string_blacklist)
@@ -4614,6 +4665,16 @@ module Google
4614
4665
  class Commitment
4615
4666
  include Google::Apis::Core::Hashable
4616
4667
 
4668
+ # Specifies whether to enable automatic renewal for the commitment. The default
4669
+ # value is false if not specified. The field can be updated until the day of the
4670
+ # commitment expiration at 12:00am PST. If the field is set to true, the
4671
+ # commitment will be automatically renewed for either one or three years
4672
+ # according to the terms of the existing commitment.
4673
+ # Corresponds to the JSON property `autoRenew`
4674
+ # @return [Boolean]
4675
+ attr_accessor :auto_renew
4676
+ alias_method :auto_renew?, :auto_renew
4677
+
4617
4678
  # The category of the commitment. Category MACHINE specifies commitments
4618
4679
  # composed of machine resources such as VCPU or MEMORY, listed in resources.
4619
4680
  # Category LICENSE specifies commitments composed of software licenses, listed
@@ -4724,6 +4785,7 @@ module Google
4724
4785
 
4725
4786
  # Update properties of this object
4726
4787
  def update!(**args)
4788
+ @auto_renew = args[:auto_renew] if args.key?(:auto_renew)
4727
4789
  @category = args[:category] if args.key?(:category)
4728
4790
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
4729
4791
  @description = args[:description] if args.key?(:description)
@@ -8418,8 +8480,7 @@ module Google
8418
8480
  attr_accessor :self_link
8419
8481
 
8420
8482
  # Service Directory resources to register this forwarding rule with. Currently,
8421
- # only supports a single Service Directory resource. It is only supported for
8422
- # internal load balancing.
8483
+ # only supports a single Service Directory resource.
8423
8484
  # Corresponds to the JSON property `serviceDirectoryRegistrations`
8424
8485
  # @return [Array<Google::Apis::ComputeV1::ForwardingRuleServiceDirectoryRegistration>]
8425
8486
  attr_accessor :service_directory_registrations
@@ -9571,8 +9632,8 @@ module Google
9571
9632
  attr_accessor :timeout_sec
9572
9633
 
9573
9634
  # Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS or HTTP2.
9574
- # If not specified, the default is TCP. Exactly one of the protocol-specific
9575
- # health check field must be specified, which must match type field.
9635
+ # Exactly one of the protocol-specific health check field must be specified,
9636
+ # which must match type field.
9576
9637
  # Corresponds to the JSON property `type`
9577
9638
  # @return [String]
9578
9639
  attr_accessor :type
@@ -12253,6 +12314,17 @@ module Google
12253
12314
  # @return [Google::Apis::ComputeV1::ShieldedInstanceIntegrityPolicy]
12254
12315
  attr_accessor :shielded_instance_integrity_policy
12255
12316
 
12317
+ # Source machine image
12318
+ # Corresponds to the JSON property `sourceMachineImage`
12319
+ # @return [String]
12320
+ attr_accessor :source_machine_image
12321
+
12322
+ # Source machine image encryption key when creating an instance from a machine
12323
+ # image.
12324
+ # Corresponds to the JSON property `sourceMachineImageEncryptionKey`
12325
+ # @return [Google::Apis::ComputeV1::CustomerEncryptionKey]
12326
+ attr_accessor :source_machine_image_encryption_key
12327
+
12256
12328
  # [Output Only] Whether a VM has been restricted for start because Compute
12257
12329
  # Engine has detected suspicious activity.
12258
12330
  # Corresponds to the JSON property `startRestricted`
@@ -12325,6 +12397,8 @@ module Google
12325
12397
  @service_accounts = args[:service_accounts] if args.key?(:service_accounts)
12326
12398
  @shielded_instance_config = args[:shielded_instance_config] if args.key?(:shielded_instance_config)
12327
12399
  @shielded_instance_integrity_policy = args[:shielded_instance_integrity_policy] if args.key?(:shielded_instance_integrity_policy)
12400
+ @source_machine_image = args[:source_machine_image] if args.key?(:source_machine_image)
12401
+ @source_machine_image_encryption_key = args[:source_machine_image_encryption_key] if args.key?(:source_machine_image_encryption_key)
12328
12402
  @start_restricted = args[:start_restricted] if args.key?(:start_restricted)
12329
12403
  @status = args[:status] if args.key?(:status)
12330
12404
  @status_message = args[:status_message] if args.key?(:status_message)
@@ -15772,7 +15846,10 @@ module Google
15772
15846
  # @return [String]
15773
15847
  attr_accessor :customer_router_ip_address
15774
15848
 
15775
- # [Output Only] Dataplane version for this InterconnectAttachment.
15849
+ # [Output only for types PARTNER and DEDICATED. Not present for PARTNER_PROVIDER.
15850
+ # ] Dataplane version for this InterconnectAttachment. This field is only
15851
+ # present for Dataplane version 2 and higher. Absence of this field in the API
15852
+ # output indicates that the Dataplane is version 1.
15776
15853
  # Corresponds to the JSON property `dataplaneVersion`
15777
15854
  # @return [Fixnum]
15778
15855
  attr_accessor :dataplane_version
@@ -17658,6 +17735,272 @@ module Google
17658
17735
  end
17659
17736
  end
17660
17737
 
17738
+ # Represents a machine image resource. A machine image is a Compute Engine
17739
+ # resource that stores all the configuration, metadata, permissions, and data
17740
+ # from one or more disks required to create a Virtual machine (VM) instance. For
17741
+ # more information, see Machine images.
17742
+ class MachineImage
17743
+ include Google::Apis::Core::Hashable
17744
+
17745
+ # [Output Only] The creation timestamp for this machine image in RFC3339 text
17746
+ # format.
17747
+ # Corresponds to the JSON property `creationTimestamp`
17748
+ # @return [String]
17749
+ attr_accessor :creation_timestamp
17750
+
17751
+ # An optional description of this resource. Provide this property when you
17752
+ # create the resource.
17753
+ # Corresponds to the JSON property `description`
17754
+ # @return [String]
17755
+ attr_accessor :description
17756
+
17757
+ # [Input Only] Whether to attempt an application consistent machine image by
17758
+ # informing the OS to prepare for the snapshot process. Currently only supported
17759
+ # on Windows instances using the Volume Shadow Copy Service (VSS).
17760
+ # Corresponds to the JSON property `guestFlush`
17761
+ # @return [Boolean]
17762
+ attr_accessor :guest_flush
17763
+ alias_method :guest_flush?, :guest_flush
17764
+
17765
+ # [Output Only] A unique identifier for this machine image. The server defines
17766
+ # this identifier.
17767
+ # Corresponds to the JSON property `id`
17768
+ # @return [Fixnum]
17769
+ attr_accessor :id
17770
+
17771
+ # [Output Only] Properties of source instance
17772
+ # Corresponds to the JSON property `instanceProperties`
17773
+ # @return [Google::Apis::ComputeV1::InstanceProperties]
17774
+ attr_accessor :instance_properties
17775
+
17776
+ # [Output Only] The resource type, which is always compute#machineImage for
17777
+ # machine image.
17778
+ # Corresponds to the JSON property `kind`
17779
+ # @return [String]
17780
+ attr_accessor :kind
17781
+
17782
+ # Encrypts the machine image using a customer-supplied encryption key. After you
17783
+ # encrypt a machine image using a customer-supplied key, you must provide the
17784
+ # same key if you use the machine image later. For example, you must provide the
17785
+ # encryption key when you create an instance from the encrypted machine image in
17786
+ # a future request. Customer-supplied encryption keys do not protect access to
17787
+ # metadata of the machine image. If you do not provide an encryption key when
17788
+ # creating the machine image, then the machine image will be encrypted using an
17789
+ # automatically generated key and you do not need to provide a key to use the
17790
+ # machine image later.
17791
+ # Corresponds to the JSON property `machineImageEncryptionKey`
17792
+ # @return [Google::Apis::ComputeV1::CustomerEncryptionKey]
17793
+ attr_accessor :machine_image_encryption_key
17794
+
17795
+ # Name of the resource; provided by the client when the resource is created. The
17796
+ # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
17797
+ # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
17798
+ # z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter,
17799
+ # and all following characters must be a dash, lowercase letter, or digit,
17800
+ # except the last character, which cannot be a dash.
17801
+ # Corresponds to the JSON property `name`
17802
+ # @return [String]
17803
+ attr_accessor :name
17804
+
17805
+ # [Output Only] Reserved for future use.
17806
+ # Corresponds to the JSON property `satisfiesPzs`
17807
+ # @return [Boolean]
17808
+ attr_accessor :satisfies_pzs
17809
+ alias_method :satisfies_pzs?, :satisfies_pzs
17810
+
17811
+ # An array of Machine Image specific properties for disks attached to the source
17812
+ # instance
17813
+ # Corresponds to the JSON property `savedDisks`
17814
+ # @return [Array<Google::Apis::ComputeV1::SavedDisk>]
17815
+ attr_accessor :saved_disks
17816
+
17817
+ # [Output Only] The URL for this machine image. The server defines this URL.
17818
+ # Corresponds to the JSON property `selfLink`
17819
+ # @return [String]
17820
+ attr_accessor :self_link
17821
+
17822
+ # [Input Only] The customer-supplied encryption key of the disks attached to the
17823
+ # source instance. Required if the source disk is protected by a customer-
17824
+ # supplied encryption key.
17825
+ # Corresponds to the JSON property `sourceDiskEncryptionKeys`
17826
+ # @return [Array<Google::Apis::ComputeV1::SourceDiskEncryptionKey>]
17827
+ attr_accessor :source_disk_encryption_keys
17828
+
17829
+ # The source instance used to create the machine image. You can provide this as
17830
+ # a partial or full URL to the resource. For example, the following are valid
17831
+ # values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /
17832
+ # instances/instance - projects/project/zones/zone/instances/instance
17833
+ # Corresponds to the JSON property `sourceInstance`
17834
+ # @return [String]
17835
+ attr_accessor :source_instance
17836
+
17837
+ # DEPRECATED: Please use compute#instanceProperties instead. New properties will
17838
+ # not be added to this field.
17839
+ # Corresponds to the JSON property `sourceInstanceProperties`
17840
+ # @return [Google::Apis::ComputeV1::SourceInstanceProperties]
17841
+ attr_accessor :source_instance_properties
17842
+
17843
+ # [Output Only] The status of the machine image. One of the following values:
17844
+ # INVALID, CREATING, READY, DELETING, and UPLOADING.
17845
+ # Corresponds to the JSON property `status`
17846
+ # @return [String]
17847
+ attr_accessor :status
17848
+
17849
+ # The regional or multi-regional Cloud Storage bucket location where the machine
17850
+ # image is stored.
17851
+ # Corresponds to the JSON property `storageLocations`
17852
+ # @return [Array<String>]
17853
+ attr_accessor :storage_locations
17854
+
17855
+ # [Output Only] Total size of the storage used by the machine image.
17856
+ # Corresponds to the JSON property `totalStorageBytes`
17857
+ # @return [Fixnum]
17858
+ attr_accessor :total_storage_bytes
17859
+
17860
+ def initialize(**args)
17861
+ update!(**args)
17862
+ end
17863
+
17864
+ # Update properties of this object
17865
+ def update!(**args)
17866
+ @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
17867
+ @description = args[:description] if args.key?(:description)
17868
+ @guest_flush = args[:guest_flush] if args.key?(:guest_flush)
17869
+ @id = args[:id] if args.key?(:id)
17870
+ @instance_properties = args[:instance_properties] if args.key?(:instance_properties)
17871
+ @kind = args[:kind] if args.key?(:kind)
17872
+ @machine_image_encryption_key = args[:machine_image_encryption_key] if args.key?(:machine_image_encryption_key)
17873
+ @name = args[:name] if args.key?(:name)
17874
+ @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
17875
+ @saved_disks = args[:saved_disks] if args.key?(:saved_disks)
17876
+ @self_link = args[:self_link] if args.key?(:self_link)
17877
+ @source_disk_encryption_keys = args[:source_disk_encryption_keys] if args.key?(:source_disk_encryption_keys)
17878
+ @source_instance = args[:source_instance] if args.key?(:source_instance)
17879
+ @source_instance_properties = args[:source_instance_properties] if args.key?(:source_instance_properties)
17880
+ @status = args[:status] if args.key?(:status)
17881
+ @storage_locations = args[:storage_locations] if args.key?(:storage_locations)
17882
+ @total_storage_bytes = args[:total_storage_bytes] if args.key?(:total_storage_bytes)
17883
+ end
17884
+ end
17885
+
17886
+ # A list of machine images.
17887
+ class MachineImageList
17888
+ include Google::Apis::Core::Hashable
17889
+
17890
+ # [Output Only] Unique identifier for the resource; defined by the server.
17891
+ # Corresponds to the JSON property `id`
17892
+ # @return [String]
17893
+ attr_accessor :id
17894
+
17895
+ # A list of MachineImage resources.
17896
+ # Corresponds to the JSON property `items`
17897
+ # @return [Array<Google::Apis::ComputeV1::MachineImage>]
17898
+ attr_accessor :items
17899
+
17900
+ # [Output Only] The resource type, which is always compute#
17901
+ # machineImagesListResponse for machine image lists.
17902
+ # Corresponds to the JSON property `kind`
17903
+ # @return [String]
17904
+ attr_accessor :kind
17905
+
17906
+ # [Output Only] This token allows you to get the next page of results for list
17907
+ # requests. If the number of results is larger than maxResults, use the
17908
+ # nextPageToken as a value for the query parameter pageToken in the next list
17909
+ # request. Subsequent list requests will have their own nextPageToken to
17910
+ # continue paging through the results.
17911
+ # Corresponds to the JSON property `nextPageToken`
17912
+ # @return [String]
17913
+ attr_accessor :next_page_token
17914
+
17915
+ # [Output Only] Server-defined URL for this resource.
17916
+ # Corresponds to the JSON property `selfLink`
17917
+ # @return [String]
17918
+ attr_accessor :self_link
17919
+
17920
+ # [Output Only] Informational warning message.
17921
+ # Corresponds to the JSON property `warning`
17922
+ # @return [Google::Apis::ComputeV1::MachineImageList::Warning]
17923
+ attr_accessor :warning
17924
+
17925
+ def initialize(**args)
17926
+ update!(**args)
17927
+ end
17928
+
17929
+ # Update properties of this object
17930
+ def update!(**args)
17931
+ @id = args[:id] if args.key?(:id)
17932
+ @items = args[:items] if args.key?(:items)
17933
+ @kind = args[:kind] if args.key?(:kind)
17934
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
17935
+ @self_link = args[:self_link] if args.key?(:self_link)
17936
+ @warning = args[:warning] if args.key?(:warning)
17937
+ end
17938
+
17939
+ # [Output Only] Informational warning message.
17940
+ class Warning
17941
+ include Google::Apis::Core::Hashable
17942
+
17943
+ # [Output Only] A warning code, if applicable. For example, Compute Engine
17944
+ # returns NO_RESULTS_ON_PAGE if there are no results in the response.
17945
+ # Corresponds to the JSON property `code`
17946
+ # @return [String]
17947
+ attr_accessor :code
17948
+
17949
+ # [Output Only] Metadata about this warning in key: value format. For example: "
17950
+ # data": [ ` "key": "scope", "value": "zones/us-east1-d" `
17951
+ # Corresponds to the JSON property `data`
17952
+ # @return [Array<Google::Apis::ComputeV1::MachineImageList::Warning::Datum>]
17953
+ attr_accessor :data
17954
+
17955
+ # [Output Only] A human-readable description of the warning code.
17956
+ # Corresponds to the JSON property `message`
17957
+ # @return [String]
17958
+ attr_accessor :message
17959
+
17960
+ def initialize(**args)
17961
+ update!(**args)
17962
+ end
17963
+
17964
+ # Update properties of this object
17965
+ def update!(**args)
17966
+ @code = args[:code] if args.key?(:code)
17967
+ @data = args[:data] if args.key?(:data)
17968
+ @message = args[:message] if args.key?(:message)
17969
+ end
17970
+
17971
+ #
17972
+ class Datum
17973
+ include Google::Apis::Core::Hashable
17974
+
17975
+ # [Output Only] A key that provides more detail on the warning being returned.
17976
+ # For example, for warnings where there are no results in a list request for a
17977
+ # particular zone, this key might be scope and the key value might be the zone
17978
+ # name. Other examples might be a key indicating a deprecated resource and a
17979
+ # suggested replacement, or a warning about invalid network settings (for
17980
+ # example, if an instance attempts to perform IP forwarding but is not enabled
17981
+ # for IP forwarding).
17982
+ # Corresponds to the JSON property `key`
17983
+ # @return [String]
17984
+ attr_accessor :key
17985
+
17986
+ # [Output Only] A warning data value corresponding to the key.
17987
+ # Corresponds to the JSON property `value`
17988
+ # @return [String]
17989
+ attr_accessor :value
17990
+
17991
+ def initialize(**args)
17992
+ update!(**args)
17993
+ end
17994
+
17995
+ # Update properties of this object
17996
+ def update!(**args)
17997
+ @key = args[:key] if args.key?(:key)
17998
+ @value = args[:value] if args.key?(:value)
17999
+ end
18000
+ end
18001
+ end
18002
+ end
18003
+
17661
18004
  # Represents a Machine Type resource. You can use specific machine types for
17662
18005
  # your VM instances based on performance and pricing requirements. For more
17663
18006
  # information, read Machine Types.
@@ -28483,6 +28826,12 @@ module Google
28483
28826
  # @return [String]
28484
28827
  attr_accessor :enable
28485
28828
 
28829
+ # Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default.
28830
+ # Corresponds to the JSON property `enableIpv6`
28831
+ # @return [Boolean]
28832
+ attr_accessor :enable_ipv6
28833
+ alias_method :enable_ipv6?, :enable_ipv6
28834
+
28486
28835
  # Name of the interface the BGP peer is associated with.
28487
28836
  # Corresponds to the JSON property `interfaceName`
28488
28837
  # @return [String]
@@ -28494,6 +28843,11 @@ module Google
28494
28843
  # @return [String]
28495
28844
  attr_accessor :ip_address
28496
28845
 
28846
+ # IPv6 address of the interface inside Google Cloud Platform.
28847
+ # Corresponds to the JSON property `ipv6NexthopAddress`
28848
+ # @return [String]
28849
+ attr_accessor :ipv6_nexthop_address
28850
+
28497
28851
  # [Output Only] The resource that configures and manages this BGP peer. -
28498
28852
  # MANAGED_BY_USER is the default value and can be managed by you or other users -
28499
28853
  # MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud
@@ -28526,6 +28880,11 @@ module Google
28526
28880
  # @return [String]
28527
28881
  attr_accessor :peer_ip_address
28528
28882
 
28883
+ # IPv6 address of the BGP interface outside Google Cloud Platform.
28884
+ # Corresponds to the JSON property `peerIpv6NexthopAddress`
28885
+ # @return [String]
28886
+ attr_accessor :peer_ipv6_nexthop_address
28887
+
28529
28888
  # URI of the VM instance that is used as third-party router appliances such as
28530
28889
  # Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance
28531
28890
  # must be located in zones contained in the same region as this Cloud Router.
@@ -28546,12 +28905,15 @@ module Google
28546
28905
  @advertised_route_priority = args[:advertised_route_priority] if args.key?(:advertised_route_priority)
28547
28906
  @bfd = args[:bfd] if args.key?(:bfd)
28548
28907
  @enable = args[:enable] if args.key?(:enable)
28908
+ @enable_ipv6 = args[:enable_ipv6] if args.key?(:enable_ipv6)
28549
28909
  @interface_name = args[:interface_name] if args.key?(:interface_name)
28550
28910
  @ip_address = args[:ip_address] if args.key?(:ip_address)
28911
+ @ipv6_nexthop_address = args[:ipv6_nexthop_address] if args.key?(:ipv6_nexthop_address)
28551
28912
  @management_type = args[:management_type] if args.key?(:management_type)
28552
28913
  @name = args[:name] if args.key?(:name)
28553
28914
  @peer_asn = args[:peer_asn] if args.key?(:peer_asn)
28554
28915
  @peer_ip_address = args[:peer_ip_address] if args.key?(:peer_ip_address)
28916
+ @peer_ipv6_nexthop_address = args[:peer_ipv6_nexthop_address] if args.key?(:peer_ipv6_nexthop_address)
28555
28917
  @router_appliance_instance = args[:router_appliance_instance] if args.key?(:router_appliance_instance)
28556
28918
  end
28557
28919
  end
@@ -29616,6 +29978,171 @@ module Google
29616
29978
  end
29617
29979
  end
29618
29980
 
29981
+ # DEPRECATED: Please use compute#savedDisk instead. An instance-attached disk
29982
+ # resource.
29983
+ class SavedAttachedDisk
29984
+ include Google::Apis::Core::Hashable
29985
+
29986
+ # Specifies whether the disk will be auto-deleted when the instance is deleted (
29987
+ # but not when the disk is detached from the instance).
29988
+ # Corresponds to the JSON property `autoDelete`
29989
+ # @return [Boolean]
29990
+ attr_accessor :auto_delete
29991
+ alias_method :auto_delete?, :auto_delete
29992
+
29993
+ # Indicates that this is a boot disk. The virtual machine will use the first
29994
+ # partition of the disk for its root filesystem.
29995
+ # Corresponds to the JSON property `boot`
29996
+ # @return [Boolean]
29997
+ attr_accessor :boot
29998
+ alias_method :boot?, :boot
29999
+
30000
+ # Specifies the name of the disk attached to the source instance.
30001
+ # Corresponds to the JSON property `deviceName`
30002
+ # @return [String]
30003
+ attr_accessor :device_name
30004
+
30005
+ # The encryption key for the disk.
30006
+ # Corresponds to the JSON property `diskEncryptionKey`
30007
+ # @return [Google::Apis::ComputeV1::CustomerEncryptionKey]
30008
+ attr_accessor :disk_encryption_key
30009
+
30010
+ # The size of the disk in base-2 GB.
30011
+ # Corresponds to the JSON property `diskSizeGb`
30012
+ # @return [Fixnum]
30013
+ attr_accessor :disk_size_gb
30014
+
30015
+ # [Output Only] URL of the disk type resource. For example: projects/project /
30016
+ # zones/zone/diskTypes/pd-standard or pd-ssd
30017
+ # Corresponds to the JSON property `diskType`
30018
+ # @return [String]
30019
+ attr_accessor :disk_type
30020
+
30021
+ # A list of features to enable on the guest operating system. Applicable only
30022
+ # for bootable images. Read Enabling guest operating system features to see a
30023
+ # list of available options.
30024
+ # Corresponds to the JSON property `guestOsFeatures`
30025
+ # @return [Array<Google::Apis::ComputeV1::GuestOsFeature>]
30026
+ attr_accessor :guest_os_features
30027
+
30028
+ # Specifies zero-based index of the disk that is attached to the source instance.
30029
+ # Corresponds to the JSON property `index`
30030
+ # @return [Fixnum]
30031
+ attr_accessor :index
30032
+
30033
+ # Specifies the disk interface to use for attaching this disk, which is either
30034
+ # SCSI or NVME.
30035
+ # Corresponds to the JSON property `interface`
30036
+ # @return [String]
30037
+ attr_accessor :interface
30038
+
30039
+ # [Output Only] Type of the resource. Always compute#attachedDisk for attached
30040
+ # disks.
30041
+ # Corresponds to the JSON property `kind`
30042
+ # @return [String]
30043
+ attr_accessor :kind
30044
+
30045
+ # [Output Only] Any valid publicly visible licenses.
30046
+ # Corresponds to the JSON property `licenses`
30047
+ # @return [Array<String>]
30048
+ attr_accessor :licenses
30049
+
30050
+ # The mode in which this disk is attached to the source instance, either
30051
+ # READ_WRITE or READ_ONLY.
30052
+ # Corresponds to the JSON property `mode`
30053
+ # @return [String]
30054
+ attr_accessor :mode
30055
+
30056
+ # Specifies a URL of the disk attached to the source instance.
30057
+ # Corresponds to the JSON property `source`
30058
+ # @return [String]
30059
+ attr_accessor :source
30060
+
30061
+ # [Output Only] A size of the storage used by the disk's snapshot by this
30062
+ # machine image.
30063
+ # Corresponds to the JSON property `storageBytes`
30064
+ # @return [Fixnum]
30065
+ attr_accessor :storage_bytes
30066
+
30067
+ # [Output Only] An indicator whether storageBytes is in a stable state or it is
30068
+ # being adjusted as a result of shared storage reallocation. This status can
30069
+ # either be UPDATING, meaning the size of the snapshot is being updated, or
30070
+ # UP_TO_DATE, meaning the size of the snapshot is up-to-date.
30071
+ # Corresponds to the JSON property `storageBytesStatus`
30072
+ # @return [String]
30073
+ attr_accessor :storage_bytes_status
30074
+
30075
+ # Specifies the type of the attached disk, either SCRATCH or PERSISTENT.
30076
+ # Corresponds to the JSON property `type`
30077
+ # @return [String]
30078
+ attr_accessor :type
30079
+
30080
+ def initialize(**args)
30081
+ update!(**args)
30082
+ end
30083
+
30084
+ # Update properties of this object
30085
+ def update!(**args)
30086
+ @auto_delete = args[:auto_delete] if args.key?(:auto_delete)
30087
+ @boot = args[:boot] if args.key?(:boot)
30088
+ @device_name = args[:device_name] if args.key?(:device_name)
30089
+ @disk_encryption_key = args[:disk_encryption_key] if args.key?(:disk_encryption_key)
30090
+ @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
30091
+ @disk_type = args[:disk_type] if args.key?(:disk_type)
30092
+ @guest_os_features = args[:guest_os_features] if args.key?(:guest_os_features)
30093
+ @index = args[:index] if args.key?(:index)
30094
+ @interface = args[:interface] if args.key?(:interface)
30095
+ @kind = args[:kind] if args.key?(:kind)
30096
+ @licenses = args[:licenses] if args.key?(:licenses)
30097
+ @mode = args[:mode] if args.key?(:mode)
30098
+ @source = args[:source] if args.key?(:source)
30099
+ @storage_bytes = args[:storage_bytes] if args.key?(:storage_bytes)
30100
+ @storage_bytes_status = args[:storage_bytes_status] if args.key?(:storage_bytes_status)
30101
+ @type = args[:type] if args.key?(:type)
30102
+ end
30103
+ end
30104
+
30105
+ # An instance-attached disk resource.
30106
+ class SavedDisk
30107
+ include Google::Apis::Core::Hashable
30108
+
30109
+ # [Output Only] Type of the resource. Always compute#savedDisk for attached
30110
+ # disks.
30111
+ # Corresponds to the JSON property `kind`
30112
+ # @return [String]
30113
+ attr_accessor :kind
30114
+
30115
+ # Specifies a URL of the disk attached to the source instance.
30116
+ # Corresponds to the JSON property `sourceDisk`
30117
+ # @return [String]
30118
+ attr_accessor :source_disk
30119
+
30120
+ # [Output Only] Size of the individual disk snapshot used by this machine image.
30121
+ # Corresponds to the JSON property `storageBytes`
30122
+ # @return [Fixnum]
30123
+ attr_accessor :storage_bytes
30124
+
30125
+ # [Output Only] An indicator whether storageBytes is in a stable state or it is
30126
+ # being adjusted as a result of shared storage reallocation. This status can
30127
+ # either be UPDATING, meaning the size of the snapshot is being updated, or
30128
+ # UP_TO_DATE, meaning the size of the snapshot is up-to-date.
30129
+ # Corresponds to the JSON property `storageBytesStatus`
30130
+ # @return [String]
30131
+ attr_accessor :storage_bytes_status
30132
+
30133
+ def initialize(**args)
30134
+ update!(**args)
30135
+ end
30136
+
30137
+ # Update properties of this object
30138
+ def update!(**args)
30139
+ @kind = args[:kind] if args.key?(:kind)
30140
+ @source_disk = args[:source_disk] if args.key?(:source_disk)
30141
+ @storage_bytes = args[:storage_bytes] if args.key?(:storage_bytes)
30142
+ @storage_bytes_status = args[:storage_bytes_status] if args.key?(:storage_bytes_status)
30143
+ end
30144
+ end
30145
+
29619
30146
  #
29620
30147
  class ScalingScheduleStatus
29621
30148
  include Google::Apis::Core::Hashable
@@ -29665,6 +30192,11 @@ module Google
29665
30192
  attr_accessor :automatic_restart
29666
30193
  alias_method :automatic_restart?, :automatic_restart
29667
30194
 
30195
+ # Specifies the termination action for the instance.
30196
+ # Corresponds to the JSON property `instanceTerminationAction`
30197
+ # @return [String]
30198
+ attr_accessor :instance_termination_action
30199
+
29668
30200
  # An opaque location hint used to place the instance close to other resources.
29669
30201
  # This field is for use by internal tools that use the public API.
29670
30202
  # Corresponds to the JSON property `locationHint`
@@ -29700,6 +30232,11 @@ module Google
29700
30232
  attr_accessor :preemptible
29701
30233
  alias_method :preemptible?, :preemptible
29702
30234
 
30235
+ # Specifies the provisioning model of the instance.
30236
+ # Corresponds to the JSON property `provisioningModel`
30237
+ # @return [String]
30238
+ attr_accessor :provisioning_model
30239
+
29703
30240
  def initialize(**args)
29704
30241
  update!(**args)
29705
30242
  end
@@ -29707,11 +30244,13 @@ module Google
29707
30244
  # Update properties of this object
29708
30245
  def update!(**args)
29709
30246
  @automatic_restart = args[:automatic_restart] if args.key?(:automatic_restart)
30247
+ @instance_termination_action = args[:instance_termination_action] if args.key?(:instance_termination_action)
29710
30248
  @location_hint = args[:location_hint] if args.key?(:location_hint)
29711
30249
  @min_node_cpus = args[:min_node_cpus] if args.key?(:min_node_cpus)
29712
30250
  @node_affinities = args[:node_affinities] if args.key?(:node_affinities)
29713
30251
  @on_host_maintenance = args[:on_host_maintenance] if args.key?(:on_host_maintenance)
29714
30252
  @preemptible = args[:preemptible] if args.key?(:preemptible)
30253
+ @provisioning_model = args[:provisioning_model] if args.key?(:provisioning_model)
29715
30254
  end
29716
30255
  end
29717
30256
 
@@ -29873,6 +30412,11 @@ module Google
29873
30412
  # @return [String]
29874
30413
  attr_accessor :name
29875
30414
 
30415
+ #
30416
+ # Corresponds to the JSON property `recaptchaOptionsConfig`
30417
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRecaptchaOptionsConfig]
30418
+ attr_accessor :recaptcha_options_config
30419
+
29876
30420
  # A list of rules that belong to this policy. There must always be a default
29877
30421
  # rule (rule with priority 2147483647 and match "*"). If no rules are provided
29878
30422
  # when creating a security policy, a default rule with action "allow" will be
@@ -29911,6 +30455,7 @@ module Google
29911
30455
  @id = args[:id] if args.key?(:id)
29912
30456
  @kind = args[:kind] if args.key?(:kind)
29913
30457
  @name = args[:name] if args.key?(:name)
30458
+ @recaptcha_options_config = args[:recaptcha_options_config] if args.key?(:recaptcha_options_config)
29914
30459
  @rules = args[:rules] if args.key?(:rules)
29915
30460
  @self_link = args[:self_link] if args.key?(:self_link)
29916
30461
  @type = args[:type] if args.key?(:type)
@@ -30100,6 +30645,29 @@ module Google
30100
30645
  end
30101
30646
  end
30102
30647
 
30648
+ #
30649
+ class SecurityPolicyRecaptchaOptionsConfig
30650
+ include Google::Apis::Core::Hashable
30651
+
30652
+ # An optional field to supply a reCAPTCHA site key to be used for all the rules
30653
+ # using the redirect action with the type of GOOGLE_RECAPTCHA under the security
30654
+ # policy. The specified site key needs to be created from the reCAPTCHA API. The
30655
+ # user is responsible for the validity of the specified site key. If not
30656
+ # specified, a Google-managed site key is used.
30657
+ # Corresponds to the JSON property `redirectSiteKey`
30658
+ # @return [String]
30659
+ attr_accessor :redirect_site_key
30660
+
30661
+ def initialize(**args)
30662
+ update!(**args)
30663
+ end
30664
+
30665
+ # Update properties of this object
30666
+ def update!(**args)
30667
+ @redirect_site_key = args[:redirect_site_key] if args.key?(:redirect_site_key)
30668
+ end
30669
+ end
30670
+
30103
30671
  #
30104
30672
  class SecurityPolicyReference
30105
30673
  include Google::Apis::Core::Hashable
@@ -30124,9 +30692,17 @@ module Google
30124
30692
  class SecurityPolicyRule
30125
30693
  include Google::Apis::Core::Hashable
30126
30694
 
30127
- # The Action to perform when the client connection triggers the rule. Can
30128
- # currently be either "allow" or "deny()" where valid values for status are 403,
30129
- # 404, and 502.
30695
+ # The Action to perform when the rule is matched. The following are the valid
30696
+ # actions: - allow: allow access to target. - deny(): deny access to target,
30697
+ # returns the HTTP response code specified (valid values are 403, 404, and 502).
30698
+ # - rate_based_ban: limit client traffic to the configured threshold and ban the
30699
+ # client if the traffic exceeds the threshold. Configure parameters for this
30700
+ # action in RateLimitOptions. Requires rate_limit_options to be set. - redirect:
30701
+ # redirect to a different target. This can either be an internal reCAPTCHA
30702
+ # redirect, or an external URL-based redirect via a 302 response. Parameters for
30703
+ # this action can be configured via redirectOptions. - throttle: limit client
30704
+ # traffic to the configured threshold. Configure parameters for this action in
30705
+ # rateLimitOptions. Requires rate_limit_options to be set for this.
30130
30706
  # Corresponds to the JSON property `action`
30131
30707
  # @return [String]
30132
30708
  attr_accessor :action
@@ -30137,6 +30713,11 @@ module Google
30137
30713
  # @return [String]
30138
30714
  attr_accessor :description
30139
30715
 
30716
+ # Optional, additional actions that are performed on headers.
30717
+ # Corresponds to the JSON property `headerAction`
30718
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleHttpHeaderAction]
30719
+ attr_accessor :header_action
30720
+
30140
30721
  # [Output only] Type of the resource. Always compute#securityPolicyRule for
30141
30722
  # security policy rules
30142
30723
  # Corresponds to the JSON property `kind`
@@ -30163,6 +30744,18 @@ module Google
30163
30744
  # @return [Fixnum]
30164
30745
  attr_accessor :priority
30165
30746
 
30747
+ # Must be specified if the action is "rate_based_ban" or "throttle". Cannot be
30748
+ # specified for any other actions.
30749
+ # Corresponds to the JSON property `rateLimitOptions`
30750
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleRateLimitOptions]
30751
+ attr_accessor :rate_limit_options
30752
+
30753
+ # Parameters defining the redirect action. Cannot be specified for any other
30754
+ # actions.
30755
+ # Corresponds to the JSON property `redirectOptions`
30756
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleRedirectOptions]
30757
+ attr_accessor :redirect_options
30758
+
30166
30759
  def initialize(**args)
30167
30760
  update!(**args)
30168
30761
  end
@@ -30171,10 +30764,57 @@ module Google
30171
30764
  def update!(**args)
30172
30765
  @action = args[:action] if args.key?(:action)
30173
30766
  @description = args[:description] if args.key?(:description)
30767
+ @header_action = args[:header_action] if args.key?(:header_action)
30174
30768
  @kind = args[:kind] if args.key?(:kind)
30175
30769
  @match = args[:match] if args.key?(:match)
30176
30770
  @preview = args[:preview] if args.key?(:preview)
30177
30771
  @priority = args[:priority] if args.key?(:priority)
30772
+ @rate_limit_options = args[:rate_limit_options] if args.key?(:rate_limit_options)
30773
+ @redirect_options = args[:redirect_options] if args.key?(:redirect_options)
30774
+ end
30775
+ end
30776
+
30777
+ #
30778
+ class SecurityPolicyRuleHttpHeaderAction
30779
+ include Google::Apis::Core::Hashable
30780
+
30781
+ # The list of request headers to add or overwrite if they're already present.
30782
+ # Corresponds to the JSON property `requestHeadersToAdds`
30783
+ # @return [Array<Google::Apis::ComputeV1::SecurityPolicyRuleHttpHeaderActionHttpHeaderOption>]
30784
+ attr_accessor :request_headers_to_adds
30785
+
30786
+ def initialize(**args)
30787
+ update!(**args)
30788
+ end
30789
+
30790
+ # Update properties of this object
30791
+ def update!(**args)
30792
+ @request_headers_to_adds = args[:request_headers_to_adds] if args.key?(:request_headers_to_adds)
30793
+ end
30794
+ end
30795
+
30796
+ #
30797
+ class SecurityPolicyRuleHttpHeaderActionHttpHeaderOption
30798
+ include Google::Apis::Core::Hashable
30799
+
30800
+ # The name of the header to set.
30801
+ # Corresponds to the JSON property `headerName`
30802
+ # @return [String]
30803
+ attr_accessor :header_name
30804
+
30805
+ # The value to set the named header to.
30806
+ # Corresponds to the JSON property `headerValue`
30807
+ # @return [String]
30808
+ attr_accessor :header_value
30809
+
30810
+ def initialize(**args)
30811
+ update!(**args)
30812
+ end
30813
+
30814
+ # Update properties of this object
30815
+ def update!(**args)
30816
+ @header_name = args[:header_name] if args.key?(:header_name)
30817
+ @header_value = args[:header_value] if args.key?(:header_value)
30178
30818
  end
30179
30819
  end
30180
30820
 
@@ -30248,6 +30888,144 @@ module Google
30248
30888
  end
30249
30889
  end
30250
30890
 
30891
+ #
30892
+ class SecurityPolicyRuleRateLimitOptions
30893
+ include Google::Apis::Core::Hashable
30894
+
30895
+ # Can only be specified if the action for the rule is "rate_based_ban". If
30896
+ # specified, determines the time (in seconds) the traffic will continue to be
30897
+ # banned by the rate limit after the rate falls below the threshold.
30898
+ # Corresponds to the JSON property `banDurationSec`
30899
+ # @return [Fixnum]
30900
+ attr_accessor :ban_duration_sec
30901
+
30902
+ # Can only be specified if the action for the rule is "rate_based_ban". If
30903
+ # specified, the key will be banned for the configured 'ban_duration_sec' when
30904
+ # the number of requests that exceed the 'rate_limit_threshold' also exceed this
30905
+ # 'ban_threshold'.
30906
+ # Corresponds to the JSON property `banThreshold`
30907
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleRateLimitOptionsThreshold]
30908
+ attr_accessor :ban_threshold
30909
+
30910
+ # Action to take for requests that are under the configured rate limit threshold.
30911
+ # Valid option is "allow" only.
30912
+ # Corresponds to the JSON property `conformAction`
30913
+ # @return [String]
30914
+ attr_accessor :conform_action
30915
+
30916
+ # Determines the key to enforce the rate_limit_threshold on. Possible values are:
30917
+ # - ALL: A single rate limit threshold is applied to all the requests matching
30918
+ # this rule. This is the default value if this field 'enforce_on_key' is not
30919
+ # configured. - IP: The source IP address of the request is the key. Each IP has
30920
+ # this limit enforced separately. - HTTP_HEADER: The value of the HTTP header
30921
+ # whose name is configured under "enforce_on_key_name". The key value is
30922
+ # truncated to the first 128 bytes of the header value. If no such header is
30923
+ # present in the request, the key type defaults to ALL. - XFF_IP: The first IP
30924
+ # address (i.e. the originating client IP address) specified in the list of IPs
30925
+ # under X-Forwarded-For HTTP header. If no such header is present or the value
30926
+ # is not a valid IP, the key type defaults to ALL. - HTTP_COOKIE: The value of
30927
+ # the HTTP cookie whose name is configured under "enforce_on_key_name". The key
30928
+ # value is truncated to the first 128 bytes of the cookie value. If no such
30929
+ # cookie is present in the request, the key type defaults to ALL.
30930
+ # Corresponds to the JSON property `enforceOnKey`
30931
+ # @return [String]
30932
+ attr_accessor :enforce_on_key
30933
+
30934
+ # Rate limit key name applicable only for the following key types: HTTP_HEADER --
30935
+ # Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE --
30936
+ # Name of the HTTP cookie whose value is taken as the key value.
30937
+ # Corresponds to the JSON property `enforceOnKeyName`
30938
+ # @return [String]
30939
+ attr_accessor :enforce_on_key_name
30940
+
30941
+ # Action to take for requests that are above the configured rate limit threshold,
30942
+ # to either deny with a specified HTTP response code, or redirect to a
30943
+ # different endpoint. Valid options are "deny()" where valid values for status
30944
+ # are 403, 404, 429, and 502, and "redirect" where the redirect parameters come
30945
+ # from exceed_redirect_options below.
30946
+ # Corresponds to the JSON property `exceedAction`
30947
+ # @return [String]
30948
+ attr_accessor :exceed_action
30949
+
30950
+ # Parameters defining the redirect action that is used as the exceed action.
30951
+ # Cannot be specified if the exceed action is not redirect.
30952
+ # Corresponds to the JSON property `exceedRedirectOptions`
30953
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleRedirectOptions]
30954
+ attr_accessor :exceed_redirect_options
30955
+
30956
+ # Threshold at which to begin ratelimiting.
30957
+ # Corresponds to the JSON property `rateLimitThreshold`
30958
+ # @return [Google::Apis::ComputeV1::SecurityPolicyRuleRateLimitOptionsThreshold]
30959
+ attr_accessor :rate_limit_threshold
30960
+
30961
+ def initialize(**args)
30962
+ update!(**args)
30963
+ end
30964
+
30965
+ # Update properties of this object
30966
+ def update!(**args)
30967
+ @ban_duration_sec = args[:ban_duration_sec] if args.key?(:ban_duration_sec)
30968
+ @ban_threshold = args[:ban_threshold] if args.key?(:ban_threshold)
30969
+ @conform_action = args[:conform_action] if args.key?(:conform_action)
30970
+ @enforce_on_key = args[:enforce_on_key] if args.key?(:enforce_on_key)
30971
+ @enforce_on_key_name = args[:enforce_on_key_name] if args.key?(:enforce_on_key_name)
30972
+ @exceed_action = args[:exceed_action] if args.key?(:exceed_action)
30973
+ @exceed_redirect_options = args[:exceed_redirect_options] if args.key?(:exceed_redirect_options)
30974
+ @rate_limit_threshold = args[:rate_limit_threshold] if args.key?(:rate_limit_threshold)
30975
+ end
30976
+ end
30977
+
30978
+ #
30979
+ class SecurityPolicyRuleRateLimitOptionsThreshold
30980
+ include Google::Apis::Core::Hashable
30981
+
30982
+ # Number of HTTP(S) requests for calculating the threshold.
30983
+ # Corresponds to the JSON property `count`
30984
+ # @return [Fixnum]
30985
+ attr_accessor :count
30986
+
30987
+ # Interval over which the threshold is computed.
30988
+ # Corresponds to the JSON property `intervalSec`
30989
+ # @return [Fixnum]
30990
+ attr_accessor :interval_sec
30991
+
30992
+ def initialize(**args)
30993
+ update!(**args)
30994
+ end
30995
+
30996
+ # Update properties of this object
30997
+ def update!(**args)
30998
+ @count = args[:count] if args.key?(:count)
30999
+ @interval_sec = args[:interval_sec] if args.key?(:interval_sec)
31000
+ end
31001
+ end
31002
+
31003
+ #
31004
+ class SecurityPolicyRuleRedirectOptions
31005
+ include Google::Apis::Core::Hashable
31006
+
31007
+ # Target for the redirect action. This is required if the type is EXTERNAL_302
31008
+ # and cannot be specified for GOOGLE_RECAPTCHA.
31009
+ # Corresponds to the JSON property `target`
31010
+ # @return [String]
31011
+ attr_accessor :target
31012
+
31013
+ # Type of the redirect action.
31014
+ # Corresponds to the JSON property `type`
31015
+ # @return [String]
31016
+ attr_accessor :type
31017
+
31018
+ def initialize(**args)
31019
+ update!(**args)
31020
+ end
31021
+
31022
+ # Update properties of this object
31023
+ def update!(**args)
31024
+ @target = args[:target] if args.key?(:target)
31025
+ @type = args[:type] if args.key?(:type)
31026
+ end
31027
+ end
31028
+
30251
31029
  # The authentication and authorization settings for a BackendService.
30252
31030
  class SecuritySettings
30253
31031
  include Google::Apis::Core::Hashable
@@ -31426,6 +32204,35 @@ module Google
31426
32204
  end
31427
32205
  end
31428
32206
 
32207
+ #
32208
+ class SourceDiskEncryptionKey
32209
+ include Google::Apis::Core::Hashable
32210
+
32211
+ # The customer-supplied encryption key of the source disk. Required if the
32212
+ # source disk is protected by a customer-supplied encryption key.
32213
+ # Corresponds to the JSON property `diskEncryptionKey`
32214
+ # @return [Google::Apis::ComputeV1::CustomerEncryptionKey]
32215
+ attr_accessor :disk_encryption_key
32216
+
32217
+ # URL of the disk attached to the source instance. This can be a full or valid
32218
+ # partial URL. For example, the following are valid values: - https://www.
32219
+ # googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/
32220
+ # project/zones/zone/disks/disk - zones/zone/disks/disk
32221
+ # Corresponds to the JSON property `sourceDisk`
32222
+ # @return [String]
32223
+ attr_accessor :source_disk
32224
+
32225
+ def initialize(**args)
32226
+ update!(**args)
32227
+ end
32228
+
32229
+ # Update properties of this object
32230
+ def update!(**args)
32231
+ @disk_encryption_key = args[:disk_encryption_key] if args.key?(:disk_encryption_key)
32232
+ @source_disk = args[:source_disk] if args.key?(:source_disk)
32233
+ end
32234
+ end
32235
+
31429
32236
  # A specification of the parameters to use when creating the instance template
31430
32237
  # from a source instance.
31431
32238
  class SourceInstanceParams
@@ -31449,6 +32256,116 @@ module Google
31449
32256
  end
31450
32257
  end
31451
32258
 
32259
+ # DEPRECATED: Please use compute#instanceProperties instead. New properties will
32260
+ # not be added to this field.
32261
+ class SourceInstanceProperties
32262
+ include Google::Apis::Core::Hashable
32263
+
32264
+ # Enables instances created based on this machine image to send packets with
32265
+ # source IP addresses other than their own and receive packets with destination
32266
+ # IP addresses other than their own. If these instances will be used as an IP
32267
+ # gateway or it will be set as the next-hop in a Route resource, specify true.
32268
+ # If unsure, leave this set to false. See the Enable IP forwarding documentation
32269
+ # for more information.
32270
+ # Corresponds to the JSON property `canIpForward`
32271
+ # @return [Boolean]
32272
+ attr_accessor :can_ip_forward
32273
+ alias_method :can_ip_forward?, :can_ip_forward
32274
+
32275
+ # Whether the instance created from this machine image should be protected
32276
+ # against deletion.
32277
+ # Corresponds to the JSON property `deletionProtection`
32278
+ # @return [Boolean]
32279
+ attr_accessor :deletion_protection
32280
+ alias_method :deletion_protection?, :deletion_protection
32281
+
32282
+ # An optional text description for the instances that are created from this
32283
+ # machine image.
32284
+ # Corresponds to the JSON property `description`
32285
+ # @return [String]
32286
+ attr_accessor :description
32287
+
32288
+ # An array of disks that are associated with the instances that are created from
32289
+ # this machine image.
32290
+ # Corresponds to the JSON property `disks`
32291
+ # @return [Array<Google::Apis::ComputeV1::SavedAttachedDisk>]
32292
+ attr_accessor :disks
32293
+
32294
+ # A list of guest accelerator cards' type and count to use for instances created
32295
+ # from this machine image.
32296
+ # Corresponds to the JSON property `guestAccelerators`
32297
+ # @return [Array<Google::Apis::ComputeV1::AcceleratorConfig>]
32298
+ attr_accessor :guest_accelerators
32299
+
32300
+ # Labels to apply to instances that are created from this machine image.
32301
+ # Corresponds to the JSON property `labels`
32302
+ # @return [Hash<String,String>]
32303
+ attr_accessor :labels
32304
+
32305
+ # The machine type to use for instances that are created from this machine image.
32306
+ # Corresponds to the JSON property `machineType`
32307
+ # @return [String]
32308
+ attr_accessor :machine_type
32309
+
32310
+ # A metadata key/value entry.
32311
+ # Corresponds to the JSON property `metadata`
32312
+ # @return [Google::Apis::ComputeV1::Metadata]
32313
+ attr_accessor :metadata
32314
+
32315
+ # Minimum cpu/platform to be used by instances created from this machine image.
32316
+ # The instance may be scheduled on the specified or newer cpu/platform.
32317
+ # Applicable values are the friendly names of CPU platforms, such as
32318
+ # minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". For
32319
+ # more information, read Specifying a Minimum CPU Platform.
32320
+ # Corresponds to the JSON property `minCpuPlatform`
32321
+ # @return [String]
32322
+ attr_accessor :min_cpu_platform
32323
+
32324
+ # An array of network access configurations for this interface.
32325
+ # Corresponds to the JSON property `networkInterfaces`
32326
+ # @return [Array<Google::Apis::ComputeV1::NetworkInterface>]
32327
+ attr_accessor :network_interfaces
32328
+
32329
+ # Sets the scheduling options for an Instance. NextID: 21
32330
+ # Corresponds to the JSON property `scheduling`
32331
+ # @return [Google::Apis::ComputeV1::Scheduling]
32332
+ attr_accessor :scheduling
32333
+
32334
+ # A list of service accounts with specified scopes. Access tokens for these
32335
+ # service accounts are available to the instances that are created from this
32336
+ # machine image. Use metadata queries to obtain the access tokens for these
32337
+ # instances.
32338
+ # Corresponds to the JSON property `serviceAccounts`
32339
+ # @return [Array<Google::Apis::ComputeV1::ServiceAccount>]
32340
+ attr_accessor :service_accounts
32341
+
32342
+ # A set of instance tags.
32343
+ # Corresponds to the JSON property `tags`
32344
+ # @return [Google::Apis::ComputeV1::Tags]
32345
+ attr_accessor :tags
32346
+
32347
+ def initialize(**args)
32348
+ update!(**args)
32349
+ end
32350
+
32351
+ # Update properties of this object
32352
+ def update!(**args)
32353
+ @can_ip_forward = args[:can_ip_forward] if args.key?(:can_ip_forward)
32354
+ @deletion_protection = args[:deletion_protection] if args.key?(:deletion_protection)
32355
+ @description = args[:description] if args.key?(:description)
32356
+ @disks = args[:disks] if args.key?(:disks)
32357
+ @guest_accelerators = args[:guest_accelerators] if args.key?(:guest_accelerators)
32358
+ @labels = args[:labels] if args.key?(:labels)
32359
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
32360
+ @metadata = args[:metadata] if args.key?(:metadata)
32361
+ @min_cpu_platform = args[:min_cpu_platform] if args.key?(:min_cpu_platform)
32362
+ @network_interfaces = args[:network_interfaces] if args.key?(:network_interfaces)
32363
+ @scheduling = args[:scheduling] if args.key?(:scheduling)
32364
+ @service_accounts = args[:service_accounts] if args.key?(:service_accounts)
32365
+ @tags = args[:tags] if args.key?(:tags)
32366
+ end
32367
+ end
32368
+
31452
32369
  # Represents an SSL Certificate resource. Google Compute Engine has two SSL
31453
32370
  # Certificate resources: * [Global](/compute/docs/reference/rest/v1/
31454
32371
  # sslCertificates) * [Regional](/compute/docs/reference/rest/v1/
@@ -37575,6 +38492,12 @@ module Google
37575
38492
  # @return [String]
37576
38493
  attr_accessor :self_link
37577
38494
 
38495
+ # The stack type for this VPN gateway to identify the IP protocols that are
38496
+ # enabled. If not specified, IPV4_ONLY will be used.
38497
+ # Corresponds to the JSON property `stackType`
38498
+ # @return [String]
38499
+ attr_accessor :stack_type
38500
+
37578
38501
  # The list of VPN interfaces associated with this VPN gateway.
37579
38502
  # Corresponds to the JSON property `vpnInterfaces`
37580
38503
  # @return [Array<Google::Apis::ComputeV1::VpnGatewayVpnGatewayInterface>]
@@ -37596,6 +38519,7 @@ module Google
37596
38519
  @network = args[:network] if args.key?(:network)
37597
38520
  @region = args[:region] if args.key?(:region)
37598
38521
  @self_link = args[:self_link] if args.key?(:self_link)
38522
+ @stack_type = args[:stack_type] if args.key?(:stack_type)
37599
38523
  @vpn_interfaces = args[:vpn_interfaces] if args.key?(:vpn_interfaces)
37600
38524
  end
37601
38525
  end