コード例 #1
0
class CloudSqlBaseOperator(BaseOperator):
    """
    Abstract base operator for Google Cloud SQL operators to inherit from.

    :param project_id: Project ID of the Google Cloud Platform project to operate it.
    :type project_id: str
    :param instance: Cloud SQL instance ID. This does not include the project ID.
    :type instance: str
    :param gcp_conn_id: The connection ID used to connect to Google Cloud Platform.
    :type gcp_conn_id: str
    :param api_version: API version used (e.g. v1beta4).
    :type api_version: str
    """
    @apply_defaults
    def __init__(self,
                 project_id,
                 instance,
                 gcp_conn_id='google_cloud_default',
                 api_version='v1beta4',
                 *args, **kwargs):
        self.project_id = project_id
        self.instance = instance
        self.gcp_conn_id = gcp_conn_id
        self.api_version = api_version
        self._validate_inputs()
        self._hook = CloudSqlHook(gcp_conn_id=self.gcp_conn_id,
                                  api_version=self.api_version)
        super(CloudSqlBaseOperator, self).__init__(*args, **kwargs)

    def _validate_inputs(self):
        if not self.project_id:
            raise AirflowException("The required parameter 'project_id' is empty")
        if not self.instance:
            raise AirflowException("The required parameter 'instance' is empty")

    def _check_if_instance_exists(self, instance):
        try:
            return self._hook.get_instance(self.project_id, instance)
        except HttpError as e:
            status = e.resp.status
            if status == 404:
                return False
            raise e

    def _check_if_db_exists(self, db_name):
        try:
            return self._hook.get_database(self.project_id, self.instance, db_name)
        except HttpError as e:
            status = e.resp.status
            if status == 404:
                return False
            raise e

    def execute(self, context):
        pass

    @staticmethod
    def _get_settings_version(instance):
        return instance.get(SETTINGS).get(SETTINGS_VERSION)
コード例 #2
0
 def test_instance_export_ex(self):
     # Mocking __init__ with an empty anonymous function
     with mock.patch.object(CloudSqlHook, "__init__", lambda x, y, z: None):
         hook = CloudSqlHook(None, None)
         # Simulating HttpError inside export_instance
         hook.get_conn = mock.Mock(
             side_effect=HttpError(resp={'status': '400'},
                                   content='Error content'.encode('utf-8')))
         with self.assertRaises(AirflowException) as cm:
             hook.export_instance(None, None, None)
         err = cm.exception
         self.assertIn("Exporting instance ", str(err))
コード例 #3
0
 def test_instance_export_ex(self):
     # Mocking __init__ with an empty anonymous function
     with mock.patch.object(CloudSqlHook, "__init__", lambda x, y, z: None):
         hook = CloudSqlHook(None, None)
         # Simulating HttpError inside export_instance
         hook.get_conn = mock.Mock(
             side_effect=HttpError(resp={'status': '400'},
                                   content='Error content'.encode('utf-8'))
         )
         with self.assertRaises(AirflowException) as cm:
             hook.export_instance(None, None, None)
         err = cm.exception
         self.assertIn("Exporting instance ", str(err))
コード例 #4
0
 def __init__(self,
              instance,
              project_id=None,
              gcp_conn_id='google_cloud_default',
              api_version='v1beta4',
              *args, **kwargs):
     self.project_id = project_id
     self.instance = instance
     self.gcp_conn_id = gcp_conn_id
     self.api_version = api_version
     self._validate_inputs()
     self._hook = CloudSqlHook(gcp_conn_id=self.gcp_conn_id,
                               api_version=self.api_version)
     super().__init__(*args, **kwargs)
コード例 #5
0
class CloudSqlBaseOperator(BaseOperator):
    """
    Abstract base operator for Google Cloud SQL operators to inherit from.

    :param project_id: Project ID of the Google Cloud Platform project to operate it.
    :type project_id: str
    :param instance: Cloud SQL instance ID. This does not include the project ID.
    :type instance: str
    :param gcp_conn_id: The connection ID used to connect to Google Cloud Platform.
    :type gcp_conn_id: str
    :param api_version: API version used (e.g. v1).
    :type api_version: str
    """
    @apply_defaults
    def __init__(self,
                 project_id,
                 instance,
                 gcp_conn_id='google_cloud_default',
                 api_version='v1beta4',
                 *args,
                 **kwargs):
        self.project_id = project_id
        self.instance = instance
        self.gcp_conn_id = gcp_conn_id
        self.api_version = api_version
        self._validate_inputs()
        self._hook = CloudSqlHook(gcp_conn_id=self.gcp_conn_id,
                                  api_version=self.api_version)
        super(CloudSqlBaseOperator, self).__init__(*args, **kwargs)

    def _validate_inputs(self):
        if not self.project_id:
            raise AirflowException(
                "The required parameter 'project_id' is empty")
        if not self.instance:
            raise AirflowException(
                "The required parameter 'instance' is empty")

    def _check_if_instance_exists(self, instance):
        try:
            return self._hook.get_instance(self.project_id, instance)
        except HttpError as e:
            status = e.resp.status
            if status == 404:
                return False
            raise e

    def execute(self, context):
        pass

    @staticmethod
    def _get_settings_version(instance):
        return instance.get(SETTINGS).get(SETTINGS_VERSION)
コード例 #6
0
 def __init__(self,
              project_id,
              instance,
              gcp_conn_id='google_cloud_default',
              api_version='v1beta4',
              *args, **kwargs):
     self.project_id = project_id
     self.instance = instance
     self.gcp_conn_id = gcp_conn_id
     self.api_version = api_version
     self._validate_inputs()
     self._hook = CloudSqlHook(gcp_conn_id=self.gcp_conn_id,
                               api_version=self.api_version)
     super(CloudSqlBaseOperator, self).__init__(*args, **kwargs)