Google Cloud Bigtable: Python¶
To use the API, the Client
class defines a high-level interface which handles authorization
and creating other objects:
from gcloud_bigtable.client import Client
cluster = Client()
This will use the Google Application Default Credentials if you don’t pass any credentials of your own.
The Cluster Admin API has been fully implemented. Create a
Cluster to get
a high-level interface to cluster management:
cluster = client.cluster(zone, cluster_id)
List Clusters¶
If you want a comprehensive list of all existing clusters, make a ListClusters request:
clusters = client.list_clusters()
This will return a list of
Cluster s.
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 request:
zones = client.list_clusters()
This will return a list of string s.
Create a new Cluster¶
After creating the cluster object, make a CreateCluster API request:
cluster.display_name = 'My very own cluster'
cluster.create()
If you would like more than the minimum number of nodes (3) in your cluster:
cluster.serve_nodes = 10
cluster.create()
Note
When modifying a cluster (via a CreateCluster, UpdateCluster or
UndeleteCluster request), the Bigtable API will return a long-running
Operation. This will be stored on the object after each of
create(),
update() and
undelete() are called.
Check on Current Operation¶
You can check if a long-running operation (for a
create(),
update() or
undelete()) has finished
by making a GetOperation request:
>>> cluster.operation_finished()
True
Note
The operation data is stored in protected fields on the
Cluster:
_operation_type, _operation_id and _operation_begin.
If these are unset, then
operation_finished()
will fail. Also, these will be removed after a long-running operation
has completed (checked via this method). We could easily surface these
properties publicly, but it’s unclear if end-users would need them.
Get metadata for an existing Cluster¶
After creating the cluster object, make a GetCluster API request:
cluster.reload()
This will load serve_nodes and display_name for the existing
cluster in addition to the cluster_id, zone and project_id
already set on the Cluster object.
Update an existing Cluster¶
After creating the cluster object, make an UpdateCluster API request:
client.display_name = 'New display_name'
cluster.update()
Undelete a deleted Cluster¶
Make a UndeleteCluster API request:
cluster.undelete()