v1/doc/google/container/v1/doc_cluster_service.js

// Copyright 2019 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.

// Note: this file is purely for documentation. Any contents are not expected
// to be loaded as the JS file.

/**
 * Parameters that describe the nodes in a cluster.
 *
 * @property {string} machineType
 *   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`.
 *
 * @property {number} diskSizeGb
 *   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.
 *
 * @property {string[]} oauthScopes
 *   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.
 *
 * @property {string} serviceAccount
 *   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.
 *
 * @property {Object.<string, string>} metadata
 *   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"
 *    "enable-os-login"
 *    "gci-update-strategy"
 *    "gci-ensure-gke-docker"
 *    "instance-template"
 *    "kube-env"
 *    "startup-script"
 *    "user-data"
 *
 *   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.
 *
 * @property {string} imageType
 *   The image type to use for this node. Note that for a given image type,
 *   the latest version of it will be used.
 *
 * @property {Object.<string, string>} labels
 *   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/
 *
 * @property {number} localSsdCount
 *   The number of local SSD disks to be attached to the node.
 *
 *   The limit for this value is dependant upon the maximum number of
 *   disks available on a machine per zone. See:
 *   https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
 *   for more information.
 *
 * @property {string[]} tags
 *   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.
 *
 * @property {boolean} preemptible
 *   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.
 *
 * @property {Object[]} accelerators
 *   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.
 *
 *   This object should have the same structure as [AcceleratorConfig]{@link google.container.v1.AcceleratorConfig}
 *
 * @property {string} diskType
 *   Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
 *
 *   If unspecified, the default disk type is 'pd-standard'
 *
 * @property {string} minCpuPlatform
 *   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)
 *
 * @typedef NodeConfig
 * @memberof google.container.v1
 * @see [google.container.v1.NodeConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NodeConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The authentication information for accessing the master endpoint.
 * Authentication can be done using HTTP basic auth or using client
 * certificates.
 *
 * @property {string} username
 *   The username to use for HTTP basic authentication to the master endpoint.
 *   For clusters v1.6.0 and later, you can disable basic authentication by
 *   providing an empty username.
 *
 * @property {string} password
 *   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.
 *
 * @property {Object} clientCertificateConfig
 *   Configuration for client certificate authentication on the cluster. For
 *   clusters before v1.12, if no configuration is specified, a client
 *   certificate is issued.
 *
 *   This object should have the same structure as [ClientCertificateConfig]{@link google.container.v1.ClientCertificateConfig}
 *
 * @property {string} clusterCaCertificate
 *   [Output only] Base64-encoded public certificate that is the root of
 *   trust for the cluster.
 *
 * @property {string} clientCertificate
 *   [Output only] Base64-encoded public certificate used by clients to
 *   authenticate to the cluster endpoint.
 *
 * @property {string} clientKey
 *   [Output only] Base64-encoded private key used by clients to authenticate
 *   to the cluster endpoint.
 *
 * @typedef MasterAuth
 * @memberof google.container.v1
 * @see [google.container.v1.MasterAuth definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const MasterAuth = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for client certificates on the cluster.
 *
 * @property {boolean} issueClientCertificate
 *   Issue a client certificate.
 *
 * @typedef ClientCertificateConfig
 * @memberof google.container.v1
 * @see [google.container.v1.ClientCertificateConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ClientCertificateConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for the addons that can be automatically spun up in the
 * cluster, enabling additional functionality.
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [HttpLoadBalancing]{@link google.container.v1.HttpLoadBalancing}
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [HorizontalPodAutoscaling]{@link google.container.v1.HorizontalPodAutoscaling}
 *
 * @property {Object} kubernetesDashboard
 *   Configuration for the Kubernetes Dashboard.
 *
 *   This object should have the same structure as [KubernetesDashboard]{@link google.container.v1.KubernetesDashboard}
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [NetworkPolicyConfig]{@link google.container.v1.NetworkPolicyConfig}
 *
 * @typedef AddonsConfig
 * @memberof google.container.v1
 * @see [google.container.v1.AddonsConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const AddonsConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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.
 *
 * @property {boolean} disabled
 *   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.
 *
 * @typedef HttpLoadBalancing
 * @memberof google.container.v1
 * @see [google.container.v1.HttpLoadBalancing definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const HttpLoadBalancing = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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.
 *
 * @property {boolean} disabled
 *   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.
 *
 * @typedef HorizontalPodAutoscaling
 * @memberof google.container.v1
 * @see [google.container.v1.HorizontalPodAutoscaling definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const HorizontalPodAutoscaling = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for the Kubernetes Dashboard.
 *
 * @property {boolean} disabled
 *   Whether the Kubernetes Dashboard is enabled for this cluster.
 *
 * @typedef KubernetesDashboard
 * @memberof google.container.v1
 * @see [google.container.v1.KubernetesDashboard definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const KubernetesDashboard = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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.
 *
 * @property {boolean} disabled
 *   Whether NetworkPolicy is enabled for this cluster.
 *
 * @typedef NetworkPolicyConfig
 * @memberof google.container.v1
 * @see [google.container.v1.NetworkPolicyConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NetworkPolicyConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration options for private clusters.
 *
 * @property {boolean} enablePrivateNodes
 *   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.
 *
 * @property {boolean} enablePrivateEndpoint
 *   Whether the master's internal IP address is used as the cluster endpoint.
 *
 * @property {string} masterIpv4CidrBlock
 *   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.
 *
 * @property {string} privateEndpoint
 *   Output only. The internal IP address of this cluster's master endpoint.
 *
 * @property {string} publicEndpoint
 *   Output only. The external IP address of this cluster's master endpoint.
 *
 * @typedef PrivateClusterConfig
 * @memberof google.container.v1
 * @see [google.container.v1.PrivateClusterConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const PrivateClusterConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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.
 *
 * @property {boolean} enabled
 *   Whether or not master authorized networks is enabled.
 *
 * @property {Object[]} cidrBlocks
 *   cidr_blocks define up to 10 external networks that could access
 *   Kubernetes master through HTTPS.
 *
 *   This object should have the same structure as [CidrBlock]{@link google.container.v1.CidrBlock}
 *
 * @typedef MasterAuthorizedNetworksConfig
 * @memberof google.container.v1
 * @see [google.container.v1.MasterAuthorizedNetworksConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const MasterAuthorizedNetworksConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * CidrBlock contains an optional name and one CIDR block.
   *
   * @property {string} displayName
   *   display_name is an optional field for users to identify CIDR blocks.
   *
   * @property {string} cidrBlock
   *   cidr_block must be specified in CIDR notation.
   *
   * @typedef CidrBlock
   * @memberof google.container.v1
   * @see [google.container.v1.MasterAuthorizedNetworksConfig.CidrBlock definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
   */
  CidrBlock: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Configuration for the legacy Attribute Based Access Control authorization
 * mode.
 *
 * @property {boolean} enabled
 *   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.
 *
 * @typedef LegacyAbac
 * @memberof google.container.v1
 * @see [google.container.v1.LegacyAbac definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const LegacyAbac = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration options for the NetworkPolicy feature.
 * https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
 *
 * @property {number} provider
 *   The selected network policy provider.
 *
 *   The number should be among the values of [Provider]{@link google.container.v1.Provider}
 *
 * @property {boolean} enabled
 *   Whether network policy is enabled on the cluster.
 *
 * @typedef NetworkPolicy
 * @memberof google.container.v1
 * @see [google.container.v1.NetworkPolicy definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NetworkPolicy = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Allowed Network Policy providers.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  Provider: {

    /**
     * Not set
     */
    PROVIDER_UNSPECIFIED: 0,

    /**
     * Tigera (Calico Felix).
     */
    CALICO: 1
  }
};

/**
 * Configuration for controlling how IPs are allocated in the cluster.
 *
 * @property {boolean} useIpAliases
 *   Whether alias IPs will be used for pod IPs in the cluster.
 *
 * @property {boolean} createSubnetwork
 *   Whether a new subnetwork will be created automatically for the cluster.
 *
 *   This field is only applicable when `use_ip_aliases` is true.
 *
 * @property {string} subnetworkName
 *   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.
 *
 * @property {string} clusterIpv4Cidr
 *   This field is deprecated, use cluster_ipv4_cidr_block.
 *
 * @property {string} nodeIpv4Cidr
 *   This field is deprecated, use node_ipv4_cidr_block.
 *
 * @property {string} servicesIpv4Cidr
 *   This field is deprecated, use services_ipv4_cidr_block.
 *
 * @property {string} clusterSecondaryRangeName
 *   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.
 *
 * @property {string} servicesSecondaryRangeName
 *   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.
 *
 * @property {string} clusterIpv4CidrBlock
 *   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.
 *
 * @property {string} nodeIpv4CidrBlock
 *   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.
 *
 * @property {string} servicesIpv4CidrBlock
 *   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.
 *
 * @typedef IPAllocationPolicy
 * @memberof google.container.v1
 * @see [google.container.v1.IPAllocationPolicy definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const IPAllocationPolicy = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A Google Kubernetes Engine cluster.
 *
 * @property {string} name
 *   The name of this cluster. The name must be unique within this project
 *   and zone, 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.
 *
 * @property {string} description
 *   An optional description of this cluster.
 *
 * @property {number} initialNodeCount
 *   The number of nodes to create in this cluster. You must ensure that your
 *   Compute Engine [resource quota](https://cloud.google.com/compute/docs/resource-quotas)
 *   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.
 *
 * @property {Object} nodeConfig
 *   Parameters used in creating the cluster's nodes.
 *   See `nodeConfig` for the description of its properties.
 *   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.
 *
 *   If unspecified, the defaults are used.
 *
 *   This object should have the same structure as [NodeConfig]{@link google.container.v1.NodeConfig}
 *
 * @property {Object} masterAuth
 *   The authentication information for accessing the master endpoint.
 *
 *   This object should have the same structure as [MasterAuth]{@link google.container.v1.MasterAuth}
 *
 * @property {string} loggingService
 *   The logging service the cluster should use to write logs.
 *   Currently available options:
 *
 *   * `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.
 *
 * @property {string} monitoringService
 *   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.
 *
 * @property {string} network
 *   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.
 *
 * @property {string} clusterIpv4Cidr
 *   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`.
 *
 * @property {Object} addonsConfig
 *   Configurations for the various addons available to run in the cluster.
 *
 *   This object should have the same structure as [AddonsConfig]{@link google.container.v1.AddonsConfig}
 *
 * @property {string} subnetwork
 *   The name of the Google Compute Engine
 *   [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the
 *   cluster is connected.
 *
 * @property {Object[]} nodePools
 *   The node pools associated with this cluster.
 *   This field should not be set if "node_config" or "initial_node_count" are
 *   specified.
 *
 *   This object should have the same structure as [NodePool]{@link google.container.v1.NodePool}
 *
 * @property {string[]} locations
 *   The list of Google Compute Engine
 *   [locations](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes
 *   should be located.
 *
 * @property {boolean} enableKubernetesAlpha
 *   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.
 *
 * @property {Object.<string, string>} resourceLabels
 *   The resource labels for the cluster to use to annotate any related
 *   Google Compute Engine resources.
 *
 * @property {string} labelFingerprint
 *   The fingerprint of the set of labels for this cluster.
 *
 * @property {Object} legacyAbac
 *   Configuration for the legacy ABAC authorization mode.
 *
 *   This object should have the same structure as [LegacyAbac]{@link google.container.v1.LegacyAbac}
 *
 * @property {Object} networkPolicy
 *   Configuration options for the NetworkPolicy feature.
 *
 *   This object should have the same structure as [NetworkPolicy]{@link google.container.v1.NetworkPolicy}
 *
 * @property {Object} ipAllocationPolicy
 *   Configuration for cluster IP allocation.
 *
 *   This object should have the same structure as [IPAllocationPolicy]{@link google.container.v1.IPAllocationPolicy}
 *
 * @property {Object} masterAuthorizedNetworksConfig
 *   The configuration options for master authorized networks feature.
 *
 *   This object should have the same structure as [MasterAuthorizedNetworksConfig]{@link google.container.v1.MasterAuthorizedNetworksConfig}
 *
 * @property {Object} maintenancePolicy
 *   Configure the maintenance policy for this cluster.
 *
 *   This object should have the same structure as [MaintenancePolicy]{@link google.container.v1.MaintenancePolicy}
 *
 * @property {Object} networkConfig
 *   Configuration for cluster networking.
 *
 *   This object should have the same structure as [NetworkConfig]{@link google.container.v1.NetworkConfig}
 *
 * @property {Object} privateClusterConfig
 *   Configuration for private cluster.
 *
 *   This object should have the same structure as [PrivateClusterConfig]{@link google.container.v1.PrivateClusterConfig}
 *
 * @property {string} selfLink
 *   [Output only] Server-defined URL for the resource.
 *
 * @property {string} zone
 *   [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.
 *
 * @property {string} endpoint
 *   [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.
 *
 * @property {string} initialClusterVersion
 *   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
 *
 * @property {string} currentMasterVersion
 *   [Output only] The current software version of the master endpoint.
 *
 * @property {string} currentNodeVersion
 *   [Output only] Deprecated, use
 *   [NodePool.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.zones.clusters.nodePools#resource-nodepool)
 *   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.
 *
 * @property {string} createTime
 *   [Output only] The time the cluster was created, in
 *   [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
 *
 * @property {number} status
 *   [Output only] The current status of this cluster.
 *
 *   The number should be among the values of [Status]{@link google.container.v1.Status}
 *
 * @property {string} statusMessage
 *   [Output only] Additional information about the current status of this
 *   cluster, if available.
 *
 * @property {number} nodeIpv4CidrSize
 *   [Output only] The size of the address space on each node for hosting
 *   containers. This is provisioned from within the `container_ipv4_cidr`
 *   range.
 *
 * @property {string} servicesIpv4Cidr
 *   [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.
 *
 * @property {string[]} instanceGroupUrls
 *   Deprecated. Use node_pools.instance_group_urls.
 *
 * @property {number} currentNodeCount
 *   [Output only] The number of nodes currently in the cluster.
 *
 * @property {string} expireTime
 *   [Output only] The time the cluster will be automatically
 *   deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
 *
 * @property {string} location
 *   [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.
 *
 * @typedef Cluster
 * @memberof google.container.v1
 * @see [google.container.v1.Cluster definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const Cluster = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * The current status of the cluster.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  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
  }
};

/**
 * 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.
 *
 * @property {string} desiredNodeVersion
 *   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
 *
 * @property {string} desiredMonitoringService
 *   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
 *
 * @property {Object} desiredAddonsConfig
 *   Configurations for the various addons available to run in the cluster.
 *
 *   This object should have the same structure as [AddonsConfig]{@link google.container.v1.AddonsConfig}
 *
 * @property {string} desiredNodePoolId
 *   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.
 *
 * @property {string} desiredImageType
 *   The desired image type for the node pool.
 *   NOTE: Set the "desired_node_pool" field as well.
 *
 * @property {Object} desiredNodePoolAutoscaling
 *   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.
 *
 *   This object should have the same structure as [NodePoolAutoscaling]{@link google.container.v1.NodePoolAutoscaling}
 *
 * @property {string[]} desiredLocations
 *   The desired list of Google Compute Engine
 *   [locations](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.
 *
 * @property {Object} desiredMasterAuthorizedNetworksConfig
 *   The desired configuration options for master authorized networks feature.
 *
 *   This object should have the same structure as [MasterAuthorizedNetworksConfig]{@link google.container.v1.MasterAuthorizedNetworksConfig}
 *
 * @property {string} desiredMasterVersion
 *   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
 *
 * @typedef ClusterUpdate
 * @memberof google.container.v1
 * @see [google.container.v1.ClusterUpdate definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ClusterUpdate = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * This operation resource represents operations that may have happened or are
 * happening on the cluster. All fields are output only.
 *
 * @property {string} name
 *   The server-assigned ID for the operation.
 *
 * @property {string} zone
 *   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.
 *
 * @property {number} operationType
 *   The operation type.
 *
 *   The number should be among the values of [Type]{@link google.container.v1.Type}
 *
 * @property {number} status
 *   The current status of the operation.
 *
 *   The number should be among the values of [Status]{@link google.container.v1.Status}
 *
 * @property {string} detail
 *   Detailed operation progress, if available.
 *
 * @property {string} statusMessage
 *   If an error has occurred, a textual description of the error.
 *
 * @property {string} selfLink
 *   Server-defined URL for the resource.
 *
 * @property {string} targetLink
 *   Server-defined URL for the target of the operation.
 *
 * @property {string} location
 *   [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.
 *
 * @property {string} startTime
 *   [Output only] The time the operation started, in
 *   [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
 *
 * @property {string} endTime
 *   [Output only] The time the operation completed, in
 *   [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
 *
 * @typedef Operation
 * @memberof google.container.v1
 * @see [google.container.v1.Operation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const Operation = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Current status of the operation.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  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
  },

  /**
   * Operation type.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  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
  }
};

/**
 * CreateClusterRequest creates a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {Object} cluster
 *   A [cluster
 *   resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.zones.clusters)
 *
 *   This object should have the same structure as [Cluster]{@link google.container.v1.Cluster}
 *
 * @property {string} parent
 *   The parent (project and location) where the cluster will be created.
 *   Specified in the format 'projects/* /locations/*'.
 *
 * @typedef CreateClusterRequest
 * @memberof google.container.v1
 * @see [google.container.v1.CreateClusterRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const CreateClusterRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * GetClusterRequest gets the settings of a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to retrieve.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to retrieve.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef GetClusterRequest
 * @memberof google.container.v1
 * @see [google.container.v1.GetClusterRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const GetClusterRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * UpdateClusterRequest updates the settings of a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object} update
 *   A description of the update.
 *
 *   This object should have the same structure as [ClusterUpdate]{@link google.container.v1.ClusterUpdate}
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to update.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef UpdateClusterRequest
 * @memberof google.container.v1
 * @see [google.container.v1.UpdateClusterRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const UpdateClusterRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * UpdateNodePoolRequests update a node pool's image and/or version.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodeVersion
 *   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
 *
 * @property {string} imageType
 *   The desired image type for the node pool.
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool) of the node pool to
 *   update. Specified in the format
 *   'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef UpdateNodePoolRequest
 * @memberof google.container.v1
 * @see [google.container.v1.UpdateNodePoolRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const UpdateNodePoolRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object} autoscaling
 *   Autoscaling configuration for the node pool.
 *
 *   This object should have the same structure as [NodePoolAutoscaling]{@link google.container.v1.NodePoolAutoscaling}
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool) of the node pool to set
 *   autoscaler settings. Specified in the format
 *   'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef SetNodePoolAutoscalingRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetNodePoolAutoscalingRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetNodePoolAutoscalingRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetLoggingServiceRequest sets the logging service of a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} loggingService
 *   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
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to set logging.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetLoggingServiceRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetLoggingServiceRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetLoggingServiceRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetMonitoringServiceRequest sets the monitoring service of a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} monitoringService
 *   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
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to set monitoring.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetMonitoringServiceRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetMonitoringServiceRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetMonitoringServiceRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetAddonsConfigRequest sets the addons associated with the cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object} addonsConfig
 *   The desired configurations for the various addons available to run in the
 *   cluster.
 *
 *   This object should have the same structure as [AddonsConfig]{@link google.container.v1.AddonsConfig}
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to set addons.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetAddonsConfigRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetAddonsConfigRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetAddonsConfigRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetLocationsRequest sets the locations of the cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string[]} locations
 *   The desired list of Google Compute Engine
 *   [locations](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.
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to set locations.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetLocationsRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetLocationsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetLocationsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * UpdateMasterRequest updates the master of the cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} masterVersion
 *   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
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to update.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef UpdateMasterRequest
 * @memberof google.container.v1
 * @see [google.container.v1.UpdateMasterRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const UpdateMasterRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetMasterAuthRequest updates the admin password of a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to upgrade.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {number} action
 *   The exact form of action to be taken on the master auth.
 *
 *   The number should be among the values of [Action]{@link google.container.v1.Action}
 *
 * @property {Object} update
 *   A description of the update.
 *
 *   This object should have the same structure as [MasterAuth]{@link google.container.v1.MasterAuth}
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to set auth.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetMasterAuthRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetMasterAuthRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetMasterAuthRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Operation type: what type update to perform.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  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
  }
};

/**
 * DeleteClusterRequest deletes a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to delete.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster) of the cluster to delete.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef DeleteClusterRequest
 * @memberof google.container.v1
 * @see [google.container.v1.DeleteClusterRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const DeleteClusterRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListClustersRequest lists clusters.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} parent
 *   The parent (project and location) where the clusters will be listed.
 *   Specified in the format 'projects/* /locations/*'.
 *   Location "-" matches all zones and all regions.
 *
 * @typedef ListClustersRequest
 * @memberof google.container.v1
 * @see [google.container.v1.ListClustersRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListClustersRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListClustersResponse is the result of ListClustersRequest.
 *
 * @property {Object[]} clusters
 *   A list of clusters in the project in the specified zone, or
 *   across all ones.
 *
 *   This object should have the same structure as [Cluster]{@link google.container.v1.Cluster}
 *
 * @property {string[]} missingZones
 *   If any zones are listed here, the list of clusters returned
 *   may be missing those zones.
 *
 * @typedef ListClustersResponse
 * @memberof google.container.v1
 * @see [google.container.v1.ListClustersResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListClustersResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * GetOperationRequest gets a single operation.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} operationId
 *   Deprecated. The server-assigned `name` of the operation.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, operation id) of the operation to get.
 *   Specified in the format 'projects/* /locations/* /operations/*'.
 *
 * @typedef GetOperationRequest
 * @memberof google.container.v1
 * @see [google.container.v1.GetOperationRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const GetOperationRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListOperationsRequest lists operations.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} parent
 *   The parent (project and location) where the operations will be listed.
 *   Specified in the format 'projects/* /locations/*'.
 *   Location "-" matches all zones and all regions.
 *
 * @typedef ListOperationsRequest
 * @memberof google.container.v1
 * @see [google.container.v1.ListOperationsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListOperationsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * CancelOperationRequest cancels a single operation.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} operationId
 *   Deprecated. The server-assigned `name` of the operation.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, operation id) of the operation to cancel.
 *   Specified in the format 'projects/* /locations/* /operations/*'.
 *
 * @typedef CancelOperationRequest
 * @memberof google.container.v1
 * @see [google.container.v1.CancelOperationRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const CancelOperationRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListOperationsResponse is the result of ListOperationsRequest.
 *
 * @property {Object[]} operations
 *   A list of operations in the project in the specified zone.
 *
 *   This object should have the same structure as [Operation]{@link google.container.v1.Operation}
 *
 * @property {string[]} missingZones
 *   If any zones are listed here, the list of operations returned
 *   may be missing the operations from those zones.
 *
 * @typedef ListOperationsResponse
 * @memberof google.container.v1
 * @see [google.container.v1.ListOperationsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListOperationsResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Gets the current Kubernetes Engine service configuration.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} name
 *   The name (project and location) of the server config to get
 *   Specified in the format 'projects/* /locations/*'.
 *
 * @typedef GetServerConfigRequest
 * @memberof google.container.v1
 * @see [google.container.v1.GetServerConfigRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const GetServerConfigRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Kubernetes Engine service configuration.
 *
 * @property {string} defaultClusterVersion
 *   Version of Kubernetes the service deploys by default.
 *
 * @property {string[]} validNodeVersions
 *   List of valid node upgrade target versions.
 *
 * @property {string} defaultImageType
 *   Default image type.
 *
 * @property {string[]} validImageTypes
 *   List of valid image types.
 *
 * @property {string[]} validMasterVersions
 *   List of valid master versions.
 *
 * @typedef ServerConfig
 * @memberof google.container.v1
 * @see [google.container.v1.ServerConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ServerConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * CreateNodePoolRequest creates a node pool for a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the parent field.
 *
 * @property {Object} nodePool
 *   The node pool to create.
 *
 *   This object should have the same structure as [NodePool]{@link google.container.v1.NodePool}
 *
 * @property {string} parent
 *   The parent (project, location, cluster id) where the node pool will be
 *   created. Specified in the format
 *   'projects/* /locations/* /clusters/*'.
 *
 * @typedef CreateNodePoolRequest
 * @memberof google.container.v1
 * @see [google.container.v1.CreateNodePoolRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const CreateNodePoolRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * DeleteNodePoolRequest deletes a node pool for a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to delete.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool id) of the node pool to
 *   delete. Specified in the format
 *   'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef DeleteNodePoolRequest
 * @memberof google.container.v1
 * @see [google.container.v1.DeleteNodePoolRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const DeleteNodePoolRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListNodePoolsRequest lists the node pool(s) for a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the parent field.
 *
 * @property {string} parent
 *   The parent (project, location, cluster id) where the node pools will be
 *   listed. Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef ListNodePoolsRequest
 * @memberof google.container.v1
 * @see [google.container.v1.ListNodePoolsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListNodePoolsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * GetNodePoolRequest retrieves a node pool for a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool id) of the node pool to
 *   get. Specified in the format
 *   'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef GetNodePoolRequest
 * @memberof google.container.v1
 * @see [google.container.v1.GetNodePoolRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const GetNodePoolRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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.
 *
 * @property {string} name
 *   The name of the node pool.
 *
 * @property {Object} config
 *   The node configuration of the pool.
 *
 *   This object should have the same structure as [NodeConfig]{@link google.container.v1.NodeConfig}
 *
 * @property {number} initialNodeCount
 *   The initial node count for the pool. You must ensure that your
 *   Compute Engine [resource quota](https://cloud.google.com/compute/docs/resource-quotas)
 *   is sufficient for this number of instances. You must also have available
 *   firewall and routes quota.
 *
 * @property {string} selfLink
 *   [Output only] Server-defined URL for the resource.
 *
 * @property {string} version
 *   The version of the Kubernetes of this node.
 *
 * @property {string[]} instanceGroupUrls
 *   [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.
 *
 * @property {number} status
 *   [Output only] The status of the nodes in this pool instance.
 *
 *   The number should be among the values of [Status]{@link google.container.v1.Status}
 *
 * @property {string} statusMessage
 *   [Output only] Additional information about the current status of this
 *   node pool instance, if available.
 *
 * @property {Object} autoscaling
 *   Autoscaler configuration for this NodePool. Autoscaler is enabled
 *   only if a valid configuration is present.
 *
 *   This object should have the same structure as [NodePoolAutoscaling]{@link google.container.v1.NodePoolAutoscaling}
 *
 * @property {Object} management
 *   NodeManagement configuration for this NodePool.
 *
 *   This object should have the same structure as [NodeManagement]{@link google.container.v1.NodeManagement}
 *
 * @typedef NodePool
 * @memberof google.container.v1
 * @see [google.container.v1.NodePool definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NodePool = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * The current status of the node pool instance.
   *
   * @enum {number}
   * @memberof google.container.v1
   */
  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
  }
};

/**
 * NodeManagement defines the set of node management services turned on for the
 * node pool.
 *
 * @property {boolean} autoUpgrade
 *   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.
 *
 * @property {boolean} autoRepair
 *   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.
 *
 * @property {Object} upgradeOptions
 *   Specifies the Auto Upgrade knobs for the node pool.
 *
 *   This object should have the same structure as [AutoUpgradeOptions]{@link google.container.v1.AutoUpgradeOptions}
 *
 * @typedef NodeManagement
 * @memberof google.container.v1
 * @see [google.container.v1.NodeManagement definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NodeManagement = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * AutoUpgradeOptions defines the set of options for the user to control how
 * the Auto Upgrades will proceed.
 *
 * @property {string} autoUpgradeStartTime
 *   [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.
 *
 * @property {string} description
 *   [Output only] This field is set when upgrades are about to commence
 *   with the description of the upgrade.
 *
 * @typedef AutoUpgradeOptions
 * @memberof google.container.v1
 * @see [google.container.v1.AutoUpgradeOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const AutoUpgradeOptions = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * MaintenancePolicy defines the maintenance policy to be used for the cluster.
 *
 * @property {Object} window
 *   Specifies the maintenance window in which maintenance may be performed.
 *
 *   This object should have the same structure as [MaintenanceWindow]{@link google.container.v1.MaintenanceWindow}
 *
 * @typedef MaintenancePolicy
 * @memberof google.container.v1
 * @see [google.container.v1.MaintenancePolicy definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const MaintenancePolicy = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * MaintenanceWindow defines the maintenance window to be used for the cluster.
 *
 * @property {Object} dailyMaintenanceWindow
 *   DailyMaintenanceWindow specifies a daily maintenance operation window.
 *
 *   This object should have the same structure as [DailyMaintenanceWindow]{@link google.container.v1.DailyMaintenanceWindow}
 *
 * @typedef MaintenanceWindow
 * @memberof google.container.v1
 * @see [google.container.v1.MaintenanceWindow definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const MaintenanceWindow = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Time window specified for daily maintenance operations.
 *
 * @property {string} startTime
 *   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.
 *
 * @property {string} duration
 *   [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".
 *
 * @typedef DailyMaintenanceWindow
 * @memberof google.container.v1
 * @see [google.container.v1.DailyMaintenanceWindow definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const DailyMaintenanceWindow = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetNodePoolManagementRequest sets the node management properties of a node
 * pool.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to update.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to update.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object} management
 *   NodeManagement configuration for the node pool.
 *
 *   This object should have the same structure as [NodeManagement]{@link google.container.v1.NodeManagement}
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool id) of the node pool to set
 *   management properties. Specified in the format
 *   'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef SetNodePoolManagementRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetNodePoolManagementRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetNodePoolManagementRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetNodePoolSizeRequest sets the size a node
 * pool.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to update.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to update.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {number} nodeCount
 *   The desired node count for the pool.
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool id) of the node pool to set
 *   size.
 *   Specified in the format 'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef SetNodePoolSizeRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetNodePoolSizeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetNodePoolSizeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
 * NodePool upgrade. This will be an no-op if the last upgrade successfully
 * completed.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to rollback.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} nodePoolId
 *   Deprecated. The name of the node pool to rollback.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster, node pool id) of the node poll to
 *   rollback upgrade.
 *   Specified in the format 'projects/* /locations/* /clusters/* /nodePools/*'.
 *
 * @typedef RollbackNodePoolUpgradeRequest
 * @memberof google.container.v1
 * @see [google.container.v1.RollbackNodePoolUpgradeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const RollbackNodePoolUpgradeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * ListNodePoolsResponse is the result of ListNodePoolsRequest.
 *
 * @property {Object[]} nodePools
 *   A list of node pools for a cluster.
 *
 *   This object should have the same structure as [NodePool]{@link google.container.v1.NodePool}
 *
 * @typedef ListNodePoolsResponse
 * @memberof google.container.v1
 * @see [google.container.v1.ListNodePoolsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const ListNodePoolsResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * NodePoolAutoscaling contains information required by cluster autoscaler to
 * adjust the size of the node pool to the current cluster usage.
 *
 * @property {boolean} enabled
 *   Is autoscaling enabled for this node pool.
 *
 * @property {number} minNodeCount
 *   Minimum number of nodes in the NodePool. Must be >= 1 and <=
 *   max_node_count.
 *
 * @property {number} maxNodeCount
 *   Maximum number of nodes in the NodePool. Must be >= min_node_count. There
 *   has to enough quota to scale up the cluster.
 *
 * @typedef NodePoolAutoscaling
 * @memberof google.container.v1
 * @see [google.container.v1.NodePoolAutoscaling definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NodePoolAutoscaling = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * 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
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object.<string, string>} resourceLabels
 *   The labels to set for that cluster.
 *
 * @property {string} labelFingerprint
 *   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.
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to set labels.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetLabelsRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetLabelsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetLabelsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
 * a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster to update.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {boolean} enabled
 *   Whether ABAC authorization will be enabled in the cluster.
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to set legacy abac.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetLegacyAbacRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetLegacyAbacRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetLegacyAbacRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * StartIPRotationRequest creates a new IP for the cluster and then performs
 * a node upgrade on each node pool to point to the new IP.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to start IP
 *   rotation. Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @property {boolean} rotateCredentials
 *   Whether to rotate credentials during IP rotation.
 *
 * @typedef StartIPRotationRequest
 * @memberof google.container.v1
 * @see [google.container.v1.StartIPRotationRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const StartIPRotationRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * CompleteIPRotationRequest moves the cluster master back into single-IP mode.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to complete IP
 *   rotation. Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef CompleteIPRotationRequest
 * @memberof google.container.v1
 * @see [google.container.v1.CompleteIPRotationRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const CompleteIPRotationRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * AcceleratorConfig represents a Hardware Accelerator request.
 *
 * @property {number} acceleratorCount
 *   The number of the accelerator cards exposed to an instance.
 *
 * @property {string} acceleratorType
 *   The accelerator type resource name. List of supported accelerators
 *   [here](https://cloud.google.com/compute/docs/gpus/#Introduction)
 *
 * @typedef AcceleratorConfig
 * @memberof google.container.v1
 * @see [google.container.v1.AcceleratorConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const AcceleratorConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetNetworkPolicyRequest enables/disables network policy for a cluster.
 *
 * @property {string} projectId
 *   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.
 *
 * @property {string} zone
 *   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.
 *
 * @property {string} clusterId
 *   Deprecated. The name of the cluster.
 *   This field has been deprecated and replaced by the name field.
 *
 * @property {Object} networkPolicy
 *   Configuration options for the NetworkPolicy feature.
 *
 *   This object should have the same structure as [NetworkPolicy]{@link google.container.v1.NetworkPolicy}
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to set networking
 *   policy. Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetNetworkPolicyRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetNetworkPolicyRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetNetworkPolicyRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
 *
 * @property {string} projectId
 *   The Google Developers Console [project ID or project
 *   number](https://support.google.com/cloud/answer/6158840).
 *
 * @property {string} zone
 *   The name of the Google Compute Engine
 *   [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster
 *   resides.
 *
 * @property {string} clusterId
 *   The name of the cluster to update.
 *
 * @property {Object} maintenancePolicy
 *   The maintenance policy to be set for the cluster. An empty field
 *   clears the existing maintenance policy.
 *
 *   This object should have the same structure as [MaintenancePolicy]{@link google.container.v1.MaintenancePolicy}
 *
 * @property {string} name
 *   The name (project, location, cluster id) of the cluster to set maintenance
 *   policy.
 *   Specified in the format 'projects/* /locations/* /clusters/*'.
 *
 * @typedef SetMaintenancePolicyRequest
 * @memberof google.container.v1
 * @see [google.container.v1.SetMaintenancePolicyRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const SetMaintenancePolicyRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * NetworkConfig reports the relative names of network & subnetwork.
 *
 * @property {string} network
 *   Output only. The relative name of the Google Compute Engine
 *   network(/compute/docs/networks-and-firewalls#networks) to which
 *   the cluster is connected.
 *   Example: projects/my-project/global/networks/my-network
 *
 * @property {string} subnetwork
 *   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
 *
 * @typedef NetworkConfig
 * @memberof google.container.v1
 * @see [google.container.v1.NetworkConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/container/v1/cluster_service.proto}
 */
const NetworkConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};