<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="container_v1.html">Google Container Engine API</a> . <a href="container_v1.projects.html">projects</a> . <a href="container_v1.projects.zones.html">zones</a> . <a href="container_v1.projects.zones.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="container_v1.projects.zones.clusters.nodePools.html">nodePools()</a></code>
</p>
<p class="firstline">Returns the nodePools Resource.</p>

<p class="toc_element">
  <code><a href="#create">create(projectId, zone, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the cluster creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range is being used by the cluster.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, zone, clusterId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster (e.g. load balancer resources) will not be deleted if they weren't present at the initial create time.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, zone, clusterId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of a specific cluster.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, zone, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all clusters owned by a project in either the specified zone or all zones.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the settings of a specific cluster.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(projectId, zone, body, x__xgafv=None)</code>
  <pre>Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the cluster creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range is being used by the cluster.

Args:
  projectId: string, The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # CreateClusterRequest creates a cluster.
    "cluster": { # A Google Container Engine cluster. # A [cluster resource](/container-engine/reference/rest/v1/projects.zones.clusters)
      "nodeIpv4CidrSize": 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range.
      "addonsConfig": { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
        "httpLoadBalancing": { # 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. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
          "disabled": True or False, # 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.
        },
        "horizontalPodAutoscaling": { # 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. # 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.
          "disabled": True or False, # 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.
        },
      },
      "locations": [ # The list of Google Compute Engine [locations](/compute/docs/zones#available) in which the cluster's nodes should be located.
        "A String",
      ],
      "network": "A String", # The name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
      "loggingService": "A String", # 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.
      "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this cluster.
        "A String",
      ],
      "zone": "A String", # [Output only] The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides.
      "statusMessage": "A String", # [Output only] Additional information about the current status of this cluster, if available.
      "servicesIpv4Cidr": "A String", # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
      "status": "A String", # [Output only] The current status of this cluster.
      "description": "A String", # An optional description of this cluster.
      "currentNodeVersion": "A String", # [Output only] 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.
      "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
      "masterAuth": { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint.
        "username": "A String", # The username to use for HTTP basic authentication to the master endpoint.
        "password": "A String", # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password.
        "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
        "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
        "clusterCaCertificate": "A String", # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
      },
      "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine resource quota 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.
      "nodePools": [ # The node pools associated with this cluster. When creating a new cluster, only a single node pool should be specified. This field should not be set if "node_config" or "initial_node_count" are specified.
        { # 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.
          "status": "A String", # The status of the nodes in this pool instance.
          "statusMessage": "A String", # [Output only] Additional information about the current status of this node pool instance, if available.
          "name": "A String", # The name of the node pool.
          "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this node pool.
            "A String",
          ],
          "version": "A String", # The version of the Kubernetes of this node.
          "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your Compute Engine resource quota is sufficient for this number of instances. You must also have available firewall and routes quota.
          "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
            "diskSizeGb": 42, # 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.
            "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
            "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](/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.
              "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
              "a_key": "A String",
            },
          },
          "selfLink": "A String", # Server-defined URL for the resource.
        },
      ],
      "monitoringService": "A String", # The monitoring service the cluster should use to write metrics. Currently available options: * `monitoring.googleapis.com` - the Google Cloud Monitoring service. * `none` - no metrics will be exported from the cluster. * if left as an empty string, `monitoring.googleapis.com` will be used.
      "createTime": "A String", # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      "endpoint": "A String", # [Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
      "currentNodeCount": 42, # [Output only] The number of nodes currently in the cluster.
      "name": "A String", # 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.
      "initialClusterVersion": "A String", # [Output only] The software version of the master endpoint and kubelets used in the cluster when it was first created. The version can be upgraded over time.
      "nodeConfig": { # Parameters that describe the nodes in a cluster. # 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.
        "diskSizeGb": 42, # 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.
        "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
        "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](/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.
          "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
          "a_key": "A String",
        },
      },
      "clusterIpv4Cidr": "A String", # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
      "subnetwork": "A String", # The name of the Google Compute Engine [subnetwork](/compute/docs/subnetworks) to which the cluster is connected.
      "selfLink": "A String", # [Output only] Server-defined URL for the resource.
    },
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
    "status": "A String", # The current status of the operation.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the operation is taking place.
    "detail": "A String", # Detailed operation progress, if available.
    "selfLink": "A String", # Server-defined URL for the resource.
    "operationType": "A String", # The operation type.
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, zone, clusterId, x__xgafv=None)</code>
  <pre>Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster (e.g. load balancer resources) will not be deleted if they weren't present at the initial create time.

Args:
  projectId: string, The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides. (required)
  clusterId: string, The name of the cluster to delete. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
    "status": "A String", # The current status of the operation.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the operation is taking place.
    "detail": "A String", # Detailed operation progress, if available.
    "selfLink": "A String", # Server-defined URL for the resource.
    "operationType": "A String", # The operation type.
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, zone, clusterId, x__xgafv=None)</code>
  <pre>Gets the details of a specific cluster.

Args:
  projectId: string, The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides. (required)
  clusterId: string, The name of the cluster to retrieve. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # A Google Container Engine cluster.
    "nodeIpv4CidrSize": 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range.
    "addonsConfig": { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
      "httpLoadBalancing": { # 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. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
        "disabled": True or False, # 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.
      },
      "horizontalPodAutoscaling": { # 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. # 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.
        "disabled": True or False, # 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.
      },
    },
    "locations": [ # The list of Google Compute Engine [locations](/compute/docs/zones#available) in which the cluster's nodes should be located.
      "A String",
    ],
    "network": "A String", # The name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
    "loggingService": "A String", # 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.
    "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this cluster.
      "A String",
    ],
    "zone": "A String", # [Output only] The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides.
    "statusMessage": "A String", # [Output only] Additional information about the current status of this cluster, if available.
    "servicesIpv4Cidr": "A String", # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
    "status": "A String", # [Output only] The current status of this cluster.
    "description": "A String", # An optional description of this cluster.
    "currentNodeVersion": "A String", # [Output only] 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.
    "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
    "masterAuth": { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint.
      "username": "A String", # The username to use for HTTP basic authentication to the master endpoint.
      "password": "A String", # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password.
      "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
      "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
      "clusterCaCertificate": "A String", # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
    },
    "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine resource quota 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.
    "nodePools": [ # The node pools associated with this cluster. When creating a new cluster, only a single node pool should be specified. This field should not be set if "node_config" or "initial_node_count" are specified.
      { # 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.
        "status": "A String", # The status of the nodes in this pool instance.
        "statusMessage": "A String", # [Output only] Additional information about the current status of this node pool instance, if available.
        "name": "A String", # The name of the node pool.
        "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this node pool.
          "A String",
        ],
        "version": "A String", # The version of the Kubernetes of this node.
        "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your Compute Engine resource quota is sufficient for this number of instances. You must also have available firewall and routes quota.
        "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
          "diskSizeGb": 42, # 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.
          "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
          "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](/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.
            "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
            "a_key": "A String",
          },
        },
        "selfLink": "A String", # Server-defined URL for the resource.
      },
    ],
    "monitoringService": "A String", # The monitoring service the cluster should use to write metrics. Currently available options: * `monitoring.googleapis.com` - the Google Cloud Monitoring service. * `none` - no metrics will be exported from the cluster. * if left as an empty string, `monitoring.googleapis.com` will be used.
    "createTime": "A String", # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "endpoint": "A String", # [Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
    "currentNodeCount": 42, # [Output only] The number of nodes currently in the cluster.
    "name": "A String", # 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.
    "initialClusterVersion": "A String", # [Output only] The software version of the master endpoint and kubelets used in the cluster when it was first created. The version can be upgraded over time.
    "nodeConfig": { # Parameters that describe the nodes in a cluster. # 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.
      "diskSizeGb": 42, # 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.
      "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
      "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](/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.
        "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
        "a_key": "A String",
      },
    },
    "clusterIpv4Cidr": "A String", # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
    "subnetwork": "A String", # The name of the Google Compute Engine [subnetwork](/compute/docs/subnetworks) to which the cluster is connected.
    "selfLink": "A String", # [Output only] Server-defined URL for the resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, zone, x__xgafv=None)</code>
  <pre>Lists all clusters owned by a project in either the specified zone or all zones.

Args:
  projectId: string, The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides, or "-" for all zones. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # ListClustersResponse is the result of ListClustersRequest.
    "clusters": [ # A list of clusters in the project in the specified zone, or across all ones.
      { # A Google Container Engine cluster.
        "nodeIpv4CidrSize": 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range.
        "addonsConfig": { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
          "httpLoadBalancing": { # 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. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
            "disabled": True or False, # 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.
          },
          "horizontalPodAutoscaling": { # 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. # 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.
            "disabled": True or False, # 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.
          },
        },
        "locations": [ # The list of Google Compute Engine [locations](/compute/docs/zones#available) in which the cluster's nodes should be located.
          "A String",
        ],
        "network": "A String", # The name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
        "loggingService": "A String", # 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.
        "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this cluster.
          "A String",
        ],
        "zone": "A String", # [Output only] The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides.
        "statusMessage": "A String", # [Output only] Additional information about the current status of this cluster, if available.
        "servicesIpv4Cidr": "A String", # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
        "status": "A String", # [Output only] The current status of this cluster.
        "description": "A String", # An optional description of this cluster.
        "currentNodeVersion": "A String", # [Output only] 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.
        "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
        "masterAuth": { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint.
          "username": "A String", # The username to use for HTTP basic authentication to the master endpoint.
          "password": "A String", # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password.
          "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
          "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
          "clusterCaCertificate": "A String", # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
        },
        "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine resource quota 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.
        "nodePools": [ # The node pools associated with this cluster. When creating a new cluster, only a single node pool should be specified. This field should not be set if "node_config" or "initial_node_count" are specified.
          { # 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.
            "status": "A String", # The status of the nodes in this pool instance.
            "statusMessage": "A String", # [Output only] Additional information about the current status of this node pool instance, if available.
            "name": "A String", # The name of the node pool.
            "instanceGroupUrls": [ # [Output only] The resource URLs of [instance groups](/compute/docs/instance-groups/) associated with this node pool.
              "A String",
            ],
            "version": "A String", # The version of the Kubernetes of this node.
            "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your Compute Engine resource quota is sufficient for this number of instances. You must also have available firewall and routes quota.
            "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
              "diskSizeGb": 42, # 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.
              "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
              "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](/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.
                "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
                "a_key": "A String",
              },
            },
            "selfLink": "A String", # Server-defined URL for the resource.
          },
        ],
        "monitoringService": "A String", # The monitoring service the cluster should use to write metrics. Currently available options: * `monitoring.googleapis.com` - the Google Cloud Monitoring service. * `none` - no metrics will be exported from the cluster. * if left as an empty string, `monitoring.googleapis.com` will be used.
        "createTime": "A String", # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        "endpoint": "A String", # [Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
        "currentNodeCount": 42, # [Output only] The number of nodes currently in the cluster.
        "name": "A String", # 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.
        "initialClusterVersion": "A String", # [Output only] The software version of the master endpoint and kubelets used in the cluster when it was first created. The version can be upgraded over time.
        "nodeConfig": { # Parameters that describe the nodes in a cluster. # 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.
          "diskSizeGb": 42, # 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.
          "machineType": "A String", # The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g. `n1-standard-1`). If unspecified, the default machine type is `n1-standard-1`.
          "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](/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.
            "A 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 four reserved keys: "instance-template", "kube-env", "startup-script", and "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.
            "a_key": "A String",
          },
        },
        "clusterIpv4Cidr": "A String", # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
        "subnetwork": "A String", # The name of the Google Compute Engine [subnetwork](/compute/docs/subnetworks) to which the cluster is connected.
        "selfLink": "A String", # [Output only] Server-defined URL for the resource.
      },
    ],
    "missingZones": [ # If any zones are listed here, the list of clusters returned may be missing those zones.
      "A String",
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(projectId, zone, clusterId, body, x__xgafv=None)</code>
  <pre>Updates the settings of a specific cluster.

Args:
  projectId: string, The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the cluster resides. (required)
  clusterId: string, The name of the cluster to upgrade. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # UpdateClusterRequest updates the settings of a cluster.
    "update": { # 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. # A description of the update.
      "desiredMasterVersion": "A String", # The Kubernetes version to change the master to. The only valid value is the latest supported version. Use "-" to have the server automatically select the latest version.
      "desiredNodePoolId": "A String", # The node pool to be upgraded. This field is mandatory if the "desired_node_version" or "desired_image_family" is specified and there is more than one node pool on the cluster.
      "desiredNodeVersion": "A String", # The Kubernetes version to change the nodes to (typically an upgrade). Use `-` to upgrade to the latest version supported by the server.
      "desiredMonitoringService": "A String", # The monitoring service the cluster should use to write metrics. Currently available options: * "monitoring.googleapis.com" - the Google Cloud Monitoring service * "none" - no metrics will be exported from the cluster
      "desiredAddonsConfig": { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
        "httpLoadBalancing": { # 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. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
          "disabled": True or False, # 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.
        },
        "horizontalPodAutoscaling": { # 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. # 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.
          "disabled": True or False, # 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.
        },
      },
    },
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
    "status": "A String", # The current status of the operation.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine [zone](/compute/docs/zones#available) in which the operation is taking place.
    "detail": "A String", # Detailed operation progress, if available.
    "selfLink": "A String", # Server-defined URL for the resource.
    "operationType": "A String", # The operation type.
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

</body></html>