<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="tpu_v2alpha1.html">Cloud TPU API</a> . <a href="tpu_v2alpha1.projects.html">projects</a> . <a href="tpu_v2alpha1.projects.locations.html">locations</a> . <a href="tpu_v2alpha1.projects.locations.nodes.html">nodes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, nodeId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a node.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a node.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of a node.</p>
<p class="toc_element">
  <code><a href="#getGuestAttributes">getGuestAttributes(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the guest attributes for the node.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists nodes.</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(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the configurations of a node.</p>
<p class="toc_element">
  <code><a href="#start">start(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a node.</p>
<p class="toc_element">
  <code><a href="#stop">stop(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stops a node. This operation is only available with single TPU nodes.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

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

Args:
  parent: string, Required. The parent resource name. (required)
  body: object, The request body.
    The object takes the form of:

{ # A TPU instance.
  &quot;acceleratorType&quot;: &quot;A String&quot;, # Required. The type of hardware accelerators associated with this node.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Output only. The API version that created this Node.
  &quot;cidrBlock&quot;: &quot;A String&quot;, # The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user&#x27;s provided network, or the provided network is peered with another network that is using that CIDR block.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the node was created.
  &quot;dataDisks&quot;: [ # The additional data disks for the Node.
    { # A node-attached disk resource. Next ID: 8;
      &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.
      &quot;sourceDisk&quot;: &quot;A String&quot;, # Specifies the full path to an existing disk. For example: &quot;projects/my-project/zones/us-central1-c/disks/my-disk&quot;.
    },
  ],
  &quot;description&quot;: &quot;A String&quot;, # The user-supplied description of the TPU. Maximum of 512 characters.
  &quot;health&quot;: &quot;A String&quot;, # The health status of the TPU node.
  &quot;healthDescription&quot;: &quot;A String&quot;, # Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The unique identifier for the TPU Node.
  &quot;labels&quot;: { # Resource labels to represent user-provided metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;metadata&quot;: { # Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Immutable. The name of the TPU.
  &quot;networkConfig&quot;: { # Network related configurations. # Network configurations for the TPU node.
    &quot;enableExternalIps&quot;: True or False, # Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled.
    &quot;network&quot;: &quot;A String&quot;, # The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, &quot;default&quot; will be used.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, &quot;default&quot; will be used.
  },
  &quot;networkEndpoints&quot;: [ # Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.
    { # A network endpoint over which a TPU worker can be reached.
      &quot;accessConfig&quot;: { # An access config attached to the TPU worker. # The access config for the TPU worker.
        &quot;externalIp&quot;: &quot;A String&quot;, # Output only. An external IP address associated with the TPU worker.
      },
      &quot;ipAddress&quot;: &quot;A String&quot;, # The internal IP address of this network endpoint.
      &quot;port&quot;: 42, # The port of this network endpoint.
    },
  ],
  &quot;runtimeVersion&quot;: &quot;A String&quot;, # Required. The runtime version running in the Node.
  &quot;schedulingConfig&quot;: { # Sets the scheduling options for this node. # The scheduling options for this node.
    &quot;preemptible&quot;: True or False, # Defines whether the node is preemptible.
    &quot;reserved&quot;: True or False, # Whether the node is created under a reservation.
  },
  &quot;serviceAccount&quot;: { # A service account. # The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used.
    &quot;email&quot;: &quot;A String&quot;, # Email address of the service account. If empty, default Compute service account will be used.
    &quot;scope&quot;: [ # The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state for the TPU Node.
  &quot;symptoms&quot;: [ # Output only. The Symptoms that have occurred to the TPU Node.
    { # A Symptom instance.
      &quot;createTime&quot;: &quot;A String&quot;, # Timestamp when the Symptom is created.
      &quot;details&quot;: &quot;A String&quot;, # Detailed information of the current Symptom.
      &quot;symptomType&quot;: &quot;A String&quot;, # Type of the Symptom.
      &quot;workerId&quot;: &quot;A String&quot;, # A string used to uniquely distinguish a worker within a TPU node.
    },
  ],
  &quot;tags&quot;: [ # Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.
    &quot;A String&quot;,
  ],
}

  nodeId: string, The unqualified resource name.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a node.

Args:
  name: string, Required. The resource 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.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the details of a node.

Args:
  name: string, Required. The resource name. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A TPU instance.
  &quot;acceleratorType&quot;: &quot;A String&quot;, # Required. The type of hardware accelerators associated with this node.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Output only. The API version that created this Node.
  &quot;cidrBlock&quot;: &quot;A String&quot;, # The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user&#x27;s provided network, or the provided network is peered with another network that is using that CIDR block.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the node was created.
  &quot;dataDisks&quot;: [ # The additional data disks for the Node.
    { # A node-attached disk resource. Next ID: 8;
      &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.
      &quot;sourceDisk&quot;: &quot;A String&quot;, # Specifies the full path to an existing disk. For example: &quot;projects/my-project/zones/us-central1-c/disks/my-disk&quot;.
    },
  ],
  &quot;description&quot;: &quot;A String&quot;, # The user-supplied description of the TPU. Maximum of 512 characters.
  &quot;health&quot;: &quot;A String&quot;, # The health status of the TPU node.
  &quot;healthDescription&quot;: &quot;A String&quot;, # Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The unique identifier for the TPU Node.
  &quot;labels&quot;: { # Resource labels to represent user-provided metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;metadata&quot;: { # Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Immutable. The name of the TPU.
  &quot;networkConfig&quot;: { # Network related configurations. # Network configurations for the TPU node.
    &quot;enableExternalIps&quot;: True or False, # Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled.
    &quot;network&quot;: &quot;A String&quot;, # The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, &quot;default&quot; will be used.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, &quot;default&quot; will be used.
  },
  &quot;networkEndpoints&quot;: [ # Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.
    { # A network endpoint over which a TPU worker can be reached.
      &quot;accessConfig&quot;: { # An access config attached to the TPU worker. # The access config for the TPU worker.
        &quot;externalIp&quot;: &quot;A String&quot;, # Output only. An external IP address associated with the TPU worker.
      },
      &quot;ipAddress&quot;: &quot;A String&quot;, # The internal IP address of this network endpoint.
      &quot;port&quot;: 42, # The port of this network endpoint.
    },
  ],
  &quot;runtimeVersion&quot;: &quot;A String&quot;, # Required. The runtime version running in the Node.
  &quot;schedulingConfig&quot;: { # Sets the scheduling options for this node. # The scheduling options for this node.
    &quot;preemptible&quot;: True or False, # Defines whether the node is preemptible.
    &quot;reserved&quot;: True or False, # Whether the node is created under a reservation.
  },
  &quot;serviceAccount&quot;: { # A service account. # The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used.
    &quot;email&quot;: &quot;A String&quot;, # Email address of the service account. If empty, default Compute service account will be used.
    &quot;scope&quot;: [ # The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state for the TPU Node.
  &quot;symptoms&quot;: [ # Output only. The Symptoms that have occurred to the TPU Node.
    { # A Symptom instance.
      &quot;createTime&quot;: &quot;A String&quot;, # Timestamp when the Symptom is created.
      &quot;details&quot;: &quot;A String&quot;, # Detailed information of the current Symptom.
      &quot;symptomType&quot;: &quot;A String&quot;, # Type of the Symptom.
      &quot;workerId&quot;: &quot;A String&quot;, # A string used to uniquely distinguish a worker within a TPU node.
    },
  ],
  &quot;tags&quot;: [ # Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="getGuestAttributes">getGuestAttributes(name, body=None, x__xgafv=None)</code>
  <pre>Retrieves the guest attributes for the node.

Args:
  name: string, Required. The resource name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for GetGuestAttributes.
  &quot;queryPath&quot;: &quot;A String&quot;, # The guest attributes path to be queried.
  &quot;workerIds&quot;: [ # The 0-based worker ID. If it is empty, all workers&#x27; GuestAttributes will be returned.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # Response for GetGuestAttributes.
  &quot;guestAttributes&quot;: [ # The guest attributes for the TPU workers.
    { # A guest attributes.
      &quot;queryPath&quot;: &quot;A String&quot;, # The path to be queried. This can be the default namespace (&#x27;/&#x27;) or a nested namespace (&#x27;/\/&#x27;) or a specified key (&#x27;/\/\&#x27;)
      &quot;queryValue&quot;: { # Array of guest attribute namespace/key/value tuples. # The value of the requested queried path.
        &quot;items&quot;: [ # The list of guest attributes entries.
          { # A guest attributes namespace/key/value entry.
            &quot;key&quot;: &quot;A String&quot;, # Key for the guest attribute entry.
            &quot;namespace&quot;: &quot;A String&quot;, # Namespace for the guest attribute entry.
            &quot;value&quot;: &quot;A String&quot;, # Value for the guest attribute entry.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists nodes.

Args:
  parent: string, Required. The parent resource name. (required)
  pageSize: integer, The maximum number of items to return.
  pageToken: string, The next_page_token value returned from a previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ListNodes.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The next page token or empty if none.
  &quot;nodes&quot;: [ # The listed nodes.
    { # A TPU instance.
      &quot;acceleratorType&quot;: &quot;A String&quot;, # Required. The type of hardware accelerators associated with this node.
      &quot;apiVersion&quot;: &quot;A String&quot;, # Output only. The API version that created this Node.
      &quot;cidrBlock&quot;: &quot;A String&quot;, # The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user&#x27;s provided network, or the provided network is peered with another network that is using that CIDR block.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the node was created.
      &quot;dataDisks&quot;: [ # The additional data disks for the Node.
        { # A node-attached disk resource. Next ID: 8;
          &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.
          &quot;sourceDisk&quot;: &quot;A String&quot;, # Specifies the full path to an existing disk. For example: &quot;projects/my-project/zones/us-central1-c/disks/my-disk&quot;.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The user-supplied description of the TPU. Maximum of 512 characters.
      &quot;health&quot;: &quot;A String&quot;, # The health status of the TPU node.
      &quot;healthDescription&quot;: &quot;A String&quot;, # Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.
      &quot;id&quot;: &quot;A String&quot;, # Output only. The unique identifier for the TPU Node.
      &quot;labels&quot;: { # Resource labels to represent user-provided metadata.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;metadata&quot;: { # Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. Immutable. The name of the TPU.
      &quot;networkConfig&quot;: { # Network related configurations. # Network configurations for the TPU node.
        &quot;enableExternalIps&quot;: True or False, # Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled.
        &quot;network&quot;: &quot;A String&quot;, # The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, &quot;default&quot; will be used.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, &quot;default&quot; will be used.
      },
      &quot;networkEndpoints&quot;: [ # Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.
        { # A network endpoint over which a TPU worker can be reached.
          &quot;accessConfig&quot;: { # An access config attached to the TPU worker. # The access config for the TPU worker.
            &quot;externalIp&quot;: &quot;A String&quot;, # Output only. An external IP address associated with the TPU worker.
          },
          &quot;ipAddress&quot;: &quot;A String&quot;, # The internal IP address of this network endpoint.
          &quot;port&quot;: 42, # The port of this network endpoint.
        },
      ],
      &quot;runtimeVersion&quot;: &quot;A String&quot;, # Required. The runtime version running in the Node.
      &quot;schedulingConfig&quot;: { # Sets the scheduling options for this node. # The scheduling options for this node.
        &quot;preemptible&quot;: True or False, # Defines whether the node is preemptible.
        &quot;reserved&quot;: True or False, # Whether the node is created under a reservation.
      },
      &quot;serviceAccount&quot;: { # A service account. # The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used.
        &quot;email&quot;: &quot;A String&quot;, # Email address of the service account. If empty, default Compute service account will be used.
        &quot;scope&quot;: [ # The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed.
          &quot;A String&quot;,
        ],
      },
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current state for the TPU Node.
      &quot;symptoms&quot;: [ # Output only. The Symptoms that have occurred to the TPU Node.
        { # A Symptom instance.
          &quot;createTime&quot;: &quot;A String&quot;, # Timestamp when the Symptom is created.
          &quot;details&quot;: &quot;A String&quot;, # Detailed information of the current Symptom.
          &quot;symptomType&quot;: &quot;A String&quot;, # Type of the Symptom.
          &quot;workerId&quot;: &quot;A String&quot;, # A string used to uniquely distinguish a worker within a TPU node.
        },
      ],
      &quot;tags&quot;: [ # Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the configurations of a node.

Args:
  name: string, Output only. Immutable. The name of the TPU. (required)
  body: object, The request body.
    The object takes the form of:

{ # A TPU instance.
  &quot;acceleratorType&quot;: &quot;A String&quot;, # Required. The type of hardware accelerators associated with this node.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Output only. The API version that created this Node.
  &quot;cidrBlock&quot;: &quot;A String&quot;, # The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user&#x27;s provided network, or the provided network is peered with another network that is using that CIDR block.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the node was created.
  &quot;dataDisks&quot;: [ # The additional data disks for the Node.
    { # A node-attached disk resource. Next ID: 8;
      &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.
      &quot;sourceDisk&quot;: &quot;A String&quot;, # Specifies the full path to an existing disk. For example: &quot;projects/my-project/zones/us-central1-c/disks/my-disk&quot;.
    },
  ],
  &quot;description&quot;: &quot;A String&quot;, # The user-supplied description of the TPU. Maximum of 512 characters.
  &quot;health&quot;: &quot;A String&quot;, # The health status of the TPU node.
  &quot;healthDescription&quot;: &quot;A String&quot;, # Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The unique identifier for the TPU Node.
  &quot;labels&quot;: { # Resource labels to represent user-provided metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;metadata&quot;: { # Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Immutable. The name of the TPU.
  &quot;networkConfig&quot;: { # Network related configurations. # Network configurations for the TPU node.
    &quot;enableExternalIps&quot;: True or False, # Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled.
    &quot;network&quot;: &quot;A String&quot;, # The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, &quot;default&quot; will be used.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, &quot;default&quot; will be used.
  },
  &quot;networkEndpoints&quot;: [ # Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.
    { # A network endpoint over which a TPU worker can be reached.
      &quot;accessConfig&quot;: { # An access config attached to the TPU worker. # The access config for the TPU worker.
        &quot;externalIp&quot;: &quot;A String&quot;, # Output only. An external IP address associated with the TPU worker.
      },
      &quot;ipAddress&quot;: &quot;A String&quot;, # The internal IP address of this network endpoint.
      &quot;port&quot;: 42, # The port of this network endpoint.
    },
  ],
  &quot;runtimeVersion&quot;: &quot;A String&quot;, # Required. The runtime version running in the Node.
  &quot;schedulingConfig&quot;: { # Sets the scheduling options for this node. # The scheduling options for this node.
    &quot;preemptible&quot;: True or False, # Defines whether the node is preemptible.
    &quot;reserved&quot;: True or False, # Whether the node is created under a reservation.
  },
  &quot;serviceAccount&quot;: { # A service account. # The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used.
    &quot;email&quot;: &quot;A String&quot;, # Email address of the service account. If empty, default Compute service account will be used.
    &quot;scope&quot;: [ # The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state for the TPU Node.
  &quot;symptoms&quot;: [ # Output only. The Symptoms that have occurred to the TPU Node.
    { # A Symptom instance.
      &quot;createTime&quot;: &quot;A String&quot;, # Timestamp when the Symptom is created.
      &quot;details&quot;: &quot;A String&quot;, # Detailed information of the current Symptom.
      &quot;symptomType&quot;: &quot;A String&quot;, # Type of the Symptom.
      &quot;workerId&quot;: &quot;A String&quot;, # A string used to uniquely distinguish a worker within a TPU node.
    },
  ],
  &quot;tags&quot;: [ # Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.
    &quot;A String&quot;,
  ],
}

  updateMask: string, Required. Mask of fields from Node to update. Supported fields: [description, tags, labels, metadata, network_config.enable_external_ips].
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="start">start(name, body=None, x__xgafv=None)</code>
  <pre>Starts a node.

Args:
  name: string, The resource name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for StartNode.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="stop">stop(name, body=None, x__xgafv=None)</code>
  <pre>Stops a node. This operation is only available with single TPU nodes.

Args:
  name: string, The resource name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for StopNode.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>