Пример #1
0
 def __init__(self,
              location,
              body,
              project_id=None,
              gcp_conn_id='google_cloud_default',
              api_version='v1',
              zip_path=None,
              validate_body=True,
              *args,
              **kwargs):
     self.project_id = project_id
     self.location = location
     self.body = body
     self.gcp_conn_id = gcp_conn_id
     self.api_version = api_version
     self.zip_path = zip_path
     self.zip_path_preprocessor = ZipPathPreprocessor(body, zip_path)
     self._field_validator = None
     if validate_body:
         self._field_validator = GcpBodyFieldValidator(
             CLOUD_FUNCTION_VALIDATION, api_version=api_version)
     self._hook = GcfHook(gcp_conn_id=self.gcp_conn_id,
                          api_version=self.api_version)
     self._validate_inputs()
     super().__init__(*args, **kwargs)
Пример #2
0
 def execute(self, context):
     hook = GcfHook(gcp_conn_id=self.gcp_conn_id, api_version=self.api_version)
     if self.zip_path_preprocessor.should_upload_function():
         self.body[GCF_SOURCE_UPLOAD_URL] = self._upload_source_code(hook)
     self._validate_all_body_fields()
     self._set_airflow_version_label()
     if not self._check_if_function_exists(hook):
         self._create_new_function(hook)
     else:
         self._update_function(hook)
Пример #3
0
 def execute(self, context):
     hook = GcfHook(gcp_conn_id=self.gcp_conn_id, api_version=self.api_version)
     try:
         return hook.delete_function(self.name)
     except HttpError as e:
         status = e.resp.status
         if status == 404:
             self.log.info('The function does not exist in this project')
         else:
             self.log.error('An error occurred. Exiting.')
             raise e
Пример #4
0
 def execute(self, context: Dict):
     hook = GcfHook(api_version=self.api_version, gcp_conn_id=self.gcp_conn_id)
     self.log.info('Calling function %s.', self.function_id)
     result = hook.call_function(
         function_id=self.function_id,
         input_data=self.input_data,
         location=self.location,
         project_id=self.project_id
     )
     self.log.info('Function called successfully. Execution id %s', result.get('executionId', None))
     self.xcom_push(context=context, key='execution_id', value=result.get('executionId', None))
     return result
Пример #5
0
 def __init__(self,
              name,
              gcp_conn_id='google_cloud_default',
              api_version='v1',
              *args,
              **kwargs):
     self.name = name
     self.gcp_conn_id = gcp_conn_id
     self.api_version = api_version
     self._validate_inputs()
     self.hook = GcfHook(gcp_conn_id=self.gcp_conn_id,
                         api_version=self.api_version)
     super().__init__(*args, **kwargs)
Пример #6
0
 def setUp(self):
     with mock.patch(
             'airflow.contrib.hooks.gcp_api_base_hook.GoogleCloudBaseHook.__init__',
             new=mock_base_gcp_hook_no_default_project_id):
         self.gcf_function_hook_no_project_id = GcfHook(gcp_conn_id='test',
                                                        api_version='v1')