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)
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)
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
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
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)
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')