google-apis-compute_v1 0.20.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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