<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="dataproc_v1.html">Cloud Dataproc API</a> . <a href="dataproc_v1.projects.html">projects</a> . <a href="dataproc_v1.projects.regions.html">regions</a> . <a href="dataproc_v1.projects.regions.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, region, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, region, clusterName, requestId=None, clusterUuid=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).</p>
<p class="toc_element">
  <code><a href="#diagnose">diagnose(projectId, region, clusterName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets cluster diagnostic information. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata). After the operation completes, Operation.response contains DiagnoseClusterResults (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#diagnoseclusterresults).</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, region, clusterName, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the resource representation for a cluster in a project.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, region, pageSize=None, pageToken=None, filter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all regions/{region}/clusters in a project alphabetically.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(projectId, region, clusterName, body=None, gracefulDecommissionTimeout=None, updateMask=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, region, body=None, requestId=None, x__xgafv=None)</code>
  <pre>Creates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes the identifying information, config, and status of a cluster of Compute Engine instances.
    &quot;metrics&quot;: { # Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. # Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;yarnMetrics&quot;: { # The YARN metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;hdfsMetrics&quot;: { # The HDFS metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
    &quot;statusHistory&quot;: [ # Output only. The previous cluster status.
      { # The status of a cluster and its instances.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
      },
    ],
    &quot;labels&quot;: { # Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;status&quot;: { # The status of a cluster and its instances. # Output only. Cluster status.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
      &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
    &quot;config&quot;: { # The cluster config. # Required. The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated.
      &quot;securityConfig&quot;: { # Security related configuration, including Kerberos. # Optional. Security settings for the cluster.
        &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
          &quot;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &quot;crossRealmTrustRealm&quot;: &quot;A String&quot;, # Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.
          &quot;truststoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
          &quot;crossRealmTrustSharedPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.
          &quot;keystoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
          &quot;kdcDbKeyUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.
          &quot;keystorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.
          &quot;enableKerberos&quot;: True or False, # Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.
          &quot;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
          &quot;truststorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.
          &quot;crossRealmTrustAdminServer&quot;: &quot;A String&quot;, # Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &quot;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
          &quot;realm&quot;: &quot;A String&quot;, # Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.
          &quot;keyPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.
          &quot;tgtLifetimeHours&quot;: 42, # Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.
        },
      },
      &quot;workerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for worker instances in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
        &quot;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
        &quot;httpPorts&quot;: { # Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;secondaryWorkerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for additional worker instances in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. Lifecycle setting for the cluster.
        &quot;autoDeleteTime&quot;: &quot;A String&quot;, # Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;autoDeleteTtl&quot;: &quot;A String&quot;, # Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;idleStartTime&quot;: &quot;A String&quot;, # Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;idleDeleteTtl&quot;: &quot;A String&quot;, # Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json).
      },
      &quot;encryptionConfig&quot;: { # Encryption settings for the cluster. # Optional. Encryption settings for the cluster.
        &quot;gcePdKmsKeyName&quot;: &quot;A String&quot;, # Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.
      },
      &quot;autoscalingConfig&quot;: { # Autoscaling Policy config associated with the cluster. # Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.
        &quot;policyUri&quot;: &quot;A String&quot;, # Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region.
      },
      &quot;configBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)).
      &quot;masterConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for the master instance in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;initializationActions&quot;: [ # Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node&#x27;s role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ &quot;${ROLE}&quot; == &#x27;Master&#x27; ]]; then ... master specific actions ... else ... worker specific actions ... fi
        { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
          &quot;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
          &quot;executionTimeout&quot;: &quot;A String&quot;, # Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
        },
      ],
      &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
        &quot;optionalComponents&quot;: [ # Optional. The set of components to activate on the cluster.
          &quot;A String&quot;,
        ],
        &quot;imageVersion&quot;: &quot;A String&quot;, # Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as &quot;1.2&quot; (including a subminor version, such as &quot;1.2.29&quot;), or the &quot;preview&quot; version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.
        &quot;properties&quot;: { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;gceClusterConfig&quot;: { # Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster. # Optional. The shared Compute Engine config settings for all instances in a cluster.
        &quot;subnetworkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0
        &quot;internalIpOnly&quot;: True or False, # Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
        &quot;metadata&quot;: { # The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
        &quot;nodeGroupAffinity&quot;: { # Node Group Affinity for clusters using sole-tenant node groups. # Optional. Node Group Affinity for sole-tenant clusters.
          &quot;nodeGroupUri&quot;: &quot;A String&quot;, # Required. The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1
        },
        &quot;networkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the &quot;default&quot; network of the project is used, if it exists. Cannot be a &quot;Custom Subnet Network&quot; (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default
        &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
        &quot;tags&quot;: [ # The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
          &quot;A String&quot;,
        ],
        &quot;reservationAffinity&quot;: { # Reservation Affinity for consuming Zonal reservation. # Optional. Reservation Affinity for consuming Zonal reservation.
          &quot;values&quot;: [ # Optional. Corresponds to the label values of reservation resource.
            &quot;A String&quot;,
          ],
          &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
          &quot;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
        },
        &quot;zoneUri&quot;: &quot;A String&quot;, # Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the &quot;global&quot; region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f
        &quot;serviceAccountScopes&quot;: [ # Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control
          &quot;A String&quot;,
        ],
      },
      &quot;tempBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket.
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
  }

  requestId: string, Optional. A unique id used to identify the request. If the server receives two CreateClusterRequest requests with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &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 or cancellation.
      &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;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, region, clusterName, requestId=None, clusterUuid=None, x__xgafv=None)</code>
  <pre>Deletes a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  requestId: string, Optional. A unique id used to identify the request. If the server receives two DeleteClusterRequest requests with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  clusterUuid: string, Optional. Specifying the cluster_uuid means the RPC should fail (with error NOT_FOUND) if cluster with specified UUID does not exist.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &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 or cancellation.
      &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;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  }</pre>
</div>

<div class="method">
    <code class="details" id="diagnose">diagnose(projectId, region, clusterName, body=None, x__xgafv=None)</code>
  <pre>Gets cluster diagnostic information. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata). After the operation completes, Operation.response contains DiagnoseClusterResults (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#diagnoseclusterresults).

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to collect cluster diagnostic information.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &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 or cancellation.
      &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;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, region, clusterName, x__xgafv=None)</code>
  <pre>Gets the resource representation for a cluster in a project.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes the identifying information, config, and status of a cluster of Compute Engine instances.
      &quot;metrics&quot;: { # Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. # Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        &quot;yarnMetrics&quot;: { # The YARN metrics.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;hdfsMetrics&quot;: { # The HDFS metrics.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
      &quot;statusHistory&quot;: [ # Output only. The previous cluster status.
        { # The status of a cluster and its instances.
          &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
          &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
          &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
          &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
        },
      ],
      &quot;labels&quot;: { # Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;status&quot;: { # The status of a cluster and its instances. # Output only. Cluster status.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
      },
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
      &quot;config&quot;: { # The cluster config. # Required. The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated.
        &quot;securityConfig&quot;: { # Security related configuration, including Kerberos. # Optional. Security settings for the cluster.
          &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
            &quot;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
            &quot;crossRealmTrustRealm&quot;: &quot;A String&quot;, # Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.
            &quot;truststoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
            &quot;crossRealmTrustSharedPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.
            &quot;keystoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
            &quot;kdcDbKeyUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.
            &quot;keystorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.
            &quot;enableKerberos&quot;: True or False, # Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.
            &quot;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
            &quot;truststorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.
            &quot;crossRealmTrustAdminServer&quot;: &quot;A String&quot;, # Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
            &quot;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
            &quot;realm&quot;: &quot;A String&quot;, # Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.
            &quot;keyPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.
            &quot;tgtLifetimeHours&quot;: 42, # Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.
          },
        },
        &quot;workerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for worker instances in a cluster.
          &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
            &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
            &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
          },
          &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            },
          ],
          &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
          &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
            { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
              &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
              &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
            },
          ],
          &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
            &quot;A String&quot;,
          ],
          &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
            &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          },
          &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
          &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
          &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
        },
        &quot;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
          &quot;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
          &quot;httpPorts&quot;: { # Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;secondaryWorkerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for additional worker instances in a cluster.
          &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
            &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
            &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
          },
          &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            },
          ],
          &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
          &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
            { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
              &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
              &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
            },
          ],
          &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
            &quot;A String&quot;,
          ],
          &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
            &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          },
          &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
          &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
          &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
        },
        &quot;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. Lifecycle setting for the cluster.
          &quot;autoDeleteTime&quot;: &quot;A String&quot;, # Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
          &quot;autoDeleteTtl&quot;: &quot;A String&quot;, # Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).
          &quot;idleStartTime&quot;: &quot;A String&quot;, # Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
          &quot;idleDeleteTtl&quot;: &quot;A String&quot;, # Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json).
        },
        &quot;encryptionConfig&quot;: { # Encryption settings for the cluster. # Optional. Encryption settings for the cluster.
          &quot;gcePdKmsKeyName&quot;: &quot;A String&quot;, # Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.
        },
        &quot;autoscalingConfig&quot;: { # Autoscaling Policy config associated with the cluster. # Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.
          &quot;policyUri&quot;: &quot;A String&quot;, # Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region.
        },
        &quot;configBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)).
        &quot;masterConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for the master instance in a cluster.
          &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
            &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
            &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
          },
          &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            },
          ],
          &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
          &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
            { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
              &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
              &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
            },
          ],
          &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
            &quot;A String&quot;,
          ],
          &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
            &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          },
          &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
          &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
          &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
        },
        &quot;initializationActions&quot;: [ # Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node&#x27;s role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ &quot;${ROLE}&quot; == &#x27;Master&#x27; ]]; then ... master specific actions ... else ... worker specific actions ... fi
          { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
            &quot;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
            &quot;executionTimeout&quot;: &quot;A String&quot;, # Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
          },
        ],
        &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
          &quot;optionalComponents&quot;: [ # Optional. The set of components to activate on the cluster.
            &quot;A String&quot;,
          ],
          &quot;imageVersion&quot;: &quot;A String&quot;, # Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as &quot;1.2&quot; (including a subminor version, such as &quot;1.2.29&quot;), or the &quot;preview&quot; version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.
          &quot;properties&quot;: { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;gceClusterConfig&quot;: { # Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster. # Optional. The shared Compute Engine config settings for all instances in a cluster.
          &quot;subnetworkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0
          &quot;internalIpOnly&quot;: True or False, # Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
          &quot;metadata&quot;: { # The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
          &quot;nodeGroupAffinity&quot;: { # Node Group Affinity for clusters using sole-tenant node groups. # Optional. Node Group Affinity for sole-tenant clusters.
            &quot;nodeGroupUri&quot;: &quot;A String&quot;, # Required. The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1
          },
          &quot;networkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the &quot;default&quot; network of the project is used, if it exists. Cannot be a &quot;Custom Subnet Network&quot; (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default
          &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
          &quot;tags&quot;: [ # The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
            &quot;A String&quot;,
          ],
          &quot;reservationAffinity&quot;: { # Reservation Affinity for consuming Zonal reservation. # Optional. Reservation Affinity for consuming Zonal reservation.
            &quot;values&quot;: [ # Optional. Corresponds to the label values of reservation resource.
              &quot;A String&quot;,
            ],
            &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
            &quot;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
          },
          &quot;zoneUri&quot;: &quot;A String&quot;, # Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the &quot;global&quot; region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f
          &quot;serviceAccountScopes&quot;: [ # Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control
            &quot;A String&quot;,
          ],
        },
        &quot;tempBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket.
      },
      &quot;clusterName&quot;: &quot;A String&quot;, # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
    }</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for GetIamPolicy method.
    &quot;options&quot;: { # Encapsulates settings provided to GetIamPolicy. # OPTIONAL: A GetPolicyOptions object for specifying options to GetIamPolicy.
      &quot;requestedPolicyVersion&quot;: 42, # Optional. The policy format version to be returned.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/).
    &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
      { # Associates members with a role.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        },
        &quot;bindingId&quot;: &quot;A String&quot;,
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, region, pageSize=None, pageToken=None, filter=None, x__xgafv=None)</code>
  <pre>Lists all regions/{region}/clusters in a project alphabetically.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  pageSize: integer, Optional. The standard List page size.
  pageToken: string, Optional. The standard List page token.
  filter: string, Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The list of all clusters in a project.
    &quot;clusters&quot;: [ # Output only. The clusters in the project.
      { # Describes the identifying information, config, and status of a cluster of Compute Engine instances.
          &quot;metrics&quot;: { # Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. # Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
            &quot;yarnMetrics&quot;: { # The YARN metrics.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;hdfsMetrics&quot;: { # The HDFS metrics.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
          &quot;statusHistory&quot;: [ # Output only. The previous cluster status.
            { # The status of a cluster and its instances.
              &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
              &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
              &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
              &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
            },
          ],
          &quot;labels&quot;: { # Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;status&quot;: { # The status of a cluster and its instances. # Output only. Cluster status.
            &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
            &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
            &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
            &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
          },
          &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
          &quot;config&quot;: { # The cluster config. # Required. The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated.
            &quot;securityConfig&quot;: { # Security related configuration, including Kerberos. # Optional. Security settings for the cluster.
              &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
                &quot;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
                &quot;crossRealmTrustRealm&quot;: &quot;A String&quot;, # Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.
                &quot;truststoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
                &quot;crossRealmTrustSharedPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.
                &quot;keystoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
                &quot;kdcDbKeyUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.
                &quot;keystorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.
                &quot;enableKerberos&quot;: True or False, # Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.
                &quot;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
                &quot;truststorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.
                &quot;crossRealmTrustAdminServer&quot;: &quot;A String&quot;, # Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
                &quot;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
                &quot;realm&quot;: &quot;A String&quot;, # Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.
                &quot;keyPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.
                &quot;tgtLifetimeHours&quot;: 42, # Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.
              },
            },
            &quot;workerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for worker instances in a cluster.
              &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
                &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
                &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
              },
              &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                },
              ],
              &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
              &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
                { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
                  &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
                  &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
                },
              ],
              &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
                &quot;A String&quot;,
              ],
              &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
                &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
              },
              &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
              &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
            },
            &quot;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
              &quot;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
              &quot;httpPorts&quot;: { # Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;secondaryWorkerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for additional worker instances in a cluster.
              &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
                &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
                &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
              },
              &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                },
              ],
              &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
              &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
                { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
                  &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
                  &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
                },
              ],
              &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
                &quot;A String&quot;,
              ],
              &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
                &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
              },
              &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
              &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
            },
            &quot;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. Lifecycle setting for the cluster.
              &quot;autoDeleteTime&quot;: &quot;A String&quot;, # Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
              &quot;autoDeleteTtl&quot;: &quot;A String&quot;, # Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).
              &quot;idleStartTime&quot;: &quot;A String&quot;, # Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
              &quot;idleDeleteTtl&quot;: &quot;A String&quot;, # Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json).
            },
            &quot;encryptionConfig&quot;: { # Encryption settings for the cluster. # Optional. Encryption settings for the cluster.
              &quot;gcePdKmsKeyName&quot;: &quot;A String&quot;, # Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.
            },
            &quot;autoscalingConfig&quot;: { # Autoscaling Policy config associated with the cluster. # Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.
              &quot;policyUri&quot;: &quot;A String&quot;, # Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region.
            },
            &quot;configBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)).
            &quot;masterConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for the master instance in a cluster.
              &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
                &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
                &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
              },
              &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                },
              ],
              &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
              &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
                { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
                  &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
                  &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
                },
              ],
              &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
                &quot;A String&quot;,
              ],
              &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
                &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
              },
              &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
              &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
            },
            &quot;initializationActions&quot;: [ # Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node&#x27;s role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ &quot;${ROLE}&quot; == &#x27;Master&#x27; ]]; then ... master specific actions ... else ... worker specific actions ... fi
              { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
                &quot;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
                &quot;executionTimeout&quot;: &quot;A String&quot;, # Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
              },
            ],
            &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
              &quot;optionalComponents&quot;: [ # Optional. The set of components to activate on the cluster.
                &quot;A String&quot;,
              ],
              &quot;imageVersion&quot;: &quot;A String&quot;, # Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as &quot;1.2&quot; (including a subminor version, such as &quot;1.2.29&quot;), or the &quot;preview&quot; version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.
              &quot;properties&quot;: { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;gceClusterConfig&quot;: { # Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster. # Optional. The shared Compute Engine config settings for all instances in a cluster.
              &quot;subnetworkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0
              &quot;internalIpOnly&quot;: True or False, # Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
              &quot;metadata&quot;: { # The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
              &quot;nodeGroupAffinity&quot;: { # Node Group Affinity for clusters using sole-tenant node groups. # Optional. Node Group Affinity for sole-tenant clusters.
                &quot;nodeGroupUri&quot;: &quot;A String&quot;, # Required. The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1
              },
              &quot;networkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the &quot;default&quot; network of the project is used, if it exists. Cannot be a &quot;Custom Subnet Network&quot; (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default
              &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
              &quot;tags&quot;: [ # The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
                &quot;A String&quot;,
              ],
              &quot;reservationAffinity&quot;: { # Reservation Affinity for consuming Zonal reservation. # Optional. Reservation Affinity for consuming Zonal reservation.
                &quot;values&quot;: [ # Optional. Corresponds to the label values of reservation resource.
                  &quot;A String&quot;,
                ],
                &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
                &quot;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
              },
              &quot;zoneUri&quot;: &quot;A String&quot;, # Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the &quot;global&quot; region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f
              &quot;serviceAccountScopes&quot;: [ # Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control
                &quot;A String&quot;,
              ],
            },
            &quot;tempBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket.
          },
          &quot;clusterName&quot;: &quot;A String&quot;, # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
        },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Output only. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent ListClustersRequest.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(projectId, region, clusterName, body=None, gracefulDecommissionTimeout=None, updateMask=None, requestId=None, x__xgafv=None)</code>
  <pre>Updates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project the cluster belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes the identifying information, config, and status of a cluster of Compute Engine instances.
    &quot;metrics&quot;: { # Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release. # Output only. Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;yarnMetrics&quot;: { # The YARN metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;hdfsMetrics&quot;: { # The HDFS metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
    &quot;statusHistory&quot;: [ # Output only. The previous cluster status.
      { # The status of a cluster and its instances.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
      },
    ],
    &quot;labels&quot;: { # Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;status&quot;: { # The status of a cluster and its instances. # Output only. Cluster status.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
      &quot;detail&quot;: &quot;A String&quot;, # Optional. Output only. Details of cluster&#x27;s state.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
    &quot;config&quot;: { # The cluster config. # Required. The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated.
      &quot;securityConfig&quot;: { # Security related configuration, including Kerberos. # Optional. Security settings for the cluster.
        &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
          &quot;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &quot;crossRealmTrustRealm&quot;: &quot;A String&quot;, # Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.
          &quot;truststoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
          &quot;crossRealmTrustSharedPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.
          &quot;keystoreUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.
          &quot;kdcDbKeyUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.
          &quot;keystorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.
          &quot;enableKerberos&quot;: True or False, # Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.
          &quot;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
          &quot;truststorePasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.
          &quot;crossRealmTrustAdminServer&quot;: &quot;A String&quot;, # Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &quot;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
          &quot;realm&quot;: &quot;A String&quot;, # Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.
          &quot;keyPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.
          &quot;tgtLifetimeHours&quot;: 42, # Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.
        },
      },
      &quot;workerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for worker instances in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
        &quot;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
        &quot;httpPorts&quot;: { # Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;secondaryWorkerConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for additional worker instances in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. Lifecycle setting for the cluster.
        &quot;autoDeleteTime&quot;: &quot;A String&quot;, # Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;autoDeleteTtl&quot;: &quot;A String&quot;, # Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;idleStartTime&quot;: &quot;A String&quot;, # Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json)).
        &quot;idleDeleteTtl&quot;: &quot;A String&quot;, # Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json).
      },
      &quot;encryptionConfig&quot;: { # Encryption settings for the cluster. # Optional. Encryption settings for the cluster.
        &quot;gcePdKmsKeyName&quot;: &quot;A String&quot;, # Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.
      },
      &quot;autoscalingConfig&quot;: { # Autoscaling Policy config associated with the cluster. # Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.
        &quot;policyUri&quot;: &quot;A String&quot;, # Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region.
      },
      &quot;configBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)).
      &quot;masterConfig&quot;: { # The config settings for Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Compute Engine config settings for the master instance in a cluster.
        &quot;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &quot;numLocalSsds&quot;: 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          &quot;bootDiskSizeGb&quot;: 42, # Optional. Size in GB of the boot disk (default is 500GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Optional. Type of the boot disk (default is &quot;pd-standard&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
          },
        ],
        &quot;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &quot;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &quot;machineTypeUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2.
        &quot;accelerators&quot;: [ # Optional. The Compute Engine accelerator configuration for these instances.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).
            &quot;acceleratorCount&quot;: 42, # The number of the accelerator cards of this type exposed to this instance.
            &quot;acceleratorTypeUri&quot;: &quot;A String&quot;, # Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes).Examples: https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80.
          },
        ],
        &quot;instanceNames&quot;: [ # Output only. The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group.
          &quot;A String&quot;,
        ],
        &quot;managedGroupConfig&quot;: { # Specifies the resources used to actively manage an instance group. # Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          &quot;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
        },
        &quot;preemptibility&quot;: &quot;A String&quot;, # Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -&gt; Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).
        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default.
      },
      &quot;initializationActions&quot;: [ # Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node&#x27;s role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ &quot;${ROLE}&quot; == &#x27;Master&#x27; ]]; then ... master specific actions ... else ... worker specific actions ... fi
        { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
          &quot;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
          &quot;executionTimeout&quot;: &quot;A String&quot;, # Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
        },
      ],
      &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
        &quot;optionalComponents&quot;: [ # Optional. The set of components to activate on the cluster.
          &quot;A String&quot;,
        ],
        &quot;imageVersion&quot;: &quot;A String&quot;, # Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as &quot;1.2&quot; (including a subminor version, such as &quot;1.2.29&quot;), or the &quot;preview&quot; version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.
        &quot;properties&quot;: { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;gceClusterConfig&quot;: { # Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster. # Optional. The shared Compute Engine config settings for all instances in a cluster.
        &quot;subnetworkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0
        &quot;internalIpOnly&quot;: True or False, # Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
        &quot;metadata&quot;: { # The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
        &quot;nodeGroupAffinity&quot;: { # Node Group Affinity for clusters using sole-tenant node groups. # Optional. Node Group Affinity for sole-tenant clusters.
          &quot;nodeGroupUri&quot;: &quot;A String&quot;, # Required. The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1
        },
        &quot;networkUri&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the &quot;default&quot; network of the project is used, if it exists. Cannot be a &quot;Custom Subnet Network&quot; (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default
        &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
        &quot;tags&quot;: [ # The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
          &quot;A String&quot;,
        ],
        &quot;reservationAffinity&quot;: { # Reservation Affinity for consuming Zonal reservation. # Optional. Reservation Affinity for consuming Zonal reservation.
          &quot;values&quot;: [ # Optional. Corresponds to the label values of reservation resource.
            &quot;A String&quot;,
          ],
          &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
          &quot;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
        },
        &quot;zoneUri&quot;: &quot;A String&quot;, # Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the &quot;global&quot; region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f
        &quot;serviceAccountScopes&quot;: [ # Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control
          &quot;A String&quot;,
        ],
      },
      &quot;tempBucket&quot;: &quot;A String&quot;, # Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster&#x27;s temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket.
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
  }

  gracefulDecommissionTimeout: string, Optional. Timeout for graceful YARN decomissioning. Graceful decommissioning allows removing nodes from the cluster without interrupting jobs in progress. Timeout specifies how long to wait for jobs in progress to finish before forcefully removing nodes (and potentially interrupting jobs). Default timeout is 0 (for forceful decommission), and the maximum allowed timeout is 1 day. (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Only supported on Dataproc image versions 1.2 and higher.
  updateMask: string, Required. Specifies the path, relative to Cluster, of the field to update. For example, to change the number of workers in a cluster to 5, the update_mask parameter would be specified as config.worker_config.num_instances, and the PATCH request body would specify the new value, as follows: { &quot;config&quot;:{ &quot;workerConfig&quot;:{ &quot;numInstances&quot;:&quot;5&quot; } } } Similarly, to change the number of preemptible workers in a cluster to 5, the update_mask parameter would be config.secondary_worker_config.num_instances, and the PATCH request body would be set as follows: { &quot;config&quot;:{ &quot;secondaryWorkerConfig&quot;:{ &quot;numInstances&quot;:&quot;5&quot; } } } *Note:* Currently, only the following fields can be updated: *Mask* *Purpose* *labels* Update labels *config.worker_config.num_instances* Resize primary worker group *config.secondary_worker_config.num_instances* Resize secondary worker group config.autoscaling_config.policy_uri Use, stop using, or change autoscaling policies 
  requestId: string, Optional. A unique id used to identify the request. If the server receives two UpdateClusterRequest requests with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &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 or cancellation.
      &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;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SetIamPolicy method.
    &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
      &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
      &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
        { # Associates members with a role.
          &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          },
          &quot;bindingId&quot;: &quot;A String&quot;,
          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
          &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/).
    &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
      { # Associates members with a role.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        },
        &quot;bindingId&quot;: &quot;A String&quot;,
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for TestIamPermissions method.
    &quot;permissions&quot;: [ # The set of permissions to check for the resource. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more information see IAM Overview (https://cloud.google.com/iam/docs/overview#permissions).
      &quot;A String&quot;,
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for TestIamPermissions method.
    &quot;permissions&quot;: [ # A subset of TestPermissionsRequest.permissions that the caller is allowed.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

</body></html>