<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dataproc_v1.html">Google Cloud Dataproc API</a> . <a href="dataproc_v1.projects.html">projects</a> . <a href="dataproc_v1.projects.regions.html">regions</a> . <a href="dataproc_v1.projects.regions.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(projectId, region, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster in a project.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, region, clusterName, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a cluster in a project.</p>
<p class="toc_element">
  <code><a href="#diagnose">diagnose(projectId, region, clusterName, body, x__xgafv=None)</a></code></p>
<p class="firstline">Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.</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="#list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all regions/{region}/clusters in a project.</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, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a cluster in a project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(projectId, region, body, x__xgafv=None)</code>
  <pre>Creates 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 Cloud Dataproc region in which to handle the request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
  "status": { # The status of a cluster and its instances. # Output-only. Cluster status.
    "state": "A String", # Output-only. The cluster's state.
    "stateStartTime": "A String", # Output-only. Time when this state was entered.
    "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
    "detail": "A String", # Output-only. Optional details of cluster's state.
  },
  "clusterUuid": "A String", # Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
  "clusterName": "A String", # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
  "projectId": "A String", # Required. The Google Cloud Platform project ID that the cluster belongs to.
  "labels": { # 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.
    "a_key": "A String",
  },
  "metrics": { # 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. # 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.
    "yarnMetrics": { # The YARN metrics.
      "a_key": "A String",
    },
    "hdfsMetrics": { # The HDFS metrics.
      "a_key": "A String",
    },
  },
  "statusHistory": [ # Output-only. The previous cluster status.
    { # The status of a cluster and its instances.
      "state": "A String", # Output-only. The cluster's state.
      "stateStartTime": "A String", # Output-only. Time when this state was entered.
      "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
      "detail": "A String", # Output-only. Optional details of cluster's state.
    },
  ],
  "config": { # The cluster config. # Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
    "softwareConfig": { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
      "imageVersion": "A String", # Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).
      "properties": { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. 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.xml
        "a_key": "A String",
      },
    },
    "configBucket": "A String", # Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
    "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # Required. The shared Google Compute Engine config settings for all instances in a cluster.
      "internalIpOnly": 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.
      "networkUri": "A String", # Optional. The Google 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 "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see Using Subnetworks for more information). Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default.
      "tags": [ # The Google Compute Engine tags to add to all instances (see Tagging instances).
        "A String",
      ],
      "serviceAccount": "A String", # Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:
          # roles/logging.logWriter
          # roles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com
      "zoneUri": "A String", # Required. The zone where the Google Compute Engine cluster will be located. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone].
      "subnetworkUri": "A String", # Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0.
      "serviceAccountScopes": [ # Optional. The URIs of service account scopes to be included in Google 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
        "A String",
      ],
      "metadata": { # The Google 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)).
        "a_key": "A String",
      },
    },
    "workerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for worker instances in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
    "initializationActions": [ # 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's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):
        # ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)
        # if [[ "${ROLE}" == 'Master' ]]; 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.
        "executionTimeout": "A String", # Optional. Amount of time executable has to complete. Default is 10 minutes. 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.
        "executableFile": "A String", # Required. Google Cloud Storage URI of executable file.
      },
    ],
    "secondaryWorkerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for additional worker instances in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
    "masterConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for the master instance in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
  },
}

  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.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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 have the format of operations/some/unique/name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, region, clusterName, x__xgafv=None)</code>
  <pre>Deletes 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 Cloud 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:

    { # This resource represents a long-running operation that is the result of a network API call.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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 have the format of operations/some/unique/name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="diagnose">diagnose(projectId, region, clusterName, body, x__xgafv=None)</code>
  <pre>Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the cluster belongs to. (required)
  region: string, Required. The Cloud Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  body: object, The request body. (required)
    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.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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 have the format of operations/some/unique/name.
  }</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 Cloud 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 Google Compute Engine instances.
    "status": { # The status of a cluster and its instances. # Output-only. Cluster status.
      "state": "A String", # Output-only. The cluster's state.
      "stateStartTime": "A String", # Output-only. Time when this state was entered.
      "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
      "detail": "A String", # Output-only. Optional details of cluster's state.
    },
    "clusterUuid": "A String", # Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
    "clusterName": "A String", # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
    "projectId": "A String", # Required. The Google Cloud Platform project ID that the cluster belongs to.
    "labels": { # 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.
      "a_key": "A String",
    },
    "metrics": { # 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. # 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.
      "yarnMetrics": { # The YARN metrics.
        "a_key": "A String",
      },
      "hdfsMetrics": { # The HDFS metrics.
        "a_key": "A String",
      },
    },
    "statusHistory": [ # Output-only. The previous cluster status.
      { # The status of a cluster and its instances.
        "state": "A String", # Output-only. The cluster's state.
        "stateStartTime": "A String", # Output-only. Time when this state was entered.
        "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
        "detail": "A String", # Output-only. Optional details of cluster's state.
      },
    ],
    "config": { # The cluster config. # Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
      "softwareConfig": { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
        "imageVersion": "A String", # Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).
        "properties": { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. 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.xml
          "a_key": "A String",
        },
      },
      "configBucket": "A String", # Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
      "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # Required. The shared Google Compute Engine config settings for all instances in a cluster.
        "internalIpOnly": 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.
        "networkUri": "A String", # Optional. The Google 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 "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see Using Subnetworks for more information). Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default.
        "tags": [ # The Google Compute Engine tags to add to all instances (see Tagging instances).
          "A String",
        ],
        "serviceAccount": "A String", # Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:
            # roles/logging.logWriter
            # roles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com
        "zoneUri": "A String", # Required. The zone where the Google Compute Engine cluster will be located. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone].
        "subnetworkUri": "A String", # Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0.
        "serviceAccountScopes": [ # Optional. The URIs of service account scopes to be included in Google 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
          "A String",
        ],
        "metadata": { # The Google 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)).
          "a_key": "A String",
        },
      },
      "workerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for worker instances in a cluster.
        "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
        "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
          "A String",
        ],
        "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
        "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
          "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
        },
        "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
            "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
            "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
          },
        ],
        "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
        },
      },
      "initializationActions": [ # 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's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):
          # ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)
          # if [[ "${ROLE}" == 'Master' ]]; 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.
          "executionTimeout": "A String", # Optional. Amount of time executable has to complete. Default is 10 minutes. 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.
          "executableFile": "A String", # Required. Google Cloud Storage URI of executable file.
        },
      ],
      "secondaryWorkerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for additional worker instances in a cluster.
        "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
        "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
          "A String",
        ],
        "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
        "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
          "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
        },
        "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
            "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
            "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
          },
        ],
        "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
        },
      },
      "masterConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for the master instance in a cluster.
        "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
        "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
        "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
          "A String",
        ],
        "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
        "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
          "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
          "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
        },
        "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
          { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
            "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
            "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
          },
        ],
        "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
          "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
          "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
        },
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all regions/{region}/clusters 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 Cloud Dataproc region in which to handle the request. (required)
  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 = *
  pageToken: string, Optional. The standard List page token.
  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.
    "nextPageToken": "A String", # 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.
    "clusters": [ # Output-only. The clusters in the project.
      { # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
        "status": { # The status of a cluster and its instances. # Output-only. Cluster status.
          "state": "A String", # Output-only. The cluster's state.
          "stateStartTime": "A String", # Output-only. Time when this state was entered.
          "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
          "detail": "A String", # Output-only. Optional details of cluster's state.
        },
        "clusterUuid": "A String", # Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
        "clusterName": "A String", # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
        "projectId": "A String", # Required. The Google Cloud Platform project ID that the cluster belongs to.
        "labels": { # 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.
          "a_key": "A String",
        },
        "metrics": { # 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. # 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.
          "yarnMetrics": { # The YARN metrics.
            "a_key": "A String",
          },
          "hdfsMetrics": { # The HDFS metrics.
            "a_key": "A String",
          },
        },
        "statusHistory": [ # Output-only. The previous cluster status.
          { # The status of a cluster and its instances.
            "state": "A String", # Output-only. The cluster's state.
            "stateStartTime": "A String", # Output-only. Time when this state was entered.
            "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
            "detail": "A String", # Output-only. Optional details of cluster's state.
          },
        ],
        "config": { # The cluster config. # Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
          "softwareConfig": { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
            "imageVersion": "A String", # Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).
            "properties": { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. 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.xml
              "a_key": "A String",
            },
          },
          "configBucket": "A String", # Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
          "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # Required. The shared Google Compute Engine config settings for all instances in a cluster.
            "internalIpOnly": 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.
            "networkUri": "A String", # Optional. The Google 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 "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see Using Subnetworks for more information). Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default.
            "tags": [ # The Google Compute Engine tags to add to all instances (see Tagging instances).
              "A String",
            ],
            "serviceAccount": "A String", # Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:
                # roles/logging.logWriter
                # roles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com
            "zoneUri": "A String", # Required. The zone where the Google Compute Engine cluster will be located. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone].
            "subnetworkUri": "A String", # Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0.
            "serviceAccountScopes": [ # Optional. The URIs of service account scopes to be included in Google 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
              "A String",
            ],
            "metadata": { # The Google 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)).
              "a_key": "A String",
            },
          },
          "workerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for worker instances in a cluster.
            "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
            "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
            "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
              "A String",
            ],
            "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
            "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
              "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
              "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
            },
            "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
              { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
                "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
                "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
              },
            ],
            "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
              "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
              "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
            },
          },
          "initializationActions": [ # 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's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):
              # ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)
              # if [[ "${ROLE}" == 'Master' ]]; 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.
              "executionTimeout": "A String", # Optional. Amount of time executable has to complete. Default is 10 minutes. 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.
              "executableFile": "A String", # Required. Google Cloud Storage URI of executable file.
            },
          ],
          "secondaryWorkerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for additional worker instances in a cluster.
            "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
            "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
            "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
              "A String",
            ],
            "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
            "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
              "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
              "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
            },
            "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
              { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
                "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
                "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
              },
            ],
            "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
              "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
              "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
            },
          },
          "masterConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for the master instance in a cluster.
            "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
            "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
            "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
              "A String",
            ],
            "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
            "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
              "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
              "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
            },
            "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
              { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
                "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
                "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
              },
            ],
            "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
              "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
              "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
            },
          },
        },
      },
    ],
  }</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 'execute()' 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, updateMask=None, x__xgafv=None)</code>
  <pre>Updates 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 Cloud Dataproc region in which to handle the request. (required)
  clusterName: string, Required. The cluster name. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
  "status": { # The status of a cluster and its instances. # Output-only. Cluster status.
    "state": "A String", # Output-only. The cluster's state.
    "stateStartTime": "A String", # Output-only. Time when this state was entered.
    "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
    "detail": "A String", # Output-only. Optional details of cluster's state.
  },
  "clusterUuid": "A String", # Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
  "clusterName": "A String", # Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
  "projectId": "A String", # Required. The Google Cloud Platform project ID that the cluster belongs to.
  "labels": { # 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.
    "a_key": "A String",
  },
  "metrics": { # 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. # 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.
    "yarnMetrics": { # The YARN metrics.
      "a_key": "A String",
    },
    "hdfsMetrics": { # The HDFS metrics.
      "a_key": "A String",
    },
  },
  "statusHistory": [ # Output-only. The previous cluster status.
    { # The status of a cluster and its instances.
      "state": "A String", # Output-only. The cluster's state.
      "stateStartTime": "A String", # Output-only. Time when this state was entered.
      "substate": "A String", # Output-only. Additional state information that includes status reported by the agent.
      "detail": "A String", # Output-only. Optional details of cluster's state.
    },
  ],
  "config": { # The cluster config. # Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
    "softwareConfig": { # Specifies the selection and config of software inside the cluster. # Optional. The config settings for software inside the cluster.
      "imageVersion": "A String", # Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).
      "properties": { # Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. 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.xml
        "a_key": "A String",
      },
    },
    "configBucket": "A String", # Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
    "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # Required. The shared Google Compute Engine config settings for all instances in a cluster.
      "internalIpOnly": 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.
      "networkUri": "A String", # Optional. The Google 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 "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see Using Subnetworks for more information). Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default.
      "tags": [ # The Google Compute Engine tags to add to all instances (see Tagging instances).
        "A String",
      ],
      "serviceAccount": "A String", # Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:
          # roles/logging.logWriter
          # roles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com
      "zoneUri": "A String", # Required. The zone where the Google Compute Engine cluster will be located. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone].
      "subnetworkUri": "A String", # Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0.
      "serviceAccountScopes": [ # Optional. The URIs of service account scopes to be included in Google 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
        "A String",
      ],
      "metadata": { # The Google 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)).
        "a_key": "A String",
      },
    },
    "workerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for worker instances in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
    "initializationActions": [ # 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's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):
        # ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)
        # if [[ "${ROLE}" == 'Master' ]]; 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.
        "executionTimeout": "A String", # Optional. Amount of time executable has to complete. Default is 10 minutes. 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.
        "executableFile": "A String", # Required. Google Cloud Storage URI of executable file.
      },
    ],
    "secondaryWorkerConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for additional worker instances in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
    "masterConfig": { # Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # Optional. The Google Compute Engine config settings for the master instance in a cluster.
      "numInstances": 42, # Required. The number of VM instances in the instance group. For master instance groups, must be set to 1.
      "machineTypeUri": "A String", # Required. The Google Compute Engine machine type used for cluster instances. Example: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2.
      "instanceNames": [ # Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
        "A String",
      ],
      "imageUri": "A String", # Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.
      "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
        "instanceTemplateName": "A String", # Output-only. The name of the Instance Template used for the Managed Instance Group.
        "instanceGroupManagerName": "A String", # Output-only. The name of the Instance Group Manager for this group.
      },
      "accelerators": [ # Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.
        { # Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).
          "acceleratorCount": 42, # The number of the accelerator cards of this type exposed to this instance.
          "acceleratorTypeUri": "A String", # Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)
        },
      ],
      "isPreemptible": True or False, # Optional. Specifies that this instance group contains preemptible instances.
      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Optional. Disk option config settings.
        "numLocalSsds": 42, # Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
        "bootDiskSizeGb": 42, # Optional. Size in GB of the boot disk (default is 500GB).
      },
    },
  },
}

  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:
{
  "config":{
    "workerConfig":{
      "numInstances":"5"
    }
  }
}
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:
{
  "config":{
    "secondaryWorkerConfig":{
      "numInstances":"5"
    }
  }
}
<strong>Note:</strong> Currently, only the following fields can be updated:<table>  <tbody>  <tr>  <td><strong>Mask</strong></td>  <td><strong>Purpose</strong></td>  </tr>  <tr>  <td><strong><em>labels</em></strong></td>  <td>Update labels</td>  </tr>  <tr>  <td><strong><em>config.worker_config.num_instances</em></strong></td>  <td>Resize primary worker group</td>  </tr>  <tr>  <td><strong><em>config.secondary_worker_config.num_instances</em></strong></td>  <td>Resize secondary worker group</td>  </tr>  </tbody>  </table>
  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.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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 have the format of operations/some/unique/name.
  }</pre>
</div>

</body></html>