airflow.contrib.hooks.gcp_sql_hook
¶
Module Contents¶
-
class
airflow.contrib.hooks.gcp_sql_hook.
CloudSqlHook
(api_version, gcp_conn_id='google_cloud_default', delegate_to=None)[source]¶ Bases:
airflow.contrib.hooks.gcp_api_base_hook.GoogleCloudBaseHook
Hook for Google Cloud SQL APIs.
All the methods in the hook where project_id is used must be called with keyword arguments rather than positional.
-
get_conn
(self)[source]¶ Retrieves connection to Cloud SQL.
- Returns
Google Cloud SQL services object.
- Return type
-
get_instance
(self, instance, project_id=None)[source]¶ Retrieves a resource containing information about a Cloud SQL instance.
-
create_instance
(self, body, project_id=None)[source]¶ Creates a new Cloud SQL instance.
- Parameters
body (dict) – Body required by the Cloud SQL insert API, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/insert#request-body.
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
patch_instance
(self, body, instance, project_id=None)[source]¶ Updates settings of a Cloud SQL instance.
Caution: This is not a partial update, so you must include values for all the settings that you want to retain.
- Parameters
body (dict) – Body required by the Cloud SQL patch API, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/patch#request-body.
instance (str) – Cloud SQL instance ID. This does not include the project ID.
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
get_database
(self, instance, database, project_id=None)[source]¶ Retrieves a database resource from a Cloud SQL instance.
- Parameters
- Returns
A Cloud SQL database resource, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases#resource.
- Return type
-
create_database
(self, instance, body, project_id=None)[source]¶ Creates a new database inside a Cloud SQL instance.
- Parameters
instance (str) – Database instance ID. This does not include the project ID.
body (dict) – The request body, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body.
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
patch_database
(self, instance, database, body, project_id=None)[source]¶ Updates a database resource inside a Cloud SQL instance.
This method supports patch semantics. See https://cloud.google.com/sql/docs/mysql/admin-api/how-tos/performance#patch.
- Parameters
instance (str) – Database instance ID. This does not include the project ID.
database (str) – Name of the database to be updated in the instance.
body (dict) – The request body, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body.
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
delete_database
(self, instance, database, project_id=None)[source]¶ Deletes a database from a Cloud SQL instance.
- Parameters
instance (str) – Database instance ID. This does not include the project ID.
database (str) – Name of the database to be deleted in the instance.
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
export_instance
(self, instance, body, project_id=None)[source]¶ Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.
- Parameters
instance (str) – Database instance ID of the Cloud SQL instance. This does not include the project ID.
body (dict) – The request body, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/export#request-body
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
import_instance
(self, instance, body, project_id=None)[source]¶ Imports data into a Cloud SQL instance from a SQL dump or CSV file in Cloud Storage.
- Parameters
instance (str) – Database instance ID. This does not include the project ID.
body (dict) – The request body, as described in https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/export#request-body
project_id (str) – Project ID of the project that contains the instance. If set to None or missing, the default project_id from the GCP connection is used.
- Returns
None
-
-
airflow.contrib.hooks.gcp_sql_hook.
CLOUD_SQL_PROXY_DOWNLOAD_URL
= https://dl.google.com/cloudsql/cloud_sql_proxy.{}.{}[source]¶
-
airflow.contrib.hooks.gcp_sql_hook.
CLOUD_SQL_PROXY_VERSION_DOWNLOAD_URL
= https://storage.googleapis.com/cloudsql-proxy/{}/cloud_sql_proxy.{}.{}[source]¶
-
airflow.contrib.hooks.gcp_sql_hook.
GCP_CREDENTIALS_KEY_PATH
= extra__google_cloud_platform__key_path[source]¶
-
airflow.contrib.hooks.gcp_sql_hook.
GCP_CREDENTIALS_KEYFILE_DICT
= extra__google_cloud_platform__keyfile_dict[source]¶
-
class
airflow.contrib.hooks.gcp_sql_hook.
CloudSqlProxyRunner
(path_prefix, instance_specification, gcp_conn_id='google_cloud_default', project_id=None, sql_proxy_version=None, sql_proxy_binary_path=None)[source]¶ Bases:
airflow.LoggingMixin
Downloads and runs cloud-sql-proxy as subprocess of the Python process.
The cloud-sql-proxy needs to be downloaded and started before we can connect to the Google Cloud SQL instance via database connection. It establishes secure tunnel connection to the database. It authorizes using the GCP credentials that are passed by the configuration.
More details about the proxy can be found here: https://cloud.google.com/sql/docs/mysql/sql-proxy
-
class
airflow.contrib.hooks.gcp_sql_hook.
CloudSqlDatabaseHook
(gcp_cloudsql_conn_id='google_cloud_sql_default', default_gcp_project_id=None)[source]¶ Bases:
airflow.hooks.base_hook.BaseHook
Serves DB connection configuration for Google Cloud SQL (Connections of gcpcloudsql:// type).
The hook is a “meta” one. It does not perform an actual connection. It is there to retrieve all the parameters configured in gcpcloudsql:// connection, start/stop Cloud SQL Proxy if needed, dynamically generate Postgres or MySQL connection in the database and return an actual Postgres or MySQL hook. The returned Postgres/MySQL hooks are using direct connection or Cloud SQL Proxy socket/TCP as configured.
Main parameters of the hook are retrieved from the standard URI components:
user - User name to authenticate to the database (from login of the URI).
password - Password to authenticate to the database (from password of the URI).
public_ip - IP to connect to for public connection (from host of the URI).
public_port - Port to connect to for public connection (from port of the URI).
database - Database to connect to (from schema of the URI).
Remaining parameters are retrieved from the extras (URI query parameters):
- project_id - Optional, Google Cloud Platform project where the Cloud SQL
instance exists. If missing, default project id passed is used.
instance - Name of the instance of the Cloud SQL database instance.
location - The location of the Cloud SQL instance (for example europe-west1).
database_type - The type of the database instance (MySQL or Postgres).
use_proxy - (default False) Whether SQL proxy should be used to connect to Cloud SQL DB.
use_ssl - (default False) Whether SSL should be used to connect to Cloud SQL DB. You cannot use proxy and SSL together.
sql_proxy_use_tcp - (default False) If set to true, TCP is used to connect via proxy, otherwise UNIX sockets are used.
sql_proxy_binary_path - Optional path to Cloud SQL Proxy binary. If the binary is not specified or the binary is not present, it is automatically downloaded.
sql_proxy_version - Specific version of the proxy to download (for example v1.13). If not specified, the latest version is downloaded.
sslcert - Path to client certificate to authenticate when SSL is used.
sslkey - Path to client private key to authenticate when SSL is used.
sslrootcert - Path to server’s certificate to authenticate when SSL is used.
- Parameters
-
create_connection
(self, session=None)[source]¶ Create connection in the Connection table, according to whether it uses proxy, TCP, UNIX sockets, SSL. Connection ID will be randomly generated.
- Parameters
session – Session of the SQL Alchemy ORM (automatically generated with decorator).
-
retrieve_connection
(self, session=None)[source]¶ Retrieves the dynamically created connection from the Connection table.
- Parameters
session – Session of the SQL Alchemy ORM (automatically generated with decorator).
-
delete_connection
(self, session=None)[source]¶ Delete the dynamically created connection from the Connection table.
- Parameters
session – Session of the SQL Alchemy ORM (automatically generated with decorator).
-
get_sqlproxy_runner
(self)[source]¶ Retrieve Cloud SQL Proxy runner. It is used to manage the proxy lifecycle per task.
- Returns
The Cloud SQL Proxy runner.
- Return type