<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_v1beta1.html">Kubernetes Engine API</a> . <a href="container_v1beta1.projects.html">projects</a> . <a href="container_v1beta1.projects.zones.html">zones</a> . <a href="container_v1beta1.projects.zones.clusters.html">clusters</a> . <a href="container_v1beta1.projects.zones.clusters.nodePools.html">nodePools</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#autoscaling">autoscaling(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the autoscaling settings of a specific node pool.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a node pool for a cluster.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, zone, clusterId, nodePoolId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a node pool from a cluster.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, zone, clusterId, nodePoolId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the requested node pool.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, zone, clusterId, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the node pools for a cluster.</p>
<p class="toc_element">
  <code><a href="#rollback">rollback(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Rolls back a previously Aborted or Failed NodePool upgrade.</p>
<p class="toc_element">
  <code><a href="#setManagement">setManagement(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the NodeManagement options for a node pool.</p>
<p class="toc_element">
  <code><a href="#setSize">setSize(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the size for a specific node pool.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the version and/or image type of a specific node pool.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="autoscaling">autoscaling(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</code>
  <pre>Sets the autoscaling settings of a specific node pool.

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

{ # SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
    "name": "A String", # The name (project, location, cluster, node pool) of the node pool to set
        # autoscaler settings. Specified in the format
        # 'projects/*/locations/*/clusters/*/nodePools/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaling configuration for the node pool.
        # adjust the size of the node pool to the current cluster usage.
      "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
          # max_node_count.
      "autoprovisioned": True or False, # Can this node pool be deleted automatically.
      "enabled": True or False, # Is autoscaling enabled for this node pool.
      "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
          # has to enough quota to scale up the cluster.
    },
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "nodePoolId": "A String", # Deprecated. The name of the node pool to upgrade.
        # This field has been deprecated and replaced by the name field.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, zone, clusterId, body, x__xgafv=None)</code>
  <pre>Creates a node pool for a cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the parent field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the parent field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the parent field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # CreateNodePoolRequest creates a node pool for a cluster.
    "parent": "A String", # The parent (project, location, cluster id) where the node pool will be
        # created. Specified in the format
        # 'projects/*/locations/*/clusters/*'.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://developers.google.com/console/help/new/#projectnumber).
        # This field has been deprecated and replaced by the parent field.
    "clusterId": "A String", # Deprecated. The name of the cluster.
        # This field has been deprecated and replaced by the parent field.
    "nodePool": { # NodePool contains the name and configuration for a cluster's node pool. # The node pool to create.
        # 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", # [Output only] 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.
      "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
          # node pool.
        "autoRepair": True or False, # Whether the nodes will be automatically repaired.
        "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
            # the Auto Upgrades will proceed.
          "description": "A String", # [Output only] This field is set when upgrades are about to commence
              # with the description of the upgrade.
          "autoUpgradeStartTime": "A String", # [Output only] This field is set when upgrades are about to commence
              # with the approximate start time for the upgrades, in
              # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        },
        "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
      },
      "name": "A String", # The name of the node pool.
      "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
          # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
          # associated with this node pool.
        "A String",
      ],
      "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
          # only if a valid configuration is present.
          # adjust the size of the node pool to the current cluster usage.
        "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
            # max_node_count.
        "autoprovisioned": True or False, # Can this node pool be deleted automatically.
        "enabled": True or False, # Is autoscaling enabled for this node pool.
        "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
            # has to enough quota to scale up the cluster.
      },
      "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
          # in which the NodePool's nodes should be located.
        "A String",
      ],
      "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
          # simultaneously on a node in the node pool.
        "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
      },
      "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 <a href="/compute/docs/resource-quotas">resource quota</a>
          # is sufficient for this number of instances. You must also have available
          # firewall and routes quota.
      "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
      "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
        "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
          "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
        },
        "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`.
        "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
          "enableIntegrityMonitoring": True or False, # Defines whether the instance has integrity monitoring enabled.
              #
              # Enables monitoring and attestation of the boot integrity of the instance.
              # The attestation is performed against the integrity policy baseline. This
              # baseline is initially derived from the implicitly trusted boot image when
              # the instance is created.
          "enableSecureBoot": True or False, # Defines whether the instance has Secure Boot enabled.
              #
              # Secure Boot helps ensure that the system only runs authentic software by
              # verifying the digital signature of all boot components, and halting the
              # boot process if signature verification fails.
        },
        "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
            #
            # If unspecified, the default disk type is 'pd-standard'
        "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.
          "A String",
        ],
        "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
            # https://cloud.google.com/compute/docs/instances/preemptible for more
            # inforamtion about preemptible VM instances.
        "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/
          "a_key": "A String",
        },
        "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
            # no Service Account is specified, the "default" service account is used.
        "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",
        ],
        "taints": [ # List of kubernetes taints to be applied to each node.
            #
            # For more information, including usage and the valid values, see:
            # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
          { # Kubernetes taint is comprised of three fields: key, value, and effect. Effect
              # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
              #
              # For more information, including usage and the valid values, see:
              # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
            "key": "A String", # Key for taint.
            "effect": "A String", # Effect for taint.
            "value": "A String", # Value for taint.
          },
        ],
        "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
            # workloads on the node pool.
          "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
              # workloads running on the node.
        },
        "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.
        "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.
          { # AcceleratorConfig represents a Hardware Accelerator request.
            "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
            "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                # [here](/compute/docs/gpus/#Introduction)
          },
        ],
        "minCpuPlatform": "A String", # Minimum CPU platform to be used by this instance. The instance may be
            # scheduled on the specified or newer CPU platform. Applicable values are the
            # friendly names of CPU platforms, such as
            # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
            # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
            # information, read [how to specify min CPU
            # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        "localSsdCount": 42, # 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.
        "imageType": "A String", # The image type to use for this node. Note that for a given image type,
            # the latest version of it will be used.
        "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"
            #  "containerd-configure-sh"
            #  "enable-oslogin"
            #  "gci-ensure-gke-docker"
            #  "gci-update-strategy"
            #  "instance-template"
            #  "kube-env"
            #  "startup-script"
            #  "user-data"
            #  "disable-address-manager"
            #  "windows-startup-script-ps1"
            #  "common-psm1"
            #  "k8s-node-setup-psm1"
            #  "install-ssh-psm1"
            #  "user-profile-psm1"
            #  "serial-port-logging-enable"
            # Values are free-form strings, and only have meaning as interpreted by
            # the image running in the instance. The only restriction placed on them is
            # that each value's size must be less than or equal to 32 KB.
            #
            # The total size of all keys and values must be less than 512 KB.
          "a_key": "A String",
        },
      },
      "conditions": [ # Which conditions caused the current node pool state.
        { # StatusCondition describes why a cluster or a node pool has a certain status
            # (e.g., ERROR or DEGRADED).
          "message": "A String", # Human-friendly representation of the condition
          "code": "A String", # Machine-friendly representation of the condition
        },
      ],
      "selfLink": "A String", # [Output only] Server-defined URL for the resource.
    },
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the parent field.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "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, nodePoolId, name=None, x__xgafv=None)</code>
  <pre>Deletes a node pool from a cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  nodePoolId: string, Deprecated. The name of the node pool to delete.
This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project, location, cluster, node pool id) of the node pool to
delete. Specified in the format
'projects/*/locations/*/clusters/*/nodePools/*'.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "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, nodePoolId, name=None, x__xgafv=None)</code>
  <pre>Retrieves the requested node pool.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  nodePoolId: string, Deprecated. The name of the node pool.
This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project, location, cluster, node pool id) of the node pool to
get. Specified in the format
'projects/*/locations/*/clusters/*/nodePools/*'.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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", # [Output only] 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.
    "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
        # node pool.
      "autoRepair": True or False, # Whether the nodes will be automatically repaired.
      "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
          # the Auto Upgrades will proceed.
        "description": "A String", # [Output only] This field is set when upgrades are about to commence
            # with the description of the upgrade.
        "autoUpgradeStartTime": "A String", # [Output only] This field is set when upgrades are about to commence
            # with the approximate start time for the upgrades, in
            # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      },
      "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
    },
    "name": "A String", # The name of the node pool.
    "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
        # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
        # associated with this node pool.
      "A String",
    ],
    "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
        # only if a valid configuration is present.
        # adjust the size of the node pool to the current cluster usage.
      "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
          # max_node_count.
      "autoprovisioned": True or False, # Can this node pool be deleted automatically.
      "enabled": True or False, # Is autoscaling enabled for this node pool.
      "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
          # has to enough quota to scale up the cluster.
    },
    "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
        # in which the NodePool's nodes should be located.
      "A String",
    ],
    "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
        # simultaneously on a node in the node pool.
      "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
    },
    "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 <a href="/compute/docs/resource-quotas">resource quota</a>
        # is sufficient for this number of instances. You must also have available
        # firewall and routes quota.
    "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
    "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
      "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
        "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
      },
      "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`.
      "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
        "enableIntegrityMonitoring": True or False, # Defines whether the instance has integrity monitoring enabled.
            #
            # Enables monitoring and attestation of the boot integrity of the instance.
            # The attestation is performed against the integrity policy baseline. This
            # baseline is initially derived from the implicitly trusted boot image when
            # the instance is created.
        "enableSecureBoot": True or False, # Defines whether the instance has Secure Boot enabled.
            #
            # Secure Boot helps ensure that the system only runs authentic software by
            # verifying the digital signature of all boot components, and halting the
            # boot process if signature verification fails.
      },
      "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
          #
          # If unspecified, the default disk type is 'pd-standard'
      "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.
        "A String",
      ],
      "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
          # https://cloud.google.com/compute/docs/instances/preemptible for more
          # inforamtion about preemptible VM instances.
      "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/
        "a_key": "A String",
      },
      "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
          # no Service Account is specified, the "default" service account is used.
      "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",
      ],
      "taints": [ # List of kubernetes taints to be applied to each node.
          #
          # For more information, including usage and the valid values, see:
          # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
        { # Kubernetes taint is comprised of three fields: key, value, and effect. Effect
            # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
            #
            # For more information, including usage and the valid values, see:
            # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
          "key": "A String", # Key for taint.
          "effect": "A String", # Effect for taint.
          "value": "A String", # Value for taint.
        },
      ],
      "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
          # workloads on the node pool.
        "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
            # workloads running on the node.
      },
      "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.
      "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.
        { # AcceleratorConfig represents a Hardware Accelerator request.
          "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
          "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
              # [here](/compute/docs/gpus/#Introduction)
        },
      ],
      "minCpuPlatform": "A String", # Minimum CPU platform to be used by this instance. The instance may be
          # scheduled on the specified or newer CPU platform. Applicable values are the
          # friendly names of CPU platforms, such as
          # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
          # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
          # information, read [how to specify min CPU
          # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
      "localSsdCount": 42, # 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.
      "imageType": "A String", # The image type to use for this node. Note that for a given image type,
          # the latest version of it will be used.
      "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"
          #  "containerd-configure-sh"
          #  "enable-oslogin"
          #  "gci-ensure-gke-docker"
          #  "gci-update-strategy"
          #  "instance-template"
          #  "kube-env"
          #  "startup-script"
          #  "user-data"
          #  "disable-address-manager"
          #  "windows-startup-script-ps1"
          #  "common-psm1"
          #  "k8s-node-setup-psm1"
          #  "install-ssh-psm1"
          #  "user-profile-psm1"
          #  "serial-port-logging-enable"
          # Values are free-form strings, and only have meaning as interpreted by
          # the image running in the instance. The only restriction placed on them is
          # that each value's size must be less than or equal to 32 KB.
          #
          # The total size of all keys and values must be less than 512 KB.
        "a_key": "A String",
      },
    },
    "conditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # [Output only] Server-defined URL for the resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, zone, clusterId, parent=None, x__xgafv=None)</code>
  <pre>Lists the node pools for a cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the parent field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the parent field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the parent field. (required)
  parent: string, The parent (project, location, cluster id) where the node pools will be
listed. Specified in the format 'projects/*/locations/*/clusters/*'.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListNodePoolsResponse is the result of ListNodePoolsRequest.
    "nodePools": [ # A list of node pools for a cluster.
      { # 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", # [Output only] 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.
        "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
            # node pool.
          "autoRepair": True or False, # Whether the nodes will be automatically repaired.
          "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
              # the Auto Upgrades will proceed.
            "description": "A String", # [Output only] This field is set when upgrades are about to commence
                # with the description of the upgrade.
            "autoUpgradeStartTime": "A String", # [Output only] This field is set when upgrades are about to commence
                # with the approximate start time for the upgrades, in
                # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
          },
          "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
        },
        "name": "A String", # The name of the node pool.
        "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
            # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
            # associated with this node pool.
          "A String",
        ],
        "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
            # only if a valid configuration is present.
            # adjust the size of the node pool to the current cluster usage.
          "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
              # max_node_count.
          "autoprovisioned": True or False, # Can this node pool be deleted automatically.
          "enabled": True or False, # Is autoscaling enabled for this node pool.
          "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
              # has to enough quota to scale up the cluster.
        },
        "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
            # in which the NodePool's nodes should be located.
          "A String",
        ],
        "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
            # simultaneously on a node in the node pool.
          "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
        },
        "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 <a href="/compute/docs/resource-quotas">resource quota</a>
            # is sufficient for this number of instances. You must also have available
            # firewall and routes quota.
        "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
        "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
          "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
            "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
          },
          "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`.
          "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
            "enableIntegrityMonitoring": True or False, # Defines whether the instance has integrity monitoring enabled.
                #
                # Enables monitoring and attestation of the boot integrity of the instance.
                # The attestation is performed against the integrity policy baseline. This
                # baseline is initially derived from the implicitly trusted boot image when
                # the instance is created.
            "enableSecureBoot": True or False, # Defines whether the instance has Secure Boot enabled.
                #
                # Secure Boot helps ensure that the system only runs authentic software by
                # verifying the digital signature of all boot components, and halting the
                # boot process if signature verification fails.
          },
          "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
              #
              # If unspecified, the default disk type is 'pd-standard'
          "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.
            "A String",
          ],
          "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
              # https://cloud.google.com/compute/docs/instances/preemptible for more
              # inforamtion about preemptible VM instances.
          "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/
            "a_key": "A String",
          },
          "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
              # no Service Account is specified, the "default" service account is used.
          "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",
          ],
          "taints": [ # List of kubernetes taints to be applied to each node.
              #
              # For more information, including usage and the valid values, see:
              # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
            { # Kubernetes taint is comprised of three fields: key, value, and effect. Effect
                # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
                #
                # For more information, including usage and the valid values, see:
                # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
              "key": "A String", # Key for taint.
              "effect": "A String", # Effect for taint.
              "value": "A String", # Value for taint.
            },
          ],
          "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
              # workloads on the node pool.
            "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
                # workloads running on the node.
          },
          "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.
          "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.
            { # AcceleratorConfig represents a Hardware Accelerator request.
              "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
              "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                  # [here](/compute/docs/gpus/#Introduction)
            },
          ],
          "minCpuPlatform": "A String", # Minimum CPU platform to be used by this instance. The instance may be
              # scheduled on the specified or newer CPU platform. Applicable values are the
              # friendly names of CPU platforms, such as
              # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
              # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
              # information, read [how to specify min CPU
              # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
          "localSsdCount": 42, # 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.
          "imageType": "A String", # The image type to use for this node. Note that for a given image type,
              # the latest version of it will be used.
          "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"
              #  "containerd-configure-sh"
              #  "enable-oslogin"
              #  "gci-ensure-gke-docker"
              #  "gci-update-strategy"
              #  "instance-template"
              #  "kube-env"
              #  "startup-script"
              #  "user-data"
              #  "disable-address-manager"
              #  "windows-startup-script-ps1"
              #  "common-psm1"
              #  "k8s-node-setup-psm1"
              #  "install-ssh-psm1"
              #  "user-profile-psm1"
              #  "serial-port-logging-enable"
              # Values are free-form strings, and only have meaning as interpreted by
              # the image running in the instance. The only restriction placed on them is
              # that each value's size must be less than or equal to 32 KB.
              #
              # The total size of all keys and values must be less than 512 KB.
            "a_key": "A String",
          },
        },
        "conditions": [ # Which conditions caused the current node pool state.
          { # StatusCondition describes why a cluster or a node pool has a certain status
              # (e.g., ERROR or DEGRADED).
            "message": "A String", # Human-friendly representation of the condition
            "code": "A String", # Machine-friendly representation of the condition
          },
        ],
        "selfLink": "A String", # [Output only] Server-defined URL for the resource.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="rollback">rollback(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</code>
  <pre>Rolls back a previously Aborted or Failed NodePool upgrade.
This makes no changes if the last upgrade successfully completed.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to rollback.
This field has been deprecated and replaced by the name field. (required)
  nodePoolId: string, Deprecated. The name of the node pool to rollback.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
      # NodePool upgrade. This will be an no-op if the last upgrade successfully
      # completed.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to rollback.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster, node pool id) of the node poll to
        # rollback upgrade.
        # Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "nodePoolId": "A String", # Deprecated. The name of the node pool to rollback.
        # This field has been deprecated and replaced by the name field.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setManagement">setManagement(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</code>
  <pre>Sets the NodeManagement options for a node pool.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to update.
This field has been deprecated and replaced by the name field. (required)
  nodePoolId: string, Deprecated. The name of the node pool to update.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetNodePoolManagementRequest sets the node management properties of a node
      # pool.
    "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for the node pool.
        # node pool.
      "autoRepair": True or False, # Whether the nodes will be automatically repaired.
      "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
          # the Auto Upgrades will proceed.
        "description": "A String", # [Output only] This field is set when upgrades are about to commence
            # with the description of the upgrade.
        "autoUpgradeStartTime": "A String", # [Output only] This field is set when upgrades are about to commence
            # with the approximate start time for the upgrades, in
            # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      },
      "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
    },
    "name": "A String", # The name (project, location, cluster, node pool id) of the node pool to set
        # management properties. Specified in the format
        # 'projects/*/locations/*/clusters/*/nodePools/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to update.
        # This field has been deprecated and replaced by the name field.
    "nodePoolId": "A String", # Deprecated. The name of the node pool to update.
        # This field has been deprecated and replaced by the name field.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setSize">setSize(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</code>
  <pre>Sets the size for a specific node pool.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to update.
This field has been deprecated and replaced by the name field. (required)
  nodePoolId: string, Deprecated. The name of the node pool to update.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetNodePoolSizeRequest sets the size a node
      # pool.
    "name": "A String", # The name (project, location, cluster, node pool id) of the node pool to set
        # size.
        # Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to update.
        # This field has been deprecated and replaced by the name field.
    "nodePoolId": "A String", # Deprecated. The name of the node pool to update.
        # This field has been deprecated and replaced by the name field.
    "nodeCount": 42, # The desired node count for the pool.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(projectId, zone, clusterId, nodePoolId, body, x__xgafv=None)</code>
  <pre>Updates the version and/or image type of a specific node pool.

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

{ # SetNodePoolVersionRequest updates the version of a node pool.
    "name": "A String", # The name (project, location, cluster, node pool) of the node pool to
        # update. Specified in the format
        # 'projects/*/locations/*/clusters/*/nodePools/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "locations": [ # The desired list of Google Compute Engine
        # [zones](/compute/docs/zones#available) in which the node pool's nodes
        # should be located. Changing the locations for a node pool will result
        # in nodes being either created or removed from the node pool, depending
        # on whether locations are being added or removed.
      "A String",
    ],
    "nodePoolId": "A String", # Deprecated. The name of the node pool to upgrade.
        # This field has been deprecated and replaced by the name field.
    "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The desired image type for the node pool.
        # workloads on the node pool.
      "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
          # workloads running on the node.
    },
    "nodeVersion": "A String", # The Kubernetes version to change the nodes to (typically an
        # upgrade).
        # 
        # Users may specify either explicit versions offered by Kubernetes Engine or
        # version aliases, which have the following behavior:
        # 
        # - "latest": picks the highest valid Kubernetes version
        # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        # - "1.X.Y-gke.N": picks an explicit Kubernetes version
        # - "-": picks the Kubernetes master version
    "imageType": "A String", # The desired image type for the node pool.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "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.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

</body></html>