<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

<p class="toc_element">
  <code><a href="#addons">addons(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the addons for a specific cluster.</p>
<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="#completeIpRotation">completeIpRotation(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Completes master IP rotation.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, zone, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range the cluster is using.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, zone, clusterId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster, such as load balancer resources, are not deleted if they weren't present when the cluster was initially created.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, zone, clusterId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of a specific cluster.</p>
<p class="toc_element">
  <code><a href="#legacyAbac">legacyAbac(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables or disables the ABAC authorization mechanism on a cluster.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, zone, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all clusters owned by a project in either the specified zone or all zones.</p>
<p class="toc_element">
  <code><a href="#locations">locations(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the locations for a specific cluster. Deprecated. Use [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update) instead.</p>
<p class="toc_element">
  <code><a href="#logging">logging(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the logging service for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#master">master(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the master for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#monitoring">monitoring(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the monitoring service for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#resourceLabels">resourceLabels(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets labels on a cluster.</p>
<p class="toc_element">
  <code><a href="#setMaintenancePolicy">setMaintenancePolicy(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the maintenance policy for a cluster.</p>
<p class="toc_element">
  <code><a href="#setMasterAuth">setMasterAuth(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets master auth materials. Currently supports changing the admin password or a specific cluster, either via password generation or explicitly setting the password.</p>
<p class="toc_element">
  <code><a href="#setNetworkPolicy">setNetworkPolicy(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables or disables Network Policy for a cluster.</p>
<p class="toc_element">
  <code><a href="#startIpRotation">startIpRotation(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts master IP rotation.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, zone, clusterId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the settings of a specific cluster.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addons">addons(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets the addons for a specific cluster.

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

{ # SetAddonsConfigRequest sets the addons associated with the cluster.
  &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Required. The desired configurations for the various addons available to run in the cluster.
    &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
      &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
      &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
    },
    &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
      &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
    },
    &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
      &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
    },
    &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
    },
    &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
      &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
    },
    &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
      &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
    },
    &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
      &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
    },
    &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
      &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
    },
  },
  &quot;clusterId&quot;: &quot;A String&quot;, # 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) of the cluster to set addons. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="completeIpRotation">completeIpRotation(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Completes master IP rotation.

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

{ # CompleteIPRotationRequest moves the cluster master back into single-IP mode.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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.
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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="create">create(projectId, zone, body=None, x__xgafv=None)</code>
  <pre>Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project&#x27;s [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project&#x27;s global metadata indicating which CIDR range the cluster is using.

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

{ # CreateClusterRequest creates a cluster.
  &quot;cluster&quot;: { # A Google Kubernetes Engine cluster. # Required. A [cluster resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters)
    &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
      &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
        &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
        &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
      },
      &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
        &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
      },
      &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
        &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
      },
      &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
      },
      &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
        &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
      },
      &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
        &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
      },
      &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
        &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
      &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
        &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
    },
    &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
      &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
      &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
    },
    &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
      &quot;enabled&quot;: True or False, # Enable Autopilot
    },
    &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
      &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
        &quot;A String&quot;,
      ],
      &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
        &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;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node.
        &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
          &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &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;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) To unset the min cpu platform field pass &quot;automatic&quot; as field value.
        &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
          &quot;A String&quot;,
        ],
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
        &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;upgradeSettings&quot;: { # 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. # Specifies the upgrade settings for NAP created node pools
          &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;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
      &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
        { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
          &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
          &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
          &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
        },
      ],
    },
    &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
      &quot;enabled&quot;: True or False, # Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Binary Authorization.
    },
    &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
    &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
        &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;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes
      &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled for all nodes in this cluster.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
    &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
    &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
    &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
      &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
      &quot;state&quot;: &quot;A String&quot;, # Denotes the state of etcd encryption.
    },
    &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
      &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
    },
    &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
    &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
    &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
    &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
    &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
    &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &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;,&quot;-&quot;: picks the default Kubernetes version
    &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. 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. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
    &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
      &quot;A String&quot;,
    ],
    &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
      &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
      &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
      &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
      &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
      &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
      &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
      &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
      &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
      &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
    },
    &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
    &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
      &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
    },
    &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;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
      &quot;A String&quot;,
    ],
    &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
    &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
      &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
      &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
        &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
          &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
          &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
        },
        &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
          &quot;a_key&quot;: { # Represents an arbitrary window of time.
            &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
            &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
          },
        },
        &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
          &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
          &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
            &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
            &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
          },
        },
      },
    },
    &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
      &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
        &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
      },
      &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
      &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
      &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
      &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    },
    &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
      &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
        { # CidrBlock contains an optional name and one CIDR block.
          &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
          &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
        },
      ],
      &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
    },
    &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
    &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
    &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
    &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
      &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
      &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
        &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
      },
      &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
      &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
      &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
      &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
      &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
    },
    &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
      &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
      &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
    },
    &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
      &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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
    &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
      { # 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.
        &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 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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;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, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &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;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;: { # 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. # 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;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
      &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
        &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
        &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
      },
    },
    &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
      &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
      &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
      &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
        &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
      },
      &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
      &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
      &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
      &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
    },
    &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration.
      &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
    },
    &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
      &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
        &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
      },
      &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
        &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
      },
      &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
    &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
    &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
      &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
    },
    &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
    &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
    &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
      &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
    },
    &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
      &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
    },
    &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
  },
  &quot;parent&quot;: &quot;A String&quot;, # The parent (project and location) where the cluster will be created. Specified in the format `projects/*/locations/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). This field has been deprecated and replaced by the parent field.
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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(projectId, zone, clusterId, name=None, x__xgafv=None)</code>
  <pre>Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster, such as load balancer resources, are not deleted if they weren&#x27;t present when the cluster was initially created.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to delete. This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project, location, cluster) of the cluster to delete. Specified in the format `projects/*/locations/*/clusters/*`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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 the 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(projectId, zone, clusterId, name=None, x__xgafv=None)</code>
  <pre>Gets the details of a specific cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to retrieve. This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project, location, cluster) of the cluster to retrieve. Specified in the format `projects/*/locations/*/clusters/*`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Google Kubernetes Engine cluster.
  &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
    &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
      &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
      &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
    },
    &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
      &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
    },
    &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
      &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
    },
    &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
    },
    &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
      &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
    },
    &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
      &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
    },
    &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
      &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
    },
    &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
      &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
    },
  },
  &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
    &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
    &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
  },
  &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
    &quot;enabled&quot;: True or False, # Enable Autopilot
  },
  &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
    &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
      &quot;A String&quot;,
    ],
    &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
      &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;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node.
      &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
        &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
        &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
        &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;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) To unset the min cpu platform field pass &quot;automatic&quot; as field value.
      &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
        &quot;A String&quot;,
      ],
      &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
      &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;upgradeSettings&quot;: { # 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. # Specifies the upgrade settings for NAP created node pools
        &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;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
    &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
      { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
        &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
        &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
        &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
      },
    ],
  },
  &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
    &quot;enabled&quot;: True or False, # Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Binary Authorization.
  },
  &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
  &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &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;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes
    &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled for all nodes in this cluster.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
  &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
  &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
  &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
    &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
    &quot;state&quot;: &quot;A String&quot;, # Denotes the state of etcd encryption.
  },
  &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
    &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
  },
  &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
  &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
  &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
  &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
  &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
  &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &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;,&quot;-&quot;: picks the default Kubernetes version
  &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. 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. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
  &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
    &quot;A String&quot;,
  ],
  &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
    &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
    &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
    &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
    &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
    &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
    &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
    &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
    &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
    &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
  },
  &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
  &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
    &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
  },
  &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;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
    &quot;A String&quot;,
  ],
  &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
    &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
      &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
        &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
        &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
      },
      &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
        &quot;a_key&quot;: { # Represents an arbitrary window of time.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
      &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
        &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
    },
  },
  &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
    &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
      &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
    },
    &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
    &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
    &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  },
  &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
    &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
      { # CidrBlock contains an optional name and one CIDR block.
        &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
        &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
      },
    ],
    &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
  },
  &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
  &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
  &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
    &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
    &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
      &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
    },
    &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
    &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
    &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
    &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
    &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
  },
  &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
    &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
    &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
  },
  &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
    &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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
  &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
    { # 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.
      &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 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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;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, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
        &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
        &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;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;: { # 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. # 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;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
    &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
      &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
      &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
    },
  },
  &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
    &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
    &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
    &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
      &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
    },
    &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
    &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
    &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
    &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
  },
  &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration.
    &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
  },
  &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
    &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
      &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
    },
    &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
      &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
    },
    &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
  &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
  &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
    &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
  },
  &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
  &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
  &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
  &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
  &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
    &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
  },
  &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
    &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
  },
  &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="legacyAbac">legacyAbac(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Enables or disables the ABAC authorization mechanism on a cluster.

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

{ # SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to update. This field has been deprecated and replaced by the name field.
  &quot;enabled&quot;: True or False, # Required. Whether ABAC authorization will be enabled in the cluster.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="list">list(projectId, zone, parent=None, x__xgafv=None)</code>
  <pre>Lists all clusters owned by a project in either the specified zone or all zones.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840). This field has been deprecated and replaced by the parent field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides, or &quot;-&quot; for all zones. This field has been deprecated and replaced by the parent field. (required)
  parent: string, The parent (project and location) where the clusters will be listed. Specified in the format `projects/*/locations/*`. Location &quot;-&quot; matches all zones and all regions.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListClustersResponse is the result of ListClustersRequest.
  &quot;clusters&quot;: [ # A list of clusters in the project in the specified zone, or across all ones.
    { # A Google Kubernetes Engine cluster.
      &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
        &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
          &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
          &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
        },
        &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
          &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
        },
        &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
          &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
        },
        &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
          &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
        },
        &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
          &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
        },
        &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
          &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
        },
        &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
          &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
        },
        &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
          &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
        },
      },
      &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
        &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
        &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
      },
      &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
        &quot;enabled&quot;: True or False, # Enable Autopilot
      },
      &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
        &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
          &quot;A String&quot;,
        ],
        &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
          &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;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node.
          &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
            &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
            &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
            &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;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) To unset the min cpu platform field pass &quot;automatic&quot; as field value.
          &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
            &quot;A String&quot;,
          ],
          &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
          &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;upgradeSettings&quot;: { # 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. # Specifies the upgrade settings for NAP created node pools
            &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;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
        &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
          { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
            &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
            &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
            &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
          },
        ],
      },
      &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
        &quot;enabled&quot;: True or False, # Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Binary Authorization.
      },
      &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
      &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
        { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
          &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;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes
        &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled for all nodes in this cluster.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
      &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
      &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
      &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
        &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
        &quot;state&quot;: &quot;A String&quot;, # Denotes the state of etcd encryption.
      },
      &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
        &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
      },
      &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
      &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
      &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
      &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
      &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
      &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &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;,&quot;-&quot;: picks the default Kubernetes version
      &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. 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. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
      &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
        &quot;A String&quot;,
      ],
      &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
        &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
        &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
        &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
        &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
        &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
        &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
        &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
        &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
        &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
      },
      &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
      &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
        &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
      },
      &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;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
        &quot;A String&quot;,
      ],
      &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
      &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
        &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
        &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
          &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
            &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
            &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
          },
          &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
            &quot;a_key&quot;: { # Represents an arbitrary window of time.
              &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
              &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
            },
          },
          &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
            &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
            &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
              &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
              &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
            },
          },
        },
      },
      &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
        &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
          &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
        },
        &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
        &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
        &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
        &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
      },
      &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
        &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
          { # CidrBlock contains an optional name and one CIDR block.
            &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
            &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
          },
        ],
        &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
      },
      &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
      &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
      &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
      &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
        &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
        &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
          &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
        },
        &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
        &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
        &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
        &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
        &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
      },
      &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
        &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
        &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
      },
      &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
        &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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
      &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
        { # 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.
          &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 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;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;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-os-login&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; The following keys are reserved for Windows nodes: - &quot;serial-port-logging-enable&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 information 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;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;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, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
            &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
            &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;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;: { # 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. # 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;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
        &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
          &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
          &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
        },
      },
      &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
        &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
        &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
        &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
          &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
        },
        &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
        &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
        &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
        &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
      },
      &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration.
        &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
      },
      &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
        &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
          &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
        },
        &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
          &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
        },
        &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
      &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
      &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
        &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
      },
      &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
      &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
      &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
      &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
      &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
        &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
      },
      &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
        &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
      },
      &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
    },
  ],
  &quot;missingZones&quot;: [ # If any zones are listed here, the list of clusters returned may be missing those zones.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="locations">locations(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets the locations for a specific cluster. Deprecated. Use [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update) instead.

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

{ # SetLocationsRequest sets the locations of the cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;locations&quot;: [ # Required. The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. Changing the locations a cluster is in will result in nodes being either created or removed from the cluster, depending on whether locations are being added or removed. This list must always include the cluster&#x27;s primary zone.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set locations. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="logging">logging(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets the logging service for a specific cluster.

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

{ # SetLoggingServiceRequest sets the logging service of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;loggingService&quot;: &quot;A String&quot;, # Required. The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set logging. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="master">master(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Updates the master for a specific cluster.

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

{ # UpdateMasterRequest updates the master of the cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;masterVersion&quot;: &quot;A String&quot;, # Required. The Kubernetes version to change the master to. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &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 default Kubernetes version
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="monitoring">monitoring(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets the monitoring service for a specific cluster.

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

{ # SetMonitoringServiceRequest sets the monitoring service of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;monitoringService&quot;: &quot;A String&quot;, # Required. The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set monitoring. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;, # 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 the 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="resourceLabels">resourceLabels(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets labels on a cluster.

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

{ # SetLabelsRequest sets the Google Cloud Platform labels on a Google Container Engine cluster, which will in turn set them for Google Compute Engine resources used by that cluster
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;labelFingerprint&quot;: &quot;A String&quot;, # Required. The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Kubernetes Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a `get()` request to the resource to get the latest fingerprint.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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.
  &quot;resourceLabels&quot;: { # Required. The labels to set for that cluster.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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="setMaintenancePolicy">setMaintenancePolicy(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets the maintenance policy for a cluster.

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

{ # SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. The name of the cluster to update.
  &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Required. The maintenance policy to be set for the cluster. An empty field clears the existing maintenance policy.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
    &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
      &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
        &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
        &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
      },
      &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
        &quot;a_key&quot;: { # Represents an arbitrary window of time.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
      &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
        &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Developers Console [project ID or project number](https://support.google.com/cloud/answer/6158840).
  &quot;zone&quot;: &quot;A String&quot;, # Required. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides.
}

  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 the 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="setMasterAuth">setMasterAuth(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Sets master auth materials. Currently supports changing the admin password or a specific cluster, either via password generation or explicitly setting the password.

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

{ # SetMasterAuthRequest updates the admin password of a cluster.
  &quot;action&quot;: &quot;A String&quot;, # Required. The exact form of action to be taken on the master auth.
  &quot;clusterId&quot;: &quot;A String&quot;, # 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) of the cluster to set auth. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;update&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # Required. A description of the update.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
    &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
      &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
    },
    &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
    &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
    &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  },
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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="setNetworkPolicy">setNetworkPolicy(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Enables or disables Network Policy for a cluster.

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

{ # SetNetworkPolicyRequest enables/disables network policy for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Required. Configuration options for the NetworkPolicy feature.
    &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
    &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # 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.
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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="startIpRotation">startIpRotation(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Starts master IP rotation.

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

{ # StartIPRotationRequest creates a new IP for the cluster and then performs a node upgrade on each node pool to point to the new IP.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster id) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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.
  &quot;rotateCredentials&quot;: True or False, # Whether to rotate credentials during IP rotation.
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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(projectId, zone, clusterId, body=None, x__xgafv=None)</code>
  <pre>Updates the settings of a specific cluster.

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

{ # UpdateClusterRequest updates the settings of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # 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) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # 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;update&quot;: { # ClusterUpdate describes an update to the cluster. Exactly one update can be applied to a cluster with each request, so at most one field can be provided. # Required. A description of the update.
    &quot;desiredAddonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
      &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
        &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
        &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
      },
      &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
        &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
      },
      &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
        &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
      },
      &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
      },
      &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
        &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
      },
      &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
        &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
      },
      &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
        &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
      &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
        &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
    },
    &quot;desiredAuthenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # The desired authenticator groups config for the cluster.
      &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
      &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
    },
    &quot;desiredAutopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # The desired Autopilot configuration for the cluster.
      &quot;enabled&quot;: True or False, # Enable Autopilot
    },
    &quot;desiredBinaryAuthorization&quot;: { # Configuration for Binary Authorization. # The desired configuration options for the Binary Authorization feature.
      &quot;enabled&quot;: True or False, # Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Binary Authorization.
    },
    &quot;desiredClusterAutoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
      &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
        &quot;A String&quot;,
      ],
      &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
        &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;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node.
        &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
          &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &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;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) To unset the min cpu platform field pass &quot;automatic&quot; as field value.
        &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
          &quot;A String&quot;,
        ],
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
        &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;upgradeSettings&quot;: { # 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. # Specifies the upgrade settings for NAP created node pools
          &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;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
      &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
        { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
          &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
          &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
          &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
        },
      ],
    },
    &quot;desiredDatabaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
      &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
      &quot;state&quot;: &quot;A String&quot;, # Denotes the state of etcd encryption.
    },
    &quot;desiredDatapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for the cluster.
    &quot;desiredDefaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # The desired status of whether to disable default sNAT for this cluster.
      &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
    },
    &quot;desiredImageType&quot;: &quot;A String&quot;, # The desired image type for the node pool. NOTE: Set the &quot;desired_node_pool&quot; field as well.
    &quot;desiredIntraNodeVisibilityConfig&quot;: { # IntraNodeVisibilityConfig contains the desired config of the intra-node visibility on this cluster. # The desired config of Intra-node visibility.
      &quot;enabled&quot;: True or False, # Enables intra node visibility for this cluster.
    },
    &quot;desiredL4ilbSubsettingConfig&quot;: { # ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer subsetting on this cluster. # The desired L4 Internal Load Balancer Subsetting configuration.
      &quot;enabled&quot;: True or False, # Enables l4 ILB subsetting for this cluster.
    },
    &quot;desiredLocations&quot;: [ # The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This list must always include the cluster&#x27;s primary zone. Warning: changing cluster locations will update the locations of all node pools and will result in nodes being added and/or removed.
      &quot;A String&quot;,
    ],
    &quot;desiredLoggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
    &quot;desiredMasterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The desired configuration options for master authorized networks feature.
      &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
        { # CidrBlock contains an optional name and one CIDR block.
          &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
          &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
        },
      ],
      &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
    },
    &quot;desiredMasterVersion&quot;: &quot;A String&quot;, # The Kubernetes version to change the master to. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &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 default Kubernetes version
    &quot;desiredMonitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
    &quot;desiredNodePoolAutoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for the node pool specified in desired_node_pool_id. If there is only one pool in the cluster and desired_node_pool_id is not provided then the change applies to that single node pool.
      &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 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;desiredNodePoolId&quot;: &quot;A String&quot;, # The node pool to be upgraded. This field is mandatory if &quot;desired_node_version&quot;, &quot;desired_image_family&quot; or &quot;desired_node_pool_autoscaling&quot; is specified and there is more than one node pool on the cluster.
    &quot;desiredNodeVersion&quot;: &quot;A String&quot;, # 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;desiredNotificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # The desired notification configuration.
      &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
        &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
        &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
      },
    },
    &quot;desiredPrivateClusterConfig&quot;: { # Configuration options for private clusters. # The desired private cluster configuration.
      &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
      &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
      &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
        &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
      },
      &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
      &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
      &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
      &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
    },
    &quot;desiredPrivateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services.
    &quot;desiredReleaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # The desired release channel configuration.
      &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
    },
    &quot;desiredResourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # The desired configuration for exporting resource usage.
      &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
        &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
      },
      &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
        &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
      },
      &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
    },
    &quot;desiredShieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Configuration for Shielded Nodes.
      &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
    },
    &quot;desiredVerticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
      &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
    },
    &quot;desiredWorkloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for Workload Identity.
      &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
    },
  },
  &quot;zone&quot;: &quot;A String&quot;, # 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 the 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>