<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.locations.html">locations</a> . <a href="container_v1beta1.projects.locations.clusters.html">clusters</a> . <a href="container_v1beta1.projects.locations.clusters.nodePools.html">nodePools</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, 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(name, clusterId=None, nodePoolId=None, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Deletes a node pool from a cluster.</p>
<p class="toc_element">
  <code><a href="#get">get(name, clusterId=None, nodePoolId=None, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Retrieves the requested node pool.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, clusterId=None, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Lists the node pools for a cluster.</p>
<p class="toc_element">
  <code><a href="#rollback">rollback(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rolls back a previously Aborted or Failed NodePool upgrade. This makes no changes if the last upgrade successfully completed.</p>
<p class="toc_element">
  <code><a href="#setAutoscaling">setAutoscaling(name, body=None, 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="#setManagement">setManagement(name, body=None, 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(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">SetNodePoolSizeRequest sets the size of a node pool. The new size will be used for all replicas, including future replicas created by modifying NodePool.locations.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, 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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

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

Args:
  parent: string, The parent (project, location, cluster id) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # CreateNodePoolRequest creates a node pool for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field.
  &quot;nodePool&quot;: { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;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. These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. # Required. The node pool to create.
    &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
      &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
      &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
      &quot;maxNodeCount&quot;: 42, # Maximum number of nodes in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
      &quot;minNodeCount&quot;: 42, # Minimum number of nodes in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
    },
    &quot;conditions&quot;: [ # 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).
        &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
        &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
        &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
      },
    ],
    &quot;config&quot;: { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
      &quot;accelerators&quot;: [ # 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.
          &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
          &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
          &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
        },
      ],
      &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
      &quot;diskSizeGb&quot;: 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.
      &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
      &quot;ephemeralStorageConfig&quot;: { # EphemeralStorageConfig contains configuration for the ephemeral storage filesystem. # Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
        &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size. If zero, it means to disable using local SSDs as ephemeral storage.
      },
      &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic on the node pool.
        &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
      },
      &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used.
      &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
        &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
        &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
        &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. - &quot;none&quot;: the default, which represents the existing scheduling behavior. - &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
      },
      &quot;labels&quot;: { # 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&#x27;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/
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
        &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
      &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types). If unspecified, the default machine type is `e2-medium`.
      &quot;metadata&quot;: { # 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: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-oslogin&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; 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&#x27;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.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;minCpuPlatform&quot;: &quot;A String&quot;, # 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 `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
      &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
      &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
        &quot;A String&quot;,
      ],
      &quot;preemptible&quot;: 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.
      &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
        &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
        &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
        &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
          &quot;A String&quot;,
        ],
      },
      &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
        &quot;sandboxType&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node (e.g. &#x27;gvisor&#x27;)
        &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
      },
      &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
        &quot;enableIntegrityMonitoring&quot;: 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.
        &quot;enableSecureBoot&quot;: 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.
      },
      &quot;tags&quot;: [ # 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.
        &quot;A String&quot;,
      ],
      &quot;taints&quot;: [ # 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. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
          &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
          &quot;key&quot;: &quot;A String&quot;, # Key for taint.
          &quot;value&quot;: &quot;A String&quot;, # Value for taint.
        },
      ],
      &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
        &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
        &quot;nodeMetadata&quot;: &quot;A String&quot;, # NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.
      },
    },
    &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
    &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
      &quot;A String&quot;,
    ],
    &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
      &quot;autoRepair&quot;: True or False, # Whether the nodes will be automatically repaired.
      &quot;autoUpgrade&quot;: True or False, # Whether the nodes will be automatically upgraded.
      &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
        &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [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.
        &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
      },
    },
    &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
      &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
    &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
      &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
      &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
      &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
    },
    &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
    &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
    &quot;upgradeSettings&quot;: { # Upgrade settings control disruption and speed of the upgrade.
      &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
      &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
    },
    &quot;version&quot;: &quot;A String&quot;, # The version of the Kubernetes of this node.
  },
  &quot;parent&quot;: &quot;A String&quot;, # The parent (project, location, cluster id) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. 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.
  &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.
}

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, clusterId=None, nodePoolId=None, projectId=None, x__xgafv=None, zone=None)</code>
  <pre>Deletes a node pool from a cluster.

Args:
  name: string, The name (project, location, cluster, node pool id) of the node pool to delete. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  clusterId: string, Required. Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  nodePoolId: string, Required. Deprecated. The name of the node pool to delete. This field has been deprecated and replaced by the name field.
  projectId: string, Required. 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.

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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, clusterId=None, nodePoolId=None, projectId=None, x__xgafv=None, zone=None)</code>
  <pre>Retrieves the requested node pool.

Args:
  name: string, The name (project, location, cluster, node pool id) of the node pool to get. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  clusterId: string, Required. Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  nodePoolId: string, Required. Deprecated. The name of the node pool. This field has been deprecated and replaced by the name field.
  projectId: string, Required. 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.

Returns:
  An object of the form:

    { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;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. These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available.
  &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
    &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
    &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
    &quot;maxNodeCount&quot;: 42, # Maximum number of nodes in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
    &quot;minNodeCount&quot;: 42, # Minimum number of nodes in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
  },
  &quot;conditions&quot;: [ # 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).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;config&quot;: { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
    &quot;accelerators&quot;: [ # 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.
        &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
        &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
        &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
      },
    ],
    &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
    &quot;diskSizeGb&quot;: 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.
    &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
    &quot;ephemeralStorageConfig&quot;: { # EphemeralStorageConfig contains configuration for the ephemeral storage filesystem. # Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
      &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size. If zero, it means to disable using local SSDs as ephemeral storage.
    },
    &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic on the node pool.
      &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
    },
    &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used.
    &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
      &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
      &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
      &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. - &quot;none&quot;: the default, which represents the existing scheduling behavior. - &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
    },
    &quot;labels&quot;: { # 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&#x27;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/
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
      &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
    &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types). If unspecified, the default machine type is `e2-medium`.
    &quot;metadata&quot;: { # 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: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-oslogin&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; 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&#x27;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.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;minCpuPlatform&quot;: &quot;A String&quot;, # 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 `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
    &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
    &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
      &quot;A String&quot;,
    ],
    &quot;preemptible&quot;: 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.
    &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
      &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
      &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
      &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
        &quot;A String&quot;,
      ],
    },
    &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
      &quot;sandboxType&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node (e.g. &#x27;gvisor&#x27;)
      &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
    },
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
    &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
      &quot;enableIntegrityMonitoring&quot;: 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.
      &quot;enableSecureBoot&quot;: 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.
    },
    &quot;tags&quot;: [ # 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.
      &quot;A String&quot;,
    ],
    &quot;taints&quot;: [ # 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. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
        &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
        &quot;key&quot;: &quot;A String&quot;, # Key for taint.
        &quot;value&quot;: &quot;A String&quot;, # Value for taint.
      },
    ],
    &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
      &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
      &quot;nodeMetadata&quot;: &quot;A String&quot;, # NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.
    },
  },
  &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
  &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool.
    &quot;A String&quot;,
  ],
  &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
    &quot;A String&quot;,
  ],
  &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
    &quot;autoRepair&quot;: True or False, # Whether the nodes will be automatically repaired.
    &quot;autoUpgrade&quot;: True or False, # Whether the nodes will be automatically upgraded.
    &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
      &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [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.
      &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
    },
  },
  &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
    &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
  },
  &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
  &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
    &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
    &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
    &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
  },
  &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
  &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
  &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
  &quot;upgradeSettings&quot;: { # Upgrade settings control disruption and speed of the upgrade.
    &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
    &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
  },
  &quot;version&quot;: &quot;A String&quot;, # The version of the Kubernetes of this node.
}</pre>
</div>

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

Args:
  parent: string, The parent (project, location, cluster id) where the node pools will be listed. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  clusterId: string, Required. Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field.
  projectId: string, Required. 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.

Returns:
  An object of the form:

    { # ListNodePoolsResponse is the result of ListNodePoolsRequest.
  &quot;nodePools&quot;: [ # A list of node pools for a cluster.
    { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;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. These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available.
      &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
        &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
        &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
        &quot;maxNodeCount&quot;: 42, # Maximum number of nodes in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
        &quot;minNodeCount&quot;: 42, # Minimum number of nodes in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
      },
      &quot;conditions&quot;: [ # 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).
          &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
          &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
          &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
        },
      ],
      &quot;config&quot;: { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
        &quot;accelerators&quot;: [ # 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.
            &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
            &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
            &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
          },
        ],
        &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        &quot;diskSizeGb&quot;: 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.
        &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
        &quot;ephemeralStorageConfig&quot;: { # EphemeralStorageConfig contains configuration for the ephemeral storage filesystem. # Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
          &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size. If zero, it means to disable using local SSDs as ephemeral storage.
        },
        &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic on the node pool.
          &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
        },
        &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used.
        &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
          &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
          &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
          &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. - &quot;none&quot;: the default, which represents the existing scheduling behavior. - &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
        },
        &quot;labels&quot;: { # 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&#x27;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/
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
          &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
        &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types). If unspecified, the default machine type is `e2-medium`.
        &quot;metadata&quot;: { # 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: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-oslogin&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; 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&#x27;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.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # 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 `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
        &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
          &quot;A String&quot;,
        ],
        &quot;preemptible&quot;: 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.
        &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
          &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
          &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
          &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
            &quot;A String&quot;,
          ],
        },
        &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
          &quot;sandboxType&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node (e.g. &#x27;gvisor&#x27;)
          &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
        &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
          &quot;enableIntegrityMonitoring&quot;: 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.
          &quot;enableSecureBoot&quot;: 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.
        },
        &quot;tags&quot;: [ # 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.
          &quot;A String&quot;,
        ],
        &quot;taints&quot;: [ # 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. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
            &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
            &quot;key&quot;: &quot;A String&quot;, # Key for taint.
            &quot;value&quot;: &quot;A String&quot;, # Value for taint.
          },
        ],
        &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
          &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
          &quot;nodeMetadata&quot;: &quot;A String&quot;, # NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.
        },
      },
      &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
      &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool.
        &quot;A String&quot;,
      ],
      &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
        &quot;A String&quot;,
      ],
      &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
        &quot;autoRepair&quot;: True or False, # Whether the nodes will be automatically repaired.
        &quot;autoUpgrade&quot;: True or False, # Whether the nodes will be automatically upgraded.
        &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
          &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [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.
          &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
        },
      },
      &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
        &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
      },
      &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
      &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
        &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
        &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
        &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
      },
      &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
      &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
      &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
      &quot;upgradeSettings&quot;: { # Upgrade settings control disruption and speed of the upgrade.
        &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
        &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
      },
      &quot;version&quot;: &quot;A String&quot;, # The version of the Kubernetes of this node.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="rollback">rollback(name, body=None, 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:
  name: string, The name (project, location, cluster, node pool id) of the node poll to rollback upgrade. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  body: object, The request body.
    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.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the cluster to rollback. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster, node pool id) of the node poll to rollback upgrade. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  &quot;nodePoolId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the node pool to rollback. This field has been deprecated and replaced by the name field.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. 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.
  &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setAutoscaling">setAutoscaling(name, body=None, x__xgafv=None)</code>
  <pre>Sets the autoscaling settings of a specific node pool.

Args:
  name: string, The name (project, location, cluster, node pool) of the node pool to set autoscaler settings. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  body: object, The request body.
    The object takes the form of:

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

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

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

Args:
  name: 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/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetNodePoolManagementRequest sets the node management properties of a node pool.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the cluster to update. This field has been deprecated and replaced by the name field.
  &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Required. NodeManagement configuration for the node pool.
    &quot;autoRepair&quot;: True or False, # Whether the nodes will be automatically repaired.
    &quot;autoUpgrade&quot;: True or False, # Whether the nodes will be automatically upgraded.
    &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
      &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [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.
      &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster, node pool id) of the node pool to set management properties. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  &quot;nodePoolId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the node pool to update. This field has been deprecated and replaced by the name field.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. 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.
  &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setSize">setSize(name, body=None, x__xgafv=None)</code>
  <pre>SetNodePoolSizeRequest sets the size of a node pool. The new size will be used for all replicas, including future replicas created by modifying NodePool.locations.

Args:
  name: string, The name (project, location, cluster, node pool id) of the node pool to set size. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetNodePoolSizeRequest sets the size of a node pool.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the cluster to update. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster, node pool id) of the node pool to set size. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  &quot;nodeCount&quot;: 42, # Required. The desired node count for the pool.
  &quot;nodePoolId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the node pool to update. This field has been deprecated and replaced by the name field.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. 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.
  &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

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

Args:
  name: string, The name (project, location, cluster, node pool) of the node pool to update. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetNodePoolVersionRequest updates the version of a node pool.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic on the node pool.
    &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
  },
  &quot;imageType&quot;: &quot;A String&quot;, # Required. The desired image type for the node pool.
  &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
    &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
    &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
    &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. - &quot;none&quot;: the default, which represents the existing scheduling behavior. - &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
  },
  &quot;labels&quot;: { # Collection of node-level [Kubernetes labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels). # The desired node labels to be applied to all nodes in the node pool. If this field is not present, the labels will not be changed. Otherwise, the existing node labels will be *replaced* with the provided labels.
    &quot;labels&quot;: { # Map of node label keys and node label values.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
    &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;locations&quot;: [ # The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the node pool&#x27;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.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster, node pool) of the node pool to update. Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  &quot;nodePoolId&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the node pool to upgrade. This field has been deprecated and replaced by the name field.
  &quot;nodeVersion&quot;: &quot;A String&quot;, # Required. The Kubernetes version to change the nodes to (typically an upgrade). Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;-&quot;: picks the Kubernetes master version
  &quot;projectId&quot;: &quot;A String&quot;, # Required. 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.
  &quot;tags&quot;: { # Collection of Compute Engine network tags that can be applied to a node&#x27;s underlying VM instance. (See `tags` field in [`NodeConfig`](/kubernetes-engine/docs/reference/rest/v1/NodeConfig)). # The desired network tags to be applied to all nodes in the node pool. If this field is not present, the tags will not be changed. Otherwise, the existing network tags will be *replaced* with the provided tags.
    &quot;tags&quot;: [ # List of network tags.
      &quot;A String&quot;,
    ],
  },
  &quot;taints&quot;: { # Collection of Kubernetes [node taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration). # The desired node taints to be applied to all nodes in the node pool. If this field is not present, the taints will not be changed. Otherwise, the existing node taints will be *replaced* with the provided taints.
    &quot;taints&quot;: [ # List of node taints.
      { # Kubernetes taint is comprised of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
        &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
        &quot;key&quot;: &quot;A String&quot;, # Key for taint.
        &quot;value&quot;: &quot;A String&quot;, # Value for taint.
      },
    ],
  },
  &quot;upgradeSettings&quot;: { # Upgrade settings control disruption and speed of the upgrade.
    &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
    &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
  },
  &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The desired workload metadata config for the node pool.
    &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
    &quot;nodeMetadata&quot;: &quot;A String&quot;, # NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.
  },
  &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  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.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

</body></html>