# frozen_string_literal: true

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Container
      module V1
        # Parameters that describe the nodes in a cluster.
        # @!attribute [rw] machine_type
        #   @return [::String]
        #     The name of a Google Compute Engine [machine
        #     type](https://cloud.google.com/compute/docs/machine-types) (e.g.
        #     `n1-standard-1`).
        #
        #     If unspecified, the default machine type is
        #     `n1-standard-1`.
        # @!attribute [rw] disk_size_gb
        #   @return [::Integer]
        #     Size of the disk attached to each node, specified in GB.
        #     The smallest allowed disk size is 10GB.
        #
        #     If unspecified, the default disk size is 100GB.
        # @!attribute [rw] oauth_scopes
        #   @return [::Array<::String>]
        #     The set of Google API scopes to be made available on all of the
        #     node VMs under the "default" service account.
        #
        #     The following scopes are recommended, but not required, and by default are
        #     not included:
        #
        #     * `https://www.googleapis.com/auth/compute` is required for mounting
        #     persistent storage on your nodes.
        #     * `https://www.googleapis.com/auth/devstorage.read_only` is required for
        #     communicating with **gcr.io**
        #     (the [Google Container Registry](https://cloud.google.com/container-registry/)).
        #
        #     If unspecified, no scopes are added, unless Cloud Logging or Cloud
        #     Monitoring are enabled, in which case their required scopes will be added.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     The Google Cloud Platform Service Account to be used by the node VMs. If
        #     no Service Account is specified, the "default" service account is used.
        # @!attribute [rw] metadata
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The metadata key/value pairs assigned to instances in the cluster.
        #
        #     Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes
        #     in length. These are reflected as part of a URL in the metadata server.
        #     Additionally, to avoid ambiguity, keys must not conflict with any other
        #     metadata keys for the project or be one of the reserved keys:
        #      "cluster-location"
        #      "cluster-name"
        #      "cluster-uid"
        #      "configure-sh"
        #      "containerd-configure-sh"
        #      "enable-os-login"
        #      "gci-update-strategy"
        #      "gci-ensure-gke-docker"
        #      "instance-template"
        #      "kube-env"
        #      "startup-script"
        #      "user-data"
        #      "disable-address-manager"
        #      "windows-startup-script-ps1"
        #      "common-psm1"
        #      "k8s-node-setup-psm1"
        #      "install-ssh-psm1"
        #      "user-profile-psm1"
        #      "serial-port-logging-enable"
        #
        #     Values are free-form strings, and only have meaning as interpreted by
        #     the image running in the instance. The only restriction placed on them is
        #     that each value's size must be less than or equal to 32 KB.
        #
        #     The total size of all keys and values must be less than 512 KB.
        # @!attribute [rw] image_type
        #   @return [::String]
        #     The image type to use for this node. Note that for a given image type,
        #     the latest version of it will be used.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The map of Kubernetes labels (key/value pairs) to be applied to each node.
        #     These will added in addition to any default label(s) that
        #     Kubernetes may apply to the node.
        #     In case of conflict in label keys, the applied set may differ depending on
        #     the Kubernetes version -- it's best to assume the behavior is undefined
        #     and conflicts should be avoided.
        #     For more information, including usage and the valid values, see:
        #     https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
        # @!attribute [rw] local_ssd_count
        #   @return [::Integer]
        #     The number of local SSD disks to be attached to the node.
        #
        #     The limit for this value is dependent upon the maximum number of
        #     disks available on a machine per zone. See:
        #     https://cloud.google.com/compute/docs/disks/local-ssd
        #     for more information.
        # @!attribute [rw] tags
        #   @return [::Array<::String>]
        #     The list of instance tags applied to all nodes. Tags are used to identify
        #     valid sources or targets for network firewalls and are specified by
        #     the client during cluster or node pool creation. Each tag within the list
        #     must comply with RFC1035.
        # @!attribute [rw] preemptible
        #   @return [::Boolean]
        #     Whether the nodes are created as preemptible VM instances. See:
        #     https://cloud.google.com/compute/docs/instances/preemptible for more
        #     information about preemptible VM instances.
        # @!attribute [rw] accelerators
        #   @return [::Array<::Google::Cloud::Container::V1::AcceleratorConfig>]
        #     A list of hardware accelerators to be attached to each node.
        #     See https://cloud.google.com/compute/docs/gpus for more information about
        #     support for GPUs.
        # @!attribute [rw] disk_type
        #   @return [::String]
        #     Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
        #
        #     If unspecified, the default disk type is 'pd-standard'
        # @!attribute [rw] min_cpu_platform
        #   @return [::String]
        #     Minimum CPU platform to be used by this instance. The instance may be
        #     scheduled on the specified or newer CPU platform. Applicable values are the
        #     friendly names of CPU platforms, such as
        #     <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
        #     <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
        #     information, read [how to specify min CPU
        #     platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        # @!attribute [rw] taints
        #   @return [::Array<::Google::Cloud::Container::V1::NodeTaint>]
        #     List of kubernetes taints to be applied to each node.
        #
        #     For more information, including usage and the valid values, see:
        #     https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
        # @!attribute [rw] shielded_instance_config
        #   @return [::Google::Cloud::Container::V1::ShieldedInstanceConfig]
        #     Shielded Instance options.
        class NodeConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class MetadataEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # A set of Shielded Instance options.
        # @!attribute [rw] enable_secure_boot
        #   @return [::Boolean]
        #     Defines whether the instance has Secure Boot enabled.
        #
        #     Secure Boot helps ensure that the system only runs authentic software by
        #     verifying the digital signature of all boot components, and halting the
        #     boot process if signature verification fails.
        # @!attribute [rw] enable_integrity_monitoring
        #   @return [::Boolean]
        #     Defines whether the instance has integrity monitoring enabled.
        #
        #     Enables monitoring and attestation of the boot integrity of the instance.
        #     The attestation is performed against the integrity policy baseline. This
        #     baseline is initially derived from the implicitly trusted boot image when
        #     the instance is created.
        class ShieldedInstanceConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Kubernetes taint is comprised of three fields: key, value, and effect. Effect
        # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
        #
        # For more information, including usage and the valid values, see:
        # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
        # @!attribute [rw] key
        #   @return [::String]
        #     Key for taint.
        # @!attribute [rw] value
        #   @return [::String]
        #     Value for taint.
        # @!attribute [rw] effect
        #   @return [::Google::Cloud::Container::V1::NodeTaint::Effect]
        #     Effect for taint.
        class NodeTaint
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible values for Effect in taint.
          module Effect
            # Not set
            EFFECT_UNSPECIFIED = 0

            # NoSchedule
            NO_SCHEDULE = 1

            # PreferNoSchedule
            PREFER_NO_SCHEDULE = 2

            # NoExecute
            NO_EXECUTE = 3
          end
        end

        # The authentication information for accessing the master endpoint.
        # Authentication can be done using HTTP basic auth or using client
        # certificates.
        # @!attribute [rw] username
        #   @return [::String]
        #     The username to use for HTTP basic authentication to the master endpoint.
        #     For clusters v1.6.0 and later, basic authentication can be disabled by
        #     leaving username unspecified (or setting it to the empty string).
        # @!attribute [rw] password
        #   @return [::String]
        #     The password to use for HTTP basic authentication to the master endpoint.
        #     Because the master endpoint is open to the Internet, you should create a
        #     strong password.  If a password is provided for cluster creation, username
        #     must be non-empty.
        # @!attribute [rw] client_certificate_config
        #   @return [::Google::Cloud::Container::V1::ClientCertificateConfig]
        #     Configuration for client certificate authentication on the cluster. For
        #     clusters before v1.12, if no configuration is specified, a client
        #     certificate is issued.
        # @!attribute [rw] cluster_ca_certificate
        #   @return [::String]
        #     [Output only] Base64-encoded public certificate that is the root of
        #     trust for the cluster.
        # @!attribute [rw] client_certificate
        #   @return [::String]
        #     [Output only] Base64-encoded public certificate used by clients to
        #     authenticate to the cluster endpoint.
        # @!attribute [rw] client_key
        #   @return [::String]
        #     [Output only] Base64-encoded private key used by clients to authenticate
        #     to the cluster endpoint.
        class MasterAuth
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for client certificates on the cluster.
        # @!attribute [rw] issue_client_certificate
        #   @return [::Boolean]
        #     Issue a client certificate.
        class ClientCertificateConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the addons that can be automatically spun up in the
        # cluster, enabling additional functionality.
        # @!attribute [rw] http_load_balancing
        #   @return [::Google::Cloud::Container::V1::HttpLoadBalancing]
        #     Configuration for the HTTP (L7) load balancing controller addon, which
        #     makes it easy to set up HTTP load balancers for services in a cluster.
        # @!attribute [rw] horizontal_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1::HorizontalPodAutoscaling]
        #     Configuration for the horizontal pod autoscaling feature, which
        #     increases or decreases the number of replica pods a replication controller
        #     has based on the resource usage of the existing pods.
        # @!attribute [rw] kubernetes_dashboard
        #   @return [::Google::Cloud::Container::V1::KubernetesDashboard]
        #     Configuration for the Kubernetes Dashboard.
        #     This addon is deprecated, and will be disabled in 1.15. It is recommended
        #     to use the Cloud Console to manage and monitor your Kubernetes clusters,
        #     workloads and applications. For more information, see:
        #     https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
        # @!attribute [rw] network_policy_config
        #   @return [::Google::Cloud::Container::V1::NetworkPolicyConfig]
        #     Configuration for NetworkPolicy. This only tracks whether the addon
        #     is enabled or not on the Master, it does not track whether network policy
        #     is enabled for the nodes.
        # @!attribute [rw] cloud_run_config
        #   @return [::Google::Cloud::Container::V1::CloudRunConfig]
        #     Configuration for the Cloud Run addon, which allows the user to use a
        #     managed Knative service.
        class AddonsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the HTTP (L7) load balancing controller addon,
        # which makes it easy to set up HTTP load balancers for services in a cluster.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether the HTTP Load Balancing controller is enabled in the cluster.
        #     When enabled, it runs a small pod in the cluster that manages the load
        #     balancers.
        class HttpLoadBalancing
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the horizontal pod autoscaling feature, which
        # increases or decreases the number of replica pods a replication controller
        # has based on the resource usage of the existing pods.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
        #     When enabled, it ensures that a Heapster pod is running in the cluster,
        #     which is also used by the Cloud Monitoring service.
        class HorizontalPodAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the Kubernetes Dashboard.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether the Kubernetes Dashboard is enabled for this cluster.
        class KubernetesDashboard
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for NetworkPolicy. This only tracks whether the addon
        # is enabled or not on the Master, it does not track whether network policy
        # is enabled for the nodes.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether NetworkPolicy is enabled for this cluster.
        class NetworkPolicyConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for private clusters.
        # @!attribute [rw] enable_private_nodes
        #   @return [::Boolean]
        #     Whether nodes have internal IP addresses only. If enabled, all nodes are
        #     given only RFC 1918 private addresses and communicate with the master via
        #     private networking.
        # @!attribute [rw] enable_private_endpoint
        #   @return [::Boolean]
        #     Whether the master's internal IP address is used as the cluster endpoint.
        # @!attribute [rw] master_ipv4_cidr_block
        #   @return [::String]
        #     The IP range in CIDR notation to use for the hosted master network. This
        #     range will be used for assigning internal IP addresses to the master or
        #     set of masters, as well as the ILB VIP. This range must not overlap with
        #     any other ranges in use within the cluster's network.
        # @!attribute [rw] private_endpoint
        #   @return [::String]
        #     Output only. The internal IP address of this cluster's master endpoint.
        # @!attribute [rw] public_endpoint
        #   @return [::String]
        #     Output only. The external IP address of this cluster's master endpoint.
        class PrivateClusterConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for returning group information from authenticators.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether this cluster should return group membership lookups
        #     during authentication using a group of security groups.
        # @!attribute [rw] security_group
        #   @return [::String]
        #     The name of the security group-of-groups to be used. Only relevant
        #     if enabled = true.
        class AuthenticatorGroupsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the Cloud Run feature.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether Cloud Run addon is enabled for this cluster.
        class CloudRunConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the master authorized networks feature. Enabled
        # master authorized networks will disallow all external traffic to access
        # Kubernetes master through HTTPS except traffic from the given CIDR blocks,
        # Google Compute Engine Public IPs and Google Prod IPs.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether or not master authorized networks is enabled.
        # @!attribute [rw] cidr_blocks
        #   @return [::Array<::Google::Cloud::Container::V1::MasterAuthorizedNetworksConfig::CidrBlock>]
        #     cidr_blocks define up to 50 external networks that could access
        #     Kubernetes master through HTTPS.
        class MasterAuthorizedNetworksConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # CidrBlock contains an optional name and one CIDR block.
          # @!attribute [rw] display_name
          #   @return [::String]
          #     display_name is an optional field for users to identify CIDR blocks.
          # @!attribute [rw] cidr_block
          #   @return [::String]
          #     cidr_block must be specified in CIDR notation.
          class CidrBlock
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Configuration for the legacy Attribute Based Access Control authorization
        # mode.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the ABAC authorizer is enabled for this cluster. When enabled,
        #     identities in the system, including service accounts, nodes, and
        #     controllers, will have statically granted permissions beyond those
        #     provided by the RBAC configuration or IAM.
        class LegacyAbac
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the NetworkPolicy feature.
        # https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
        # @!attribute [rw] provider
        #   @return [::Google::Cloud::Container::V1::NetworkPolicy::Provider]
        #     The selected network policy provider.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether network policy is enabled on the cluster.
        class NetworkPolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Allowed Network Policy providers.
          module Provider
            # Not set
            PROVIDER_UNSPECIFIED = 0

            # Tigera (Calico Felix).
            CALICO = 1
          end
        end

        # Configuration for Binary Authorization.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enable Binary Authorization for this cluster. If enabled, all container
        #     images will be validated by Binary Authorization.
        class BinaryAuthorization
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for controlling how IPs are allocated in the cluster.
        # @!attribute [rw] use_ip_aliases
        #   @return [::Boolean]
        #     Whether alias IPs will be used for pod IPs in the cluster.
        # @!attribute [rw] create_subnetwork
        #   @return [::Boolean]
        #     Whether a new subnetwork will be created automatically for the cluster.
        #
        #     This field is only applicable when `use_ip_aliases` is true.
        # @!attribute [rw] subnetwork_name
        #   @return [::String]
        #     A custom subnetwork name to be used if `create_subnetwork` is true.  If
        #     this field is empty, then an automatic name will be chosen for the new
        #     subnetwork.
        # @!attribute [rw] cluster_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use cluster_ipv4_cidr_block.
        # @!attribute [rw] node_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use node_ipv4_cidr_block.
        # @!attribute [rw] services_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use services_ipv4_cidr_block.
        # @!attribute [rw] cluster_secondary_range_name
        #   @return [::String]
        #     The name of the secondary range to be used for the cluster CIDR
        #     block.  The secondary range will be used for pod IP
        #     addresses. This must be an existing secondary range associated
        #     with the cluster subnetwork.
        #
        #     This field is only applicable with use_ip_aliases is true and
        #     create_subnetwork is false.
        # @!attribute [rw] services_secondary_range_name
        #   @return [::String]
        #     The name of the secondary range to be used as for the services
        #     CIDR block.  The secondary range will be used for service
        #     ClusterIPs. This must be an existing secondary range associated
        #     with the cluster subnetwork.
        #
        #     This field is only applicable with use_ip_aliases is true and
        #     create_subnetwork is false.
        # @!attribute [rw] cluster_ipv4_cidr_block
        #   @return [::String]
        #     The IP address range for the cluster pod IPs. If this field is set, then
        #     `cluster.cluster_ipv4_cidr` must be left blank.
        #
        #     This field is only applicable when `use_ip_aliases` is true.
        #
        #     Set to blank to have a range chosen with the default size.
        #
        #     Set to /netmask (e.g. `/14`) to have a range chosen with a specific
        #     netmask.
        #
        #     Set to a
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
        #     `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
        #     to use.
        # @!attribute [rw] node_ipv4_cidr_block
        #   @return [::String]
        #     The IP address range of the instance IPs in this cluster.
        #
        #     This is applicable only if `create_subnetwork` is true.
        #
        #     Set to blank to have a range chosen with the default size.
        #
        #     Set to /netmask (e.g. `/14`) to have a range chosen with a specific
        #     netmask.
        #
        #     Set to a
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
        #     `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
        #     to use.
        # @!attribute [rw] services_ipv4_cidr_block
        #   @return [::String]
        #     The IP address range of the services IPs in this cluster. If blank, a range
        #     will be automatically chosen with the default size.
        #
        #     This field is only applicable when `use_ip_aliases` is true.
        #
        #     Set to blank to have a range chosen with the default size.
        #
        #     Set to /netmask (e.g. `/14`) to have a range chosen with a specific
        #     netmask.
        #
        #     Set to a
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
        #     `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
        #     to use.
        # @!attribute [rw] tpu_ipv4_cidr_block
        #   @return [::String]
        #     The IP address range of the Cloud TPUs in this cluster. If unspecified, a
        #     range will be automatically chosen with the default size.
        #
        #     This field is only applicable when `use_ip_aliases` is true.
        #
        #     If unspecified, the range will use the default size.
        #
        #     Set to /netmask (e.g. `/14`) to have a range chosen with a specific
        #     netmask.
        #
        #     Set to a
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
        #     `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
        #     to use.
        class IPAllocationPolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A Google Kubernetes Engine cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name of this cluster. The name must be unique within this project
        #     and location (e.g. zone or region), and can be up to 40 characters with
        #     the following restrictions:
        #
        #     * Lowercase letters, numbers, and hyphens only.
        #     * Must start with a letter.
        #     * Must end with a number or a letter.
        # @!attribute [rw] description
        #   @return [::String]
        #     An optional description of this cluster.
        # @!attribute [rw] initial_node_count
        #   @return [::Integer]
        #     The number of nodes to create in this cluster. You must ensure that your
        #     Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
        #     is sufficient for this number of instances. You must also have available
        #     firewall and routes quota.
        #     For requests, this field should only be used in lieu of a
        #     "node_pool" object, since this configuration (along with the
        #     "node_config") will be used to create a "NodePool" object with an
        #     auto-generated name. Do not use this and a node_pool at the same time.
        #
        #     This field is deprecated, use node_pool.initial_node_count instead.
        # @!attribute [rw] node_config
        #   @return [::Google::Cloud::Container::V1::NodeConfig]
        #     Parameters used in creating the cluster's nodes.
        #     For requests, this field should only be used in lieu of a
        #     "node_pool" object, since this configuration (along with the
        #     "initial_node_count") will be used to create a "NodePool" object with an
        #     auto-generated name. Do not use this and a node_pool at the same time.
        #     For responses, this field will be populated with the node configuration of
        #     the first node pool. (For configuration of each node pool, see
        #     `node_pool.config`)
        #
        #     If unspecified, the defaults are used.
        #     This field is deprecated, use node_pool.config instead.
        # @!attribute [rw] master_auth
        #   @return [::Google::Cloud::Container::V1::MasterAuth]
        #     The authentication information for accessing the master endpoint.
        #     If unspecified, the defaults are used:
        #     For clusters before v1.12, if master_auth is unspecified, `username` will
        #     be set to "admin", a random password will be generated, and a client
        #     certificate will be issued.
        # @!attribute [rw] logging_service
        #   @return [::String]
        #     The logging service the cluster should use to write logs.
        #     Currently available options:
        #
        #     * "logging.googleapis.com/kubernetes" - the Google Cloud Logging
        #     service with Kubernetes-native resource model
        #     * `logging.googleapis.com` - the Google Cloud Logging service.
        #     * `none` - no logs will be exported from the cluster.
        #     * if left as an empty string,`logging.googleapis.com` will be used.
        # @!attribute [rw] monitoring_service
        #   @return [::String]
        #     The monitoring service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
        #     * `none` - no metrics will be exported from the cluster.
        #     * if left as an empty string, `monitoring.googleapis.com` will be used.
        # @!attribute [rw] network
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the
        #     cluster is connected. If left unspecified, the `default` network
        #     will be used.
        # @!attribute [rw] cluster_ipv4_cidr
        #   @return [::String]
        #     The IP address range of the container pods in this cluster, in
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`). Leave blank to have
        #     one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
        # @!attribute [rw] addons_config
        #   @return [::Google::Cloud::Container::V1::AddonsConfig]
        #     Configurations for the various addons available to run in the cluster.
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the
        #     cluster is connected.
        # @!attribute [rw] node_pools
        #   @return [::Array<::Google::Cloud::Container::V1::NodePool>]
        #     The node pools associated with this cluster.
        #     This field should not be set if "node_config" or "initial_node_count" are
        #     specified.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     The list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes
        #     should be located.
        # @!attribute [rw] enable_kubernetes_alpha
        #   @return [::Boolean]
        #     Kubernetes alpha features are enabled on this cluster. This includes alpha
        #     API groups (e.g. v1alpha1) and features that may not be production ready in
        #     the kubernetes version of the master and nodes.
        #     The cluster has no SLA for uptime and master/node upgrades are disabled.
        #     Alpha enabled clusters are automatically deleted thirty days after
        #     creation.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The resource labels for the cluster to use to annotate any related
        #     Google Compute Engine resources.
        # @!attribute [rw] label_fingerprint
        #   @return [::String]
        #     The fingerprint of the set of labels for this cluster.
        # @!attribute [rw] legacy_abac
        #   @return [::Google::Cloud::Container::V1::LegacyAbac]
        #     Configuration for the legacy ABAC authorization mode.
        # @!attribute [rw] network_policy
        #   @return [::Google::Cloud::Container::V1::NetworkPolicy]
        #     Configuration options for the NetworkPolicy feature.
        # @!attribute [rw] ip_allocation_policy
        #   @return [::Google::Cloud::Container::V1::IPAllocationPolicy]
        #     Configuration for cluster IP allocation.
        # @!attribute [rw] master_authorized_networks_config
        #   @return [::Google::Cloud::Container::V1::MasterAuthorizedNetworksConfig]
        #     The configuration options for master authorized networks feature.
        # @!attribute [rw] maintenance_policy
        #   @return [::Google::Cloud::Container::V1::MaintenancePolicy]
        #     Configure the maintenance policy for this cluster.
        # @!attribute [rw] binary_authorization
        #   @return [::Google::Cloud::Container::V1::BinaryAuthorization]
        #     Configuration for Binary Authorization.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1::ClusterAutoscaling]
        #     Cluster-level autoscaling configuration.
        # @!attribute [rw] network_config
        #   @return [::Google::Cloud::Container::V1::NetworkConfig]
        #     Configuration for cluster networking.
        # @!attribute [rw] default_max_pods_constraint
        #   @return [::Google::Cloud::Container::V1::MaxPodsConstraint]
        #     The default constraint on the maximum number of pods that can be run
        #     simultaneously on a node in the node pool of this cluster. Only honored
        #     if cluster created with IP Alias support.
        # @!attribute [rw] resource_usage_export_config
        #   @return [::Google::Cloud::Container::V1::ResourceUsageExportConfig]
        #     Configuration for exporting resource usages. Resource usage export is
        #     disabled when this config is unspecified.
        # @!attribute [rw] authenticator_groups_config
        #   @return [::Google::Cloud::Container::V1::AuthenticatorGroupsConfig]
        #     Configuration controlling RBAC group membership information.
        # @!attribute [rw] private_cluster_config
        #   @return [::Google::Cloud::Container::V1::PrivateClusterConfig]
        #     Configuration for private cluster.
        # @!attribute [rw] database_encryption
        #   @return [::Google::Cloud::Container::V1::DatabaseEncryption]
        #     Configuration of etcd encryption.
        # @!attribute [rw] vertical_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1::VerticalPodAutoscaling]
        #     Cluster-level Vertical Pod Autoscaling configuration.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     [Output only] Server-defined URL for the resource.
        # @!attribute [rw] zone
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field is deprecated, use location instead.
        # @!attribute [rw] endpoint
        #   @return [::String]
        #     [Output only] The IP address of this cluster's master endpoint.
        #     The endpoint can be accessed from the internet at
        #     `https://username:password@endpoint/`.
        #
        #     See the `masterAuth` property of this resource for username and
        #     password information.
        # @!attribute [rw] initial_cluster_version
        #   @return [::String]
        #     The initial Kubernetes version for this cluster.  Valid versions are those
        #     found in validMasterVersions returned by getServerConfig.  The version can
        #     be upgraded over time; such upgrades are reflected in
        #     currentMasterVersion and currentNodeVersion.
        #
        #     Users may specify either explicit versions offered by
        #     Kubernetes Engine or version aliases, which have the following behavior:
        #
        #     - "latest": picks the highest valid Kubernetes version
        #     - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        #     - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        #     - "1.X.Y-gke.N": picks an explicit Kubernetes version
        #     - "","-": picks the default Kubernetes version
        # @!attribute [rw] current_master_version
        #   @return [::String]
        #     [Output only] The current software version of the master endpoint.
        # @!attribute [rw] current_node_version
        #   @return [::String]
        #     [Output only] Deprecated, use
        #     [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.zones.clusters.nodePools)
        #     instead. The current version of the node software components. If they are
        #     currently at multiple versions because they're in the process of being
        #     upgraded, this reflects the minimum version of all nodes.
        # @!attribute [rw] create_time
        #   @return [::String]
        #     [Output only] The time the cluster was created, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1::Cluster::Status]
        #     [Output only] The current status of this cluster.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     [Output only] Additional information about the current status of this
        #     cluster, if available.
        # @!attribute [rw] node_ipv4_cidr_size
        #   @return [::Integer]
        #     [Output only] The size of the address space on each node for hosting
        #     containers. This is provisioned from within the `container_ipv4_cidr`
        #     range. This field will only be set when cluster is in route-based network
        #     mode.
        # @!attribute [rw] services_ipv4_cidr
        #   @return [::String]
        #     [Output only] The IP address range of the Kubernetes services in
        #     this cluster, in
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `1.2.3.4/29`). Service addresses are
        #     typically put in the last `/16` from the container CIDR.
        # @!attribute [rw] instance_group_urls
        #   @return [::Array<::String>]
        #     Deprecated. Use node_pools.instance_group_urls.
        # @!attribute [rw] current_node_count
        #   @return [::Integer]
        #     [Output only]  The number of nodes currently in the cluster. Deprecated.
        #     Call Kubernetes API directly to retrieve node information.
        # @!attribute [rw] expire_time
        #   @return [::String]
        #     [Output only] The time the cluster will be automatically
        #     deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] location
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or
        #     [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which
        #     the cluster resides.
        # @!attribute [rw] enable_tpu
        #   @return [::Boolean]
        #     Enable the ability to use Cloud TPUs in this cluster.
        # @!attribute [rw] tpu_ipv4_cidr_block
        #   @return [::String]
        #     [Output only] The IP address range of the Cloud TPUs in this cluster, in
        #     [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `1.2.3.4/29`).
        # @!attribute [rw] conditions
        #   @return [::Array<::Google::Cloud::Container::V1::StatusCondition>]
        #     Which conditions caused the current cluster state.
        class Cluster
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class ResourceLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # The current status of the cluster.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The PROVISIONING state indicates the cluster is being created.
            PROVISIONING = 1

            # The RUNNING state indicates the cluster has been created and is fully
            # usable.
            RUNNING = 2

            # The RECONCILING state indicates that some work is actively being done on
            # the cluster, such as upgrading the master or node software. Details can
            # be found in the `statusMessage` field.
            RECONCILING = 3

            # The STOPPING state indicates the cluster is being deleted.
            STOPPING = 4

            # The ERROR state indicates the cluster may be unusable. Details
            # can be found in the `statusMessage` field.
            ERROR = 5

            # The DEGRADED state indicates the cluster requires user action to restore
            # full functionality. Details can be found in the `statusMessage` field.
            DEGRADED = 6
          end
        end

        # ClusterUpdate describes an update to the cluster. Exactly one update can
        # be applied to a cluster with each request, so at most one field can be
        # provided.
        # @!attribute [rw] desired_node_version
        #   @return [::String]
        #     The Kubernetes version to change the nodes to (typically an
        #     upgrade).
        #
        #     Users may specify either explicit versions offered by
        #     Kubernetes Engine or version aliases, which have the following behavior:
        #
        #     - "latest": picks the highest valid Kubernetes version
        #     - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        #     - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        #     - "1.X.Y-gke.N": picks an explicit Kubernetes version
        #     - "-": picks the Kubernetes master version
        # @!attribute [rw] desired_monitoring_service
        #   @return [::String]
        #     The monitoring service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * "monitoring.googleapis.com/kubernetes" - the Google Cloud Monitoring
        #     service with Kubernetes-native resource model
        #     * "monitoring.googleapis.com" - the Google Cloud Monitoring service
        #     * "none" - no metrics will be exported from the cluster
        # @!attribute [rw] desired_addons_config
        #   @return [::Google::Cloud::Container::V1::AddonsConfig]
        #     Configurations for the various addons available to run in the cluster.
        # @!attribute [rw] desired_node_pool_id
        #   @return [::String]
        #     The node pool to be upgraded. This field is mandatory if
        #     "desired_node_version", "desired_image_family" or
        #     "desired_node_pool_autoscaling" is specified and there is more than one
        #     node pool on the cluster.
        # @!attribute [rw] desired_image_type
        #   @return [::String]
        #     The desired image type for the node pool.
        #     NOTE: Set the "desired_node_pool" field as well.
        # @!attribute [rw] desired_database_encryption
        #   @return [::Google::Cloud::Container::V1::DatabaseEncryption]
        #     Configuration of etcd encryption.
        # @!attribute [rw] desired_node_pool_autoscaling
        #   @return [::Google::Cloud::Container::V1::NodePoolAutoscaling]
        #     Autoscaler configuration for the node pool specified in
        #     desired_node_pool_id. If there is only one pool in the
        #     cluster and desired_node_pool_id is not provided then
        #     the change applies to that single node pool.
        # @!attribute [rw] desired_locations
        #   @return [::Array<::String>]
        #     The desired list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes
        #     should be located. Changing the locations a cluster is in will result
        #     in nodes being either created or removed from the cluster, depending on
        #     whether locations are being added or removed.
        #
        #     This list must always include the cluster's primary zone.
        # @!attribute [rw] desired_master_authorized_networks_config
        #   @return [::Google::Cloud::Container::V1::MasterAuthorizedNetworksConfig]
        #     The desired configuration options for master authorized networks feature.
        # @!attribute [rw] desired_cluster_autoscaling
        #   @return [::Google::Cloud::Container::V1::ClusterAutoscaling]
        #     Cluster-level autoscaling configuration.
        # @!attribute [rw] desired_binary_authorization
        #   @return [::Google::Cloud::Container::V1::BinaryAuthorization]
        #     The desired configuration options for the Binary Authorization feature.
        # @!attribute [rw] desired_logging_service
        #   @return [::String]
        #     The logging service the cluster should use to write logs.
        #     Currently available options:
        #
        #     * "logging.googleapis.com/kubernetes" - the Google Cloud Logging
        #     service with Kubernetes-native resource model
        #     * "logging.googleapis.com" - the Google Cloud Logging service
        #     * "none" - no logs will be exported from the cluster
        # @!attribute [rw] desired_resource_usage_export_config
        #   @return [::Google::Cloud::Container::V1::ResourceUsageExportConfig]
        #     The desired configuration for exporting resource usage.
        # @!attribute [rw] desired_vertical_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1::VerticalPodAutoscaling]
        #     Cluster-level Vertical Pod Autoscaling configuration.
        # @!attribute [rw] desired_intra_node_visibility_config
        #   @return [::Google::Cloud::Container::V1::IntraNodeVisibilityConfig]
        #     The desired config of Intra-node visibility.
        # @!attribute [rw] desired_master_version
        #   @return [::String]
        #     The Kubernetes version to change the master to.
        #
        #     Users may specify either explicit versions offered by
        #     Kubernetes Engine or version aliases, which have the following behavior:
        #
        #     - "latest": picks the highest valid Kubernetes version
        #     - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        #     - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        #     - "1.X.Y-gke.N": picks an explicit Kubernetes version
        #     - "-": picks the default Kubernetes version
        class ClusterUpdate
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # This operation resource represents operations that may have happened or are
        # happening on the cluster. All fields are output only.
        # @!attribute [rw] name
        #   @return [::String]
        #     The server-assigned ID for the operation.
        # @!attribute [rw] zone
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation
        #     is taking place.
        #     This field is deprecated, use location instead.
        # @!attribute [rw] operation_type
        #   @return [::Google::Cloud::Container::V1::Operation::Type]
        #     The operation type.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1::Operation::Status]
        #     The current status of the operation.
        # @!attribute [rw] detail
        #   @return [::String]
        #     Detailed operation progress, if available.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     If an error has occurred, a textual description of the error.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     Server-defined URL for the resource.
        # @!attribute [rw] target_link
        #   @return [::String]
        #     Server-defined URL for the target of the operation.
        # @!attribute [rw] location
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or
        #     [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which
        #     the cluster resides.
        # @!attribute [rw] start_time
        #   @return [::String]
        #     [Output only] The time the operation started, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] end_time
        #   @return [::String]
        #     [Output only] The time the operation completed, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] cluster_conditions
        #   @return [::Array<::Google::Cloud::Container::V1::StatusCondition>]
        #     Which conditions caused the current cluster state.
        # @!attribute [rw] nodepool_conditions
        #   @return [::Array<::Google::Cloud::Container::V1::StatusCondition>]
        #     Which conditions caused the current node pool state.
        class Operation
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Current status of the operation.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The operation has been created.
            PENDING = 1

            # The operation is currently running.
            RUNNING = 2

            # The operation is done, either cancelled or completed.
            DONE = 3

            # The operation is aborting.
            ABORTING = 4
          end

          # Operation type.
          module Type
            # Not set.
            TYPE_UNSPECIFIED = 0

            # Cluster create.
            CREATE_CLUSTER = 1

            # Cluster delete.
            DELETE_CLUSTER = 2

            # A master upgrade.
            UPGRADE_MASTER = 3

            # A node upgrade.
            UPGRADE_NODES = 4

            # Cluster repair.
            REPAIR_CLUSTER = 5

            # Cluster update.
            UPDATE_CLUSTER = 6

            # Node pool create.
            CREATE_NODE_POOL = 7

            # Node pool delete.
            DELETE_NODE_POOL = 8

            # Set node pool management.
            SET_NODE_POOL_MANAGEMENT = 9

            # Automatic node pool repair.
            AUTO_REPAIR_NODES = 10

            # Automatic node upgrade.
            AUTO_UPGRADE_NODES = 11

            # Set labels.
            SET_LABELS = 12

            # Set/generate master auth materials
            SET_MASTER_AUTH = 13

            # Set node pool size.
            SET_NODE_POOL_SIZE = 14

            # Updates network policy for a cluster.
            SET_NETWORK_POLICY = 15

            # Set the maintenance policy.
            SET_MAINTENANCE_POLICY = 16
          end
        end

        # CreateClusterRequest creates a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] cluster
        #   @return [::Google::Cloud::Container::V1::Cluster]
        #     Required. A [cluster
        #     resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.zones.clusters)
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project and location) where the cluster will be created.
        #     Specified in the format `projects/*/locations/*`.
        class CreateClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetClusterRequest gets the settings of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to retrieve.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to retrieve.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class GetClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateClusterRequest updates the settings of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] update
        #   @return [::Google::Cloud::Container::V1::ClusterUpdate]
        #     Required. A description of the update.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to update.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class UpdateClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateNodePoolRequests update a node pool's image and/or version.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_version
        #   @return [::String]
        #     Required. The Kubernetes version to change the nodes to (typically an
        #     upgrade).
        #
        #     Users may specify either explicit versions offered by Kubernetes Engine or
        #     version aliases, which have the following behavior:
        #
        #     - "latest": picks the highest valid Kubernetes version
        #     - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        #     - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        #     - "1.X.Y-gke.N": picks an explicit Kubernetes version
        #     - "-": picks the Kubernetes master version
        # @!attribute [rw] image_type
        #   @return [::String]
        #     Required. The desired image type for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool) of the node pool to
        #     update. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class UpdateNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1::NodePoolAutoscaling]
        #     Required. Autoscaling configuration for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool) of the node pool to set
        #     autoscaler settings. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolAutoscalingRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetLoggingServiceRequest sets the logging service of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] logging_service
        #   @return [::String]
        #     Required. The logging service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * "logging.googleapis.com" - the Google Cloud Logging service
        #     * "none" - no metrics will be exported from the cluster
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set logging.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLoggingServiceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetMonitoringServiceRequest sets the monitoring service of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] monitoring_service
        #   @return [::String]
        #     Required. The monitoring service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * "monitoring.googleapis.com/kubernetes" - the Google Cloud Monitoring
        #     service with Kubernetes-native resource model
        #     * "monitoring.googleapis.com" - the Google Cloud Monitoring service
        #     * "none" - no metrics will be exported from the cluster
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set monitoring.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetMonitoringServiceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetAddonsConfigRequest sets the addons associated with the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] addons_config
        #   @return [::Google::Cloud::Container::V1::AddonsConfig]
        #     Required. The desired configurations for the various addons available to run in the
        #     cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set addons.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetAddonsConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetLocationsRequest sets the locations of the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     Required. The desired list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes
        #     should be located. Changing the locations a cluster is in will result
        #     in nodes being either created or removed from the cluster, depending on
        #     whether locations are being added or removed.
        #
        #     This list must always include the cluster's primary zone.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set locations.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLocationsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateMasterRequest updates the master of the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] master_version
        #   @return [::String]
        #     Required. The Kubernetes version to change the master to.
        #
        #     Users may specify either explicit versions offered by Kubernetes Engine or
        #     version aliases, which have the following behavior:
        #
        #     - "latest": picks the highest valid Kubernetes version
        #     - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        #     - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        #     - "1.X.Y-gke.N": picks an explicit Kubernetes version
        #     - "-": picks the default Kubernetes version
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to update.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class UpdateMasterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetMasterAuthRequest updates the admin password of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] action
        #   @return [::Google::Cloud::Container::V1::SetMasterAuthRequest::Action]
        #     Required. The exact form of action to be taken on the master auth.
        # @!attribute [rw] update
        #   @return [::Google::Cloud::Container::V1::MasterAuth]
        #     Required. A description of the update.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set auth.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetMasterAuthRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Operation type: what type update to perform.
          module Action
            # Operation is unknown and will error out.
            UNKNOWN = 0

            # Set the password to a user generated value.
            SET_PASSWORD = 1

            # Generate a new password and set it to that.
            GENERATE_PASSWORD = 2

            # Set the username.  If an empty username is provided, basic authentication
            # is disabled for the cluster.  If a non-empty username is provided, basic
            # authentication is enabled, with either a provided password or a generated
            # one.
            SET_USERNAME = 3
          end
        end

        # DeleteClusterRequest deletes a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to delete.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to delete.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class DeleteClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListClustersRequest lists clusters.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides, or "-" for all zones.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project and location) where the clusters will be listed.
        #     Specified in the format `projects/*/locations/*`.
        #     Location "-" matches all zones and all regions.
        class ListClustersRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListClustersResponse is the result of ListClustersRequest.
        # @!attribute [rw] clusters
        #   @return [::Array<::Google::Cloud::Container::V1::Cluster>]
        #     A list of clusters in the project in the specified zone, or
        #     across all ones.
        # @!attribute [rw] missing_zones
        #   @return [::Array<::String>]
        #     If any zones are listed here, the list of clusters returned
        #     may be missing those zones.
        class ListClustersResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetOperationRequest gets a single operation.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] operation_id
        #   @return [::String]
        #     Deprecated. The server-assigned `name` of the operation.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, operation id) of the operation to get.
        #     Specified in the format `projects/*/locations/*/operations/*`.
        class GetOperationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListOperationsRequest lists operations.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) to return operations for, or `-` for
        #     all zones. This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project and location) where the operations will be listed.
        #     Specified in the format `projects/*/locations/*`.
        #     Location "-" matches all zones and all regions.
        class ListOperationsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CancelOperationRequest cancels a single operation.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] operation_id
        #   @return [::String]
        #     Deprecated. The server-assigned `name` of the operation.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, operation id) of the operation to cancel.
        #     Specified in the format `projects/*/locations/*/operations/*`.
        class CancelOperationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListOperationsResponse is the result of ListOperationsRequest.
        # @!attribute [rw] operations
        #   @return [::Array<::Google::Cloud::Container::V1::Operation>]
        #     A list of operations in the project in the specified zone.
        # @!attribute [rw] missing_zones
        #   @return [::Array<::String>]
        #     If any zones are listed here, the list of operations returned
        #     may be missing the operations from those zones.
        class ListOperationsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Gets the current Kubernetes Engine service configuration.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) to return operations for.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project and location) of the server config to get,
        #     specified in the format `projects/*/locations/*`.
        class GetServerConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Kubernetes Engine service configuration.
        # @!attribute [rw] default_cluster_version
        #   @return [::String]
        #     Version of Kubernetes the service deploys by default.
        # @!attribute [rw] valid_node_versions
        #   @return [::Array<::String>]
        #     List of valid node upgrade target versions.
        # @!attribute [rw] default_image_type
        #   @return [::String]
        #     Default image type.
        # @!attribute [rw] valid_image_types
        #   @return [::Array<::String>]
        #     List of valid image types.
        # @!attribute [rw] valid_master_versions
        #   @return [::Array<::String>]
        #     List of valid master versions.
        class ServerConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CreateNodePoolRequest creates a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] node_pool
        #   @return [::Google::Cloud::Container::V1::NodePool]
        #     Required. The node pool to create.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project, location, cluster id) where the node pool will be
        #     created. Specified in the format
        #     `projects/*/locations/*/clusters/*`.
        class CreateNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DeleteNodePoolRequest deletes a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to delete.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to
        #     delete. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class DeleteNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListNodePoolsRequest lists the node pool(s) for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project, location, cluster id) where the node pools will be
        #     listed. Specified in the format `projects/*/locations/*/clusters/*`.
        class ListNodePoolsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetNodePoolRequest retrieves a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to
        #     get. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class GetNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # NodePool contains the name and configuration for a cluster's node pool.
        # Node pools are a set of nodes (i.e. VM's), with a common configuration and
        # specification, under the control of the cluster master. They may have a set
        # of Kubernetes labels applied to them, which may be used to reference them
        # during pod scheduling. They may also be resized up or down, to accommodate
        # the workload.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name of the node pool.
        # @!attribute [rw] config
        #   @return [::Google::Cloud::Container::V1::NodeConfig]
        #     The node configuration of the pool.
        # @!attribute [rw] initial_node_count
        #   @return [::Integer]
        #     The initial node count for the pool. You must ensure that your
        #     Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
        #     is sufficient for this number of instances. You must also have available
        #     firewall and routes quota.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     [Output only] Server-defined URL for the resource.
        # @!attribute [rw] version
        #   @return [::String]
        #     The version of the Kubernetes of this node.
        # @!attribute [rw] instance_group_urls
        #   @return [::Array<::String>]
        #     [Output only] The resource URLs of the [managed instance
        #     groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances)
        #     associated with this node pool.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1::NodePool::Status]
        #     [Output only] The status of the nodes in this pool instance.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     [Output only] Additional information about the current status of this
        #     node pool instance, if available.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1::NodePoolAutoscaling]
        #     Autoscaler configuration for this NodePool. Autoscaler is enabled
        #     only if a valid configuration is present.
        # @!attribute [rw] management
        #   @return [::Google::Cloud::Container::V1::NodeManagement]
        #     NodeManagement configuration for this NodePool.
        # @!attribute [rw] max_pods_constraint
        #   @return [::Google::Cloud::Container::V1::MaxPodsConstraint]
        #     The constraint on the maximum number of pods that can be run
        #     simultaneously on a node in the node pool.
        # @!attribute [rw] conditions
        #   @return [::Array<::Google::Cloud::Container::V1::StatusCondition>]
        #     Which conditions caused the current node pool state.
        # @!attribute [rw] pod_ipv4_cidr_size
        #   @return [::Integer]
        #     [Output only] The pod CIDR block size per node in this node pool.
        class NodePool
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The current status of the node pool instance.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The PROVISIONING state indicates the node pool is being created.
            PROVISIONING = 1

            # The RUNNING state indicates the node pool has been created
            # and is fully usable.
            RUNNING = 2

            # The RUNNING_WITH_ERROR state indicates the node pool has been created
            # and is partially usable. Some error state has occurred and some
            # functionality may be impaired. Customer may need to reissue a request
            # or trigger a new update.
            RUNNING_WITH_ERROR = 3

            # The RECONCILING state indicates that some work is actively being done on
            # the node pool, such as upgrading node software. Details can
            # be found in the `statusMessage` field.
            RECONCILING = 4

            # The STOPPING state indicates the node pool is being deleted.
            STOPPING = 5

            # The ERROR state indicates the node pool may be unusable. Details
            # can be found in the `statusMessage` field.
            ERROR = 6
          end
        end

        # NodeManagement defines the set of node management services turned on for the
        # node pool.
        # @!attribute [rw] auto_upgrade
        #   @return [::Boolean]
        #     A flag that specifies whether node auto-upgrade is enabled for the node
        #     pool. If enabled, node auto-upgrade helps keep the nodes in your node pool
        #     up to date with the latest release version of Kubernetes.
        # @!attribute [rw] auto_repair
        #   @return [::Boolean]
        #     A flag that specifies whether the node auto-repair is enabled for the node
        #     pool. If enabled, the nodes in this node pool will be monitored and, if
        #     they fail health checks too many times, an automatic repair action will be
        #     triggered.
        # @!attribute [rw] upgrade_options
        #   @return [::Google::Cloud::Container::V1::AutoUpgradeOptions]
        #     Specifies the Auto Upgrade knobs for the node pool.
        class NodeManagement
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AutoUpgradeOptions defines the set of options for the user to control how
        # the Auto Upgrades will proceed.
        # @!attribute [rw] auto_upgrade_start_time
        #   @return [::String]
        #     [Output only] This field is set when upgrades are about to commence
        #     with the approximate start time for the upgrades, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] description
        #   @return [::String]
        #     [Output only] This field is set when upgrades are about to commence
        #     with the description of the upgrade.
        class AutoUpgradeOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # MaintenancePolicy defines the maintenance policy to be used for the cluster.
        # @!attribute [rw] window
        #   @return [::Google::Cloud::Container::V1::MaintenanceWindow]
        #     Specifies the maintenance window in which maintenance may be performed.
        # @!attribute [rw] resource_version
        #   @return [::String]
        #     A hash identifying the version of this policy, so that updates to fields of
        #     the policy won't accidentally undo intermediate changes (and so that users
        #     of the API unaware of some fields won't accidentally remove other fields).
        #     Make a <code>get()</code> request to the cluster to get the current
        #     resource version and include it with requests to set the policy.
        class MaintenancePolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # MaintenanceWindow defines the maintenance window to be used for the cluster.
        # @!attribute [rw] daily_maintenance_window
        #   @return [::Google::Cloud::Container::V1::DailyMaintenanceWindow]
        #     DailyMaintenanceWindow specifies a daily maintenance operation window.
        # @!attribute [rw] recurring_window
        #   @return [::Google::Cloud::Container::V1::RecurringTimeWindow]
        #     RecurringWindow specifies some number of recurring time periods for
        #     maintenance to occur. The time windows may be overlapping. If no
        #     maintenance windows are set, maintenance can occur at any time.
        # @!attribute [rw] maintenance_exclusions
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Container::V1::TimeWindow}]
        #     Exceptions to maintenance window. Non-emergency maintenance should not
        #     occur in these windows.
        class MaintenanceWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Container::V1::TimeWindow]
          class MaintenanceExclusionsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Represents an arbitrary window of time.
        # @!attribute [rw] start_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The time that the window first starts.
        # @!attribute [rw] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The time that the window ends. The end time should take place after the
        #     start time.
        class TimeWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents an arbitrary window of time that recurs.
        # @!attribute [rw] window
        #   @return [::Google::Cloud::Container::V1::TimeWindow]
        #     The window of the first recurrence.
        # @!attribute [rw] recurrence
        #   @return [::String]
        #     An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how
        #     this window reccurs. They go on for the span of time between the start and
        #     end time.
        #
        #     For example, to have something repeat every weekday, you'd use:
        #       <code>FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR</code>
        #     To repeat some window daily (equivalent to the DailyMaintenanceWindow):
        #       <code>FREQ=DAILY</code>
        #     For the first weekend of every month:
        #       <code>FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU</code>
        #     This specifies how frequently the window starts. Eg, if you wanted to have
        #     a 9-5 UTC-4 window every weekday, you'd use something like:
        #     <code>
        #       start time = 2019-01-01T09:00:00-0400
        #       end time = 2019-01-01T17:00:00-0400
        #       recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
        #     </code>
        #     Windows can span multiple days. Eg, to make the window encompass every
        #     weekend from midnight Saturday till the last minute of Sunday UTC:
        #     <code>
        #       start time = 2019-01-05T00:00:00Z
        #       end time = 2019-01-07T23:59:00Z
        #       recurrence = FREQ=WEEKLY;BYDAY=SA
        #     </code>
        #     Note the start and end time's specific dates are largely arbitrary except
        #     to specify duration of the window and when it first starts.
        #     The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        class RecurringTimeWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Time window specified for daily maintenance operations.
        # @!attribute [rw] start_time
        #   @return [::String]
        #     Time within the maintenance window to start the maintenance operations.
        #     Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        #     format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
        # @!attribute [rw] duration
        #   @return [::String]
        #     [Output only] Duration of the time window, automatically chosen to be
        #     smallest possible in the given scenario.
        #     Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        #     format "PTnHnMnS".
        class DailyMaintenanceWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolManagementRequest sets the node management properties of a node
        # pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] management
        #   @return [::Google::Cloud::Container::V1::NodeManagement]
        #     Required. NodeManagement configuration for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to set
        #     management properties. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolManagementRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolSizeRequest sets the size a node
        # pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_count
        #   @return [::Integer]
        #     Required. The desired node count for the pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to set
        #     size.
        #     Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolSizeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
        # NodePool upgrade. This will be an no-op if the last upgrade successfully
        # completed.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to rollback.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Deprecated. The name of the node pool to rollback.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node poll to
        #     rollback upgrade.
        #     Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
        class RollbackNodePoolUpgradeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListNodePoolsResponse is the result of ListNodePoolsRequest.
        # @!attribute [rw] node_pools
        #   @return [::Array<::Google::Cloud::Container::V1::NodePool>]
        #     A list of node pools for a cluster.
        class ListNodePoolsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ClusterAutoscaling contains global, per-cluster information
        # required by Cluster Autoscaler to automatically adjust
        # the size of the cluster and create/delete
        # node pools based on the current needs.
        # @!attribute [rw] enable_node_autoprovisioning
        #   @return [::Boolean]
        #     Enables automatic node pool creation and deletion.
        # @!attribute [rw] resource_limits
        #   @return [::Array<::Google::Cloud::Container::V1::ResourceLimit>]
        #     Contains global constraints regarding minimum and maximum
        #     amount of resources in the cluster.
        # @!attribute [rw] autoprovisioning_node_pool_defaults
        #   @return [::Google::Cloud::Container::V1::AutoprovisioningNodePoolDefaults]
        #     AutoprovisioningNodePoolDefaults contains defaults for a node pool
        #     created by NAP.
        # @!attribute [rw] autoprovisioning_locations
        #   @return [::Array<::String>]
        #     The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available)
        #     in which the NodePool's nodes can be created by NAP.
        class ClusterAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AutoprovisioningNodePoolDefaults contains defaults for a node pool created
        # by NAP.
        # @!attribute [rw] oauth_scopes
        #   @return [::Array<::String>]
        #     Scopes that are used by NAP when creating node pools. If oauth_scopes are
        #     specified, service_account should be empty.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     The Google Cloud Platform Service Account to be used by the node VMs. If
        #     service_account is specified, scopes should be empty.
        class AutoprovisioningNodePoolDefaults
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Contains information about amount of some resource in the cluster.
        # For memory, value should be in GB.
        # @!attribute [rw] resource_type
        #   @return [::String]
        #     Resource name "cpu", "memory" or gpu-specific string.
        # @!attribute [rw] minimum
        #   @return [::Integer]
        #     Minimum amount of the resource in the cluster.
        # @!attribute [rw] maximum
        #   @return [::Integer]
        #     Maximum amount of the resource in the cluster.
        class ResourceLimit
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # NodePoolAutoscaling contains information required by cluster autoscaler to
        # adjust the size of the node pool to the current cluster usage.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Is autoscaling enabled for this node pool.
        # @!attribute [rw] min_node_count
        #   @return [::Integer]
        #     Minimum number of nodes in the NodePool. Must be >= 1 and <=
        #     max_node_count.
        # @!attribute [rw] max_node_count
        #   @return [::Integer]
        #     Maximum number of nodes in the NodePool. Must be >= min_node_count. There
        #     has to enough quota to scale up the cluster.
        # @!attribute [rw] autoprovisioned
        #   @return [::Boolean]
        #     Can this node pool be deleted automatically.
        class NodePoolAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
        # Engine cluster, which will in turn set them for Google Compute Engine
        # resources used by that cluster
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Required. The labels to set for that cluster.
        # @!attribute [rw] label_fingerprint
        #   @return [::String]
        #     Required. The fingerprint of the previous set of labels for this resource,
        #     used to detect conflicts. The fingerprint is initially generated by
        #     Kubernetes Engine and changes after every request to modify or update
        #     labels. You must always provide an up-to-date fingerprint hash when
        #     updating or changing labels. Make a <code>get()</code> request to the
        #     resource to get the latest fingerprint.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to set labels.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLabelsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class ResourceLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
        # a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Required. Whether ABAC authorization will be enabled in the cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to set legacy abac.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLegacyAbacRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # StartIPRotationRequest creates a new IP for the cluster and then performs
        # a node upgrade on each node pool to point to the new IP.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to start IP
        #     rotation. Specified in the format `projects/*/locations/*/clusters/*`.
        # @!attribute [rw] rotate_credentials
        #   @return [::Boolean]
        #     Whether to rotate credentials during IP rotation.
        class StartIPRotationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CompleteIPRotationRequest moves the cluster master back into single-IP mode.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to complete IP
        #     rotation. Specified in the format `projects/*/locations/*/clusters/*`.
        class CompleteIPRotationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AcceleratorConfig represents a Hardware Accelerator request.
        # @!attribute [rw] accelerator_count
        #   @return [::Integer]
        #     The number of the accelerator cards exposed to an instance.
        # @!attribute [rw] accelerator_type
        #   @return [::String]
        #     The accelerator type resource name. List of supported accelerators
        #     [here](https://cloud.google.com/compute/docs/gpus)
        class AcceleratorConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNetworkPolicyRequest enables/disables network policy for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Deprecated. The Google Developers Console [project ID or project
        #     number](https://developers.google.com/console/help/new/#projectnumber).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] network_policy
        #   @return [::Google::Cloud::Container::V1::NetworkPolicy]
        #     Required. Configuration options for the NetworkPolicy feature.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to set networking
        #     policy. Specified in the format `projects/*/locations/*/clusters/*`.
        class SetNetworkPolicyRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. The Google Developers Console [project ID or project
        #     number](https://support.google.com/cloud/answer/6158840).
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
        #     resides.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. The name of the cluster to update.
        # @!attribute [rw] maintenance_policy
        #   @return [::Google::Cloud::Container::V1::MaintenancePolicy]
        #     Required. The maintenance policy to be set for the cluster. An empty field
        #     clears the existing maintenance policy.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster id) of the cluster to set maintenance
        #     policy.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetMaintenancePolicyRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # StatusCondition describes why a cluster or a node pool has a certain status
        # (e.g., ERROR or DEGRADED).
        # @!attribute [rw] code
        #   @return [::Google::Cloud::Container::V1::StatusCondition::Code]
        #     Machine-friendly representation of the condition
        # @!attribute [rw] message
        #   @return [::String]
        #     Human-friendly representation of the condition
        class StatusCondition
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Code for each condition
          module Code
            # UNKNOWN indicates a generic condition.
            UNKNOWN = 0

            # GCE_STOCKOUT indicates a Google Compute Engine stockout.
            GCE_STOCKOUT = 1

            # GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
            # service account.
            GKE_SERVICE_ACCOUNT_DELETED = 2

            # Google Compute Engine quota was exceeded.
            GCE_QUOTA_EXCEEDED = 3

            # Cluster state was manually changed by an SRE due to a system logic error.
            SET_BY_OPERATOR = 4

            # Unable to perform an encrypt operation against the CloudKMS key used for
            # etcd level encryption.
            # More codes TBA
            CLOUD_KMS_KEY_ERROR = 7
          end
        end

        # NetworkConfig reports the relative names of network & subnetwork.
        # @!attribute [rw] network
        #   @return [::String]
        #     Output only. The relative name of the Google Compute Engine
        #     {::Google::Cloud::Container::V1::NetworkConfig#network network}(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which
        #     the cluster is connected.
        #     Example: projects/my-project/global/networks/my-network
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Output only. The relative name of the Google Compute Engine
        #     [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected.
        #     Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
        # @!attribute [rw] enable_intra_node_visibility
        #   @return [::Boolean]
        #     Whether Intra-node visibility is enabled for this cluster.
        #     This makes same node pod to pod traffic visible for VPC network.
        class NetworkConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # IntraNodeVisibilityConfig contains the desired config of the intra-node
        # visibility on this cluster.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enables intra node visibility for this cluster.
        class IntraNodeVisibilityConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Constraints applied to pods.
        # @!attribute [rw] max_pods_per_node
        #   @return [::Integer]
        #     Constraint enforced on the max num of pods per node.
        class MaxPodsConstraint
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration of etcd encryption.
        # @!attribute [rw] state
        #   @return [::Google::Cloud::Container::V1::DatabaseEncryption::State]
        #     Denotes the state of etcd encryption.
        # @!attribute [rw] key_name
        #   @return [::String]
        #     Name of CloudKMS key to use for the encryption of secrets in etcd.
        #     Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
        class DatabaseEncryption
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # State of etcd encryption.
          module State
            # Should never be set
            UNKNOWN = 0

            # Secrets in etcd are encrypted.
            ENCRYPTED = 1

            # Secrets in etcd are stored in plain text (at etcd level) - this is
            # unrelated to GCE level full disk encryption.
            DECRYPTED = 2
          end
        end

        # ListUsableSubnetworksRequest requests the list of usable subnetworks
        # available to a user for creating clusters.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent project where subnetworks are usable.
        #     Specified in the format `projects/*`.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Filtering currently only supports equality on the networkProjectId and must
        #     be in the form: "networkProjectId=[PROJECTID]", where `networkProjectId`
        #     is the project which owns the listed subnetworks. This defaults to the
        #     parent project ID.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The max number of results per page that should be returned. If the number
        #     of available results is larger than `page_size`, a `next_page_token` is
        #     returned which can be used to get the next page of results in subsequent
        #     requests. Acceptable values are 0 to 500, inclusive. (Default: 500)
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Specifies a page token to use. Set this to the nextPageToken returned by
        #     previous list requests to get the next page of results.
        class ListUsableSubnetworksRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListUsableSubnetworksResponse is the response of
        # ListUsableSubnetworksRequest.
        # @!attribute [rw] subnetworks
        #   @return [::Array<::Google::Cloud::Container::V1::UsableSubnetwork>]
        #     A list of usable subnetworks in the specified network project.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     This token allows you to get the next page of results for list requests.
        #     If the number of results is larger than `page_size`, use the
        #     `next_page_token` as a value for the query parameter `page_token` in the
        #     next request. The value will become empty when there are no more pages.
        class ListUsableSubnetworksResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Secondary IP range of a usable subnetwork.
        # @!attribute [rw] range_name
        #   @return [::String]
        #     The name associated with this subnetwork secondary range, used when adding
        #     an alias IP range to a VM instance.
        # @!attribute [rw] ip_cidr_range
        #   @return [::String]
        #     The range of IP addresses belonging to this subnetwork secondary range.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1::UsableSubnetworkSecondaryRange::Status]
        #     This field is to determine the status of the secondary range programmably.
        class UsableSubnetworkSecondaryRange
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Status shows the current usage of a secondary IP range.
          module Status
            # UNKNOWN is the zero value of the Status enum. It's not a valid status.
            UNKNOWN = 0

            # UNUSED denotes that this range is unclaimed by any cluster.
            UNUSED = 1

            # IN_USE_SERVICE denotes that this range is claimed by a cluster for
            # services. It cannot be used for other clusters.
            IN_USE_SERVICE = 2

            # IN_USE_SHAREABLE_POD denotes this range was created by the network admin
            # and is currently claimed by a cluster for pods. It can only be used by
            # other clusters as a pod range.
            IN_USE_SHAREABLE_POD = 3

            # IN_USE_MANAGED_POD denotes this range was created by GKE and is claimed
            # for pods. It cannot be used for other clusters.
            IN_USE_MANAGED_POD = 4
          end
        end

        # UsableSubnetwork resource returns the subnetwork name, its associated network
        # and the primary CIDR range.
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Subnetwork Name.
        #     Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
        # @!attribute [rw] network
        #   @return [::String]
        #     Network Name.
        #     Example: projects/my-project/global/networks/my-network
        # @!attribute [rw] ip_cidr_range
        #   @return [::String]
        #     The range of internal addresses that are owned by this subnetwork.
        # @!attribute [rw] secondary_ip_ranges
        #   @return [::Array<::Google::Cloud::Container::V1::UsableSubnetworkSecondaryRange>]
        #     Secondary IP ranges.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     A human readable status message representing the reasons for cases where
        #     the caller cannot use the secondary ranges under the subnet. For example if
        #     the secondary_ip_ranges is empty due to a permission issue, an insufficient
        #     permission message will be given by status_message.
        class UsableSubnetwork
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for exporting cluster resource usages.
        # @!attribute [rw] bigquery_destination
        #   @return [::Google::Cloud::Container::V1::ResourceUsageExportConfig::BigQueryDestination]
        #     Configuration to use BigQuery as usage export destination.
        # @!attribute [rw] enable_network_egress_metering
        #   @return [::Boolean]
        #     Whether to enable network egress metering for this cluster. If enabled, a
        #     daemonset will be created in the cluster to meter network egress traffic.
        # @!attribute [rw] consumption_metering_config
        #   @return [::Google::Cloud::Container::V1::ResourceUsageExportConfig::ConsumptionMeteringConfig]
        #     Configuration to enable resource consumption metering.
        class ResourceUsageExportConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Parameters for using BigQuery as the destination of resource usage export.
          # @!attribute [rw] dataset_id
          #   @return [::String]
          #     The ID of a BigQuery Dataset.
          class BigQueryDestination
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Parameters for controlling consumption metering.
          # @!attribute [rw] enabled
          #   @return [::Boolean]
          #     Whether to enable consumption metering for this cluster. If enabled, a
          #     second BigQuery table will be created to hold resource consumption
          #     records.
          class ConsumptionMeteringConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # VerticalPodAutoscaling contains global, per-cluster information
        # required by Vertical Pod Autoscaler to automatically adjust
        # the resources of pods controlled by it.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enables vertical pod autoscaling.
        class VerticalPodAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end
      end
    end
  end
end