Skip to content

Latest commit

 

History

History
181 lines (126 loc) · 7.07 KB

File metadata and controls

181 lines (126 loc) · 7.07 KB

Cluster Admin API

After creating a :class:`Client <gcloud.bigtable.client.Client>`, you can interact with individual clusters, groups of clusters or available zones for a project.

List Clusters

If you want a comprehensive list of all existing clusters, make a ListClusters API request with :meth:`Client.list_clusters() <gcloud.bigtable.client.Client.list_clusters>`:

clusters = client.list_clusters()

List Zones

If you aren't sure which zone to create a cluster in, find out which zones your project has access to with a ListZones API request with :meth:`Client.list_zones() <gcloud.bigtable.client.Client.list_zones>`:

zones = client.list_zones()

You can choose a :class:`string <str>` from among the result to pass to the :class:`Cluster <gcloud.bigtable.cluster.Cluster>` constructor.

The available zones (as of February 2016) are

>>> zones
[u'asia-east1-b', u'europe-west1-c', u'us-central1-c', u'us-central1-b']

Cluster Factory

To create a :class:`Cluster <gcloud.bigtable.cluster.Cluster>` object:

cluster = client.cluster(zone, cluster_id,
                         display_name=display_name,
                         serve_nodes=3)

Both display_name and serve_nodes are optional. When not provided, display_name defaults to the cluster_id value and serve_nodes defaults to the minimum allowed: :data:`DEFAULT_SERVE_NODES <gcloud.bigtable.cluster.DEFAULT_SERVE_NODES>`.

Even if this :class:`Cluster <gcloud.bigtable.cluster.Cluster>` already has been created with the API, you'll want this object to use as a parent of a :class:`Table <gcloud.bigtable.table.Table>` just as the :class:`Client <gcloud.bigtable.client.Client>` is used as the parent of a :class:`Cluster <gcloud.bigtable.cluster.Cluster>`.

Create a new Cluster

After creating the cluster object, make a CreateCluster API request with :meth:`create() <gcloud.bigtable.cluster.Cluster.create>`:

cluster.display_name = 'My very own cluster'
cluster.create()

If you would like more than the minimum number of nodes (:data:`DEFAULT_SERVE_NODES <gcloud.bigtable.cluster.DEFAULT_SERVE_NODES>`) in your cluster:

cluster.serve_nodes = 10
cluster.create()

Check on Current Operation

You can check if a long-running operation (for a :meth:`create() <gcloud.bigtable.cluster.Cluster.create>`, :meth:`update() <gcloud.bigtable.cluster.Cluster.update>` or :meth:`undelete() <gcloud.bigtable.cluster.Cluster.undelete>`) has finished by making a GetOperation request with :meth:`Operation.finished() <gcloud.bigtable.cluster.Operation.finished>`:

>>> operation = cluster.create()
>>> operation.finished()
True

Get metadata for an existing Cluster

After creating the cluster object, make a GetCluster API request with :meth:`reload() <gcloud.bigtable.cluster.Cluster.reload>`:

cluster.reload()

This will load serve_nodes and display_name for the existing cluster in addition to the cluster_id, zone and project already set on the :class:`Cluster <gcloud.bigtable.cluster.Cluster>` object.

Update an existing Cluster

After creating the cluster object, make an UpdateCluster API request with :meth:`update() <gcloud.bigtable.cluster.Cluster.update>`:

client.display_name = 'New display_name'
cluster.update()

Delete an existing Cluster

Make a DeleteCluster API request with :meth:`delete() <gcloud.bigtable.cluster.Cluster.delete>`:

cluster.delete()

Undelete a deleted Cluster

Make an UndeleteCluster API request with :meth:`undelete() <gcloud.bigtable.cluster.Cluster.undelete>`:

cluster.undelete()

Next Step

Now we go down the hierarchy from :class:`Cluster <gcloud.bigtable.cluster.Cluster>` to a :class:`Table <gcloud.bigtable.table.Table>`.

Head next to learn about the :doc:`bigtable-table-api`.