:mod:`airflow.contrib.hooks.gcp_bigtable_hook`
==============================================

.. py:module:: airflow.contrib.hooks.gcp_bigtable_hook


Module Contents
---------------

.. py:class:: BigtableHook(gcp_conn_id='google_cloud_default', delegate_to=None)

   Bases: :class:`airflow.contrib.hooks.gcp_api_base_hook.GoogleCloudBaseHook`

   Hook for Google Cloud Bigtable APIs.

   All the methods in the hook where project_id is used must be called with
   keyword arguments rather than positional.

   .. attribute:: _client
      

      

   
   .. method:: _get_client(self, project_id)



   
   .. method:: get_instance(self, instance_id, project_id=None)

      Retrieves and returns the specified Cloud Bigtable instance if it exists.
      Otherwise, returns None.

      :param instance_id: The ID of the Cloud Bigtable instance.
      :type instance_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          BigTable exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str



   
   .. method:: delete_instance(self, instance_id, project_id=None)

      Deletes the specified Cloud Bigtable instance.
      Raises google.api_core.exceptions.NotFound if the Cloud Bigtable instance does
      not exist.

      :param project_id: Optional, Google Cloud Platform project ID where the
          BigTable exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :param instance_id: The ID of the Cloud Bigtable instance.
      :type instance_id: str



   
   .. method:: create_instance(self, instance_id, main_cluster_id, main_cluster_zone, project_id=None, replica_cluster_id=None, replica_cluster_zone=None, instance_display_name=None, instance_type=enums.Instance.Type.TYPE_UNSPECIFIED, instance_labels=None, cluster_nodes=None, cluster_storage_type=enums.StorageType.STORAGE_TYPE_UNSPECIFIED, timeout=None)

      Creates new instance.

      :type instance_id: str
      :param instance_id: The ID for the new instance.
      :type main_cluster_id: str
      :param main_cluster_id: The ID for main cluster for the new instance.
      :type main_cluster_zone: str
      :param main_cluster_zone: The zone for main cluster.
          See https://cloud.google.com/bigtable/docs/locations for more details.
      :type project_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          BigTable exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type replica_cluster_id: str
      :param replica_cluster_id: (optional) The ID for replica cluster for the new
          instance.
      :type replica_cluster_zone: str
      :param replica_cluster_zone: (optional)  The zone for replica cluster.
      :type instance_type: enums.Instance.Type
      :param instance_type: (optional) The type of the instance.
      :type instance_display_name: str
      :param instance_display_name: (optional) Human-readable name of the instance.
              Defaults to ``instance_id``.
      :type instance_labels: dict
      :param instance_labels: (optional) Dictionary of labels to associate with the
          instance.
      :type cluster_nodes: int
      :param cluster_nodes: (optional) Number of nodes for cluster.
      :type cluster_storage_type: enums.StorageType
      :param cluster_storage_type: (optional) The type of storage.
      :type timeout: int
      :param timeout: (optional) timeout (in seconds) for instance creation.
                      If None is not specified, Operator will wait indefinitely.



   
   .. staticmethod:: create_table(instance, table_id, initial_split_keys=None, column_families=None)

      Creates the specified Cloud Bigtable table.
      Raises ``google.api_core.exceptions.AlreadyExists`` if the table exists.

      :type instance: Instance
      :param instance: The Cloud Bigtable instance that owns the table.
      :type table_id: str
      :param table_id: The ID of the table to create in Cloud Bigtable.
      :type initial_split_keys: list
      :param initial_split_keys: (Optional) A list of row keys in bytes to use to
          initially split the table.
      :type column_families: dict
      :param column_families: (Optional) A map of columns to create. The key is the
          column_id str, and the value is a
          :class:`google.cloud.bigtable.column_family.GarbageCollectionRule`.



   
   .. method:: delete_table(self, instance_id, table_id, project_id=None)

      Deletes the specified table in Cloud Bigtable.
      Raises google.api_core.exceptions.NotFound if the table does not exist.

      :type instance_id: str
      :param instance_id: The ID of the Cloud Bigtable instance.
      :type table_id: str
      :param table_id: The ID of the table in Cloud Bigtable.
      :type project_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          BigTable exists. If set to None or missing,
          the default project_id from the GCP connection is used.



   
   .. staticmethod:: update_cluster(instance, cluster_id, nodes)

      Updates number of nodes in the specified Cloud Bigtable cluster.
      Raises google.api_core.exceptions.NotFound if the cluster does not exist.

      :type instance: Instance
      :param instance: The Cloud Bigtable instance that owns the cluster.
      :type cluster_id: str
      :param cluster_id: The ID of the cluster.
      :type nodes: int
      :param nodes: The desired number of nodes.



   
   .. staticmethod:: get_column_families_for_table(instance, table_id)

      Fetches Column Families for the specified table in Cloud Bigtable.

      :type instance: Instance
      :param instance: The Cloud Bigtable instance that owns the table.
      :type table_id: str
      :param table_id: The ID of the table in Cloud Bigtable to fetch Column Families
          from.



   
   .. staticmethod:: get_cluster_states_for_table(instance, table_id)

      Fetches Cluster States for the specified table in Cloud Bigtable.
      Raises google.api_core.exceptions.NotFound if the table does not exist.

      :type instance: Instance
      :param instance: The Cloud Bigtable instance that owns the table.
      :type table_id: str
      :param table_id: The ID of the table in Cloud Bigtable to fetch Cluster States
          from.




