<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_v1beta2.html">Cloud Dataproc API</a> . <a href="dataproc_v1beta2.projects.html">projects</a> . <a href="dataproc_v1beta2.projects.regions.html">regions</a> . <a href="dataproc_v1beta2.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.v1beta2#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.v1beta2#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.v1beta2#clusteroperationmetadata). After the operation completes, Operation.response contains Empty.</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, options_requestedPolicyVersion=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, pageToken=None, pageSize=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.v1beta2#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="#start">start(projectId, region, clusterName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a cluster in a project.</p>
<p class="toc_element">
  <code><a href="#stop">stop(projectId, region, clusterName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stops a cluster in a project.</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.v1beta2#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;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;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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
      },
    ],
    &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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
      &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
    },
    &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;gkeClusterConfig&quot;: { # The GKE config for this cluster. # Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config.
        &quot;namespacedGkeDeploymentTarget&quot;: { # A full, namespace-isolated deployment target for an existing GKE cluster. # Optional. A target for the deployment.
          &quot;targetGkeCluster&quot;: &quot;A String&quot;, # Optional. The target GKE cluster to deploy to. Format: &#x27;projects/{project}/locations/{location}/clusters/{cluster_id}&#x27;
          &quot;clusterNamespace&quot;: &quot;A String&quot;, # Optional. A namespace within the GKE cluster to deploy into.
        },
      },
      &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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/v1beta2/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;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;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
        },
      ],
      &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;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;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;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;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;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;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
          &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
        },
        &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;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;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
        &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;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;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;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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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;securityConfig&quot;: { # Security related configuration, including encryption, Kerberos, etc. # Optional. Security related configuration.
        &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
          &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;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;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
          &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;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
          &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;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &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;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;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;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;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;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;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
        &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;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
      },
      &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;metastoreConfig&quot;: { # Specifies a Metastore configuration. # Optional. Metastore configuration.
        &quot;dataprocMetastoreService&quot;: &quot;A String&quot;, # Required. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]
      },
      &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
        &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;optionalComponents&quot;: [ # The set of optional 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;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;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. The config setting for auto delete cluster schedule.
        &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;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;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;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;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;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
    &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;hdfsMetrics&quot;: { # The HDFS metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;yarnMetrics&quot;: { # The YARN metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
  }

  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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</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.v1beta2#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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</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.v1beta2#clusteroperationmetadata). After the operation completes, Operation.response contains Empty.

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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</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;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;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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
          &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
          &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
        },
      ],
      &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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
      },
      &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;gkeClusterConfig&quot;: { # The GKE config for this cluster. # Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config.
          &quot;namespacedGkeDeploymentTarget&quot;: { # A full, namespace-isolated deployment target for an existing GKE cluster. # Optional. A target for the deployment.
            &quot;targetGkeCluster&quot;: &quot;A String&quot;, # Optional. The target GKE cluster to deploy to. Format: &#x27;projects/{project}/locations/{location}/clusters/{cluster_id}&#x27;
            &quot;clusterNamespace&quot;: &quot;A String&quot;, # Optional. A namespace within the GKE cluster to deploy into.
          },
        },
        &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          },
          &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            },
          ],
        },
        &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/v1beta2/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;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;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
          },
        ],
        &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;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;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;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;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;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;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
            &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
          },
          &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;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;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
          &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;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;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;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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          },
          &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            },
          ],
        },
        &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;securityConfig&quot;: { # Security related configuration, including encryption, Kerberos, etc. # Optional. Security related configuration.
          &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
            &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;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;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
            &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;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
            &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;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
            &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;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;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;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;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;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;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
          &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;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
        },
        &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;metastoreConfig&quot;: { # Specifies a Metastore configuration. # Optional. Metastore configuration.
          &quot;dataprocMetastoreService&quot;: &quot;A String&quot;, # Required. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]
        },
        &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
          &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
          &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
            &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
          },
          &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
            &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
            { # A reference to a Compute Engine instance.
              &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
              &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
            },
          ],
        },
        &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;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
          &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;optionalComponents&quot;: [ # The set of optional 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;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;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. The config setting for auto delete cluster schedule.
          &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;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;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;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;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;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
      &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;hdfsMetrics&quot;: { # The HDFS metrics.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;yarnMetrics&quot;: { # The YARN metrics.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
    }</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=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)
  options_requestedPolicyVersion: integer, 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;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;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;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        &quot;bindingId&quot;: &quot;A String&quot;,
        &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;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;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &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;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;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;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, pageToken=None, pageSize=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)
  pageToken: string, Optional. The standard List page token.
  pageSize: integer, Optional. The standard List page size.
  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;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.
    &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;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;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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
              &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
              &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
            },
          ],
          &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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
            &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
            &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
          },
          &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;gkeClusterConfig&quot;: { # The GKE config for this cluster. # Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config.
              &quot;namespacedGkeDeploymentTarget&quot;: { # A full, namespace-isolated deployment target for an existing GKE cluster. # Optional. A target for the deployment.
                &quot;targetGkeCluster&quot;: &quot;A String&quot;, # Optional. The target GKE cluster to deploy to. Format: &#x27;projects/{project}/locations/{location}/clusters/{cluster_id}&#x27;
                &quot;clusterNamespace&quot;: &quot;A String&quot;, # Optional. A namespace within the GKE cluster to deploy into.
              },
            },
            &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
              },
              &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                },
              ],
            },
            &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/v1beta2/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;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;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
              },
            ],
            &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;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;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;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;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;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;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
                &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
              },
              &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;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;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
              &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;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;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;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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
              },
              &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                },
              ],
            },
            &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;securityConfig&quot;: { # Security related configuration, including encryption, Kerberos, etc. # Optional. Security related configuration.
              &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
                &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;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;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
                &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;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
                &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;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
                &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;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;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;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;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;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;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
              &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;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
            },
            &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;metastoreConfig&quot;: { # Specifies a Metastore configuration. # Optional. Metastore configuration.
              &quot;dataprocMetastoreService&quot;: &quot;A String&quot;, # Required. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]
            },
            &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
              &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
              &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
                &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
              },
              &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
                &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
                { # A reference to a Compute Engine instance.
                  &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
                  &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
                },
              ],
            },
            &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;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
              &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;optionalComponents&quot;: [ # The set of optional 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;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;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. The config setting for auto delete cluster schedule.
              &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;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;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;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;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;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
          &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;hdfsMetrics&quot;: { # The HDFS metrics.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;yarnMetrics&quot;: { # The YARN metrics.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
        },
    ],
  }</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.v1beta2#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;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;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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
        &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
      },
    ],
    &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;state&quot;: &quot;A String&quot;, # Output only. The cluster&#x27;s state.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information that includes status reported by the agent.
      &quot;detail&quot;: &quot;A String&quot;, # Output only. Optional details of cluster&#x27;s state.
    },
    &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;gkeClusterConfig&quot;: { # The GKE config for this cluster. # Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config.
        &quot;namespacedGkeDeploymentTarget&quot;: { # A full, namespace-isolated deployment target for an existing GKE cluster. # Optional. A target for the deployment.
          &quot;targetGkeCluster&quot;: &quot;A String&quot;, # Optional. The target GKE cluster to deploy to. Format: &#x27;projects/{project}/locations/{location}/clusters/{cluster_id}&#x27;
          &quot;clusterNamespace&quot;: &quot;A String&quot;, # Optional. A namespace within the GKE cluster to deploy into.
        },
      },
      &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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/v1beta2/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;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;executableFile&quot;: &quot;A String&quot;, # Required. Cloud Storage URI of executable file.
        },
      ],
      &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;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;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;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;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;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;consumeReservationType&quot;: &quot;A String&quot;, # Optional. Type of reservation to consume
          &quot;key&quot;: &quot;A String&quot;, # Optional. Corresponds to the label key of reservation resource.
        },
        &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;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;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # Optional. The type of IPv6 access for a cluster.
        &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;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;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;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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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;securityConfig&quot;: { # Security related configuration, including encryption, Kerberos, etc. # Optional. Security related configuration.
        &quot;kerberosConfig&quot;: { # Specifies Kerberos related configuration. # Kerberos related configuration.
          &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;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;rootPrincipalPasswordUri&quot;: &quot;A String&quot;, # Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.
          &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;kmsKeyUri&quot;: &quot;A String&quot;, # Optional. The uri of the KMS key used to encrypt various sensitive files.
          &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;crossRealmTrustKdc&quot;: &quot;A String&quot;, # Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.
          &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;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;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;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;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;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;endpointConfig&quot;: { # Endpoint config for this cluster # Optional. Port/endpoint configuration for this cluster
        &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;enableHttpPortAccess&quot;: True or False, # Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.
      },
      &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;metastoreConfig&quot;: { # Specifies a Metastore configuration. # Optional. Metastore configuration.
        &quot;dataprocMetastoreService&quot;: &quot;A String&quot;, # Required. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]
      },
      &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;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;isPreemptible&quot;: True or False, # Output only. Specifies that this instance group contains preemptible instances.
        &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 group (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;minCpuPlatform&quot;: &quot;A String&quot;, # 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;numInstances&quot;: 42, # Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        &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;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;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;instanceGroupManagerName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Group Manager for this group.
          &quot;instanceTemplateName&quot;: &quot;A String&quot;, # Output only. The name of the Instance Template used for the Managed Instance Group.
        },
        &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;diskConfig&quot;: { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          &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;numLocalSsds&quot;: 42, # 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;instanceReferences&quot;: [ # Output only. List of references to Compute Engine instances.
          { # A reference to a Compute Engine instance.
            &quot;instanceName&quot;: &quot;A String&quot;, # The user-friendly name of the Compute Engine instance.
            &quot;instanceId&quot;: &quot;A String&quot;, # The unique identifier of the Compute Engine instance.
          },
        ],
      },
      &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;softwareConfig&quot;: { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
        &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;optionalComponents&quot;: [ # The set of optional 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;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;lifecycleConfig&quot;: { # Specifies the cluster auto-delete schedule configuration. # Optional. The config setting for auto delete cluster schedule.
        &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;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;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;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;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;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.
    &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;hdfsMetrics&quot;: { # The HDFS metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;yarnMetrics&quot;: { # The YARN metrics.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Cloud Platform project ID that the cluster belongs to.
  }

  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 Updates labels config.worker_config.num_instances Resize primary worker group config.secondary_worker_config.num_instances Resize secondary worker group config.lifecycle_config.auto_delete_ttl Reset MAX TTL duration config.lifecycle_config.auto_delete_time Update MAX TTL deletion timestamp config.lifecycle_config.idle_delete_ttl Update Idle TTL duration 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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</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;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;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;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
          &quot;bindingId&quot;: &quot;A String&quot;,
          &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;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;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &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;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;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;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;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;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;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        &quot;bindingId&quot;: &quot;A String&quot;,
        &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;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;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &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;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;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;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="start">start(projectId, region, clusterName, body=None, x__xgafv=None)</code>
  <pre>Starts a cluster in a project.

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:

{ # A request to start a cluster.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. A unique id used to identify the request. If the server receives two StartClusterRequest 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.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # 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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</pre>
</div>

<div class="method">
    <code class="details" id="stop">stop(projectId, region, clusterName, body=None, x__xgafv=None)</code>
  <pre>Stops a cluster in a project.

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:

{ # A request to stop a cluster.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Optional. Specifying the cluster_uuid means the RPC should fail (with error NOT_FOUND) if cluster with specified UUID does not exist.
    &quot;requestId&quot;: &quot;A String&quot;, # Optional. A unique id used to identify the request. If the server receives two StopClusterRequest 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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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.
    &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}.
  }</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>