Example #1
0
 def execute(self, context: "Context") -> dict:
     hook = DataprocMetastoreHook(
         gcp_conn_id=self.gcp_conn_id, impersonation_chain=self.impersonation_chain
     )
     self.log.info("Creating Dataproc Metastore service: %s", self.project_id)
     try:
         operation = hook.create_service(
             region=self.region,
             project_id=self.project_id,
             service=self.service,
             service_id=self.service_id,
             request_id=self.request_id,
             retry=self.retry,
             timeout=self.timeout,
             metadata=self.metadata,
         )
         service = hook.wait_for_operation(self.timeout, operation)
         self.log.info("Service %s created successfully", self.service_id)
     except HttpError as err:
         if err.resp.status not in (409, '409'):
             raise
         self.log.info("Instance %s already exists", self.service_id)
         service = hook.get_service(
             region=self.region,
             project_id=self.project_id,
             service_id=self.service_id,
             retry=self.retry,
             timeout=self.timeout,
             metadata=self.metadata,
         )
     DataprocMetastoreLink.persist(context=context, task_instance=self, url=METASTORE_SERVICE_LINK)
     return Service.to_dict(service)
Example #2
0
 def execute(self, context: 'Context') -> dict:
     hook = DataprocMetastoreHook(
         gcp_conn_id=self.gcp_conn_id, impersonation_chain=self.impersonation_chain
     )
     self.log.info("Gets the details of a single Dataproc Metastore service: %s", self.project_id)
     result = hook.get_service(
         region=self.region,
         project_id=self.project_id,
         service_id=self.service_id,
         retry=self.retry,
         timeout=self.timeout,
         metadata=self.metadata,
     )
     return Service.to_dict(result)
Example #3
0
 def execute(self, context: "Context") -> dict:
     hook = DataprocMetastoreHook(
         gcp_conn_id=self.gcp_conn_id, impersonation_chain=self.impersonation_chain
     )
     self.log.info("Gets the details of a single Dataproc Metastore service: %s", self.project_id)
     result = hook.get_service(
         region=self.region,
         project_id=self.project_id,
         service_id=self.service_id,
         retry=self.retry,
         timeout=self.timeout,
         metadata=self.metadata,
     )
     DataprocMetastoreLink.persist(context=context, task_instance=self, url=METASTORE_SERVICE_LINK)
     return Service.to_dict(result)
Example #4
0
 def _wait_for_restore_service(self, hook: DataprocMetastoreHook):
     """
     Workaround to check that restore service was finished successfully.
     We discovered an issue to parse result to Restore inside the SDK
     """
     for time_to_wait in exponential_sleep_generator(initial=10, maximum=120):
         sleep(time_to_wait)
         service = hook.get_service(
             region=self.region,
             project_id=self.project_id,
             service_id=self.service_id,
             retry=self.retry,
             timeout=self.timeout,
             metadata=self.metadata,
         )
         activities: MetadataManagementActivity = service.metadata_management_activity
         restore_service: Restore = activities.restores[0]
         if restore_service.state == Restore.State.SUCCEEDED:
             return restore_service
         if restore_service.state == Restore.State.FAILED:
             raise AirflowException("Restoring service FAILED")
Example #5
0
 def _wait_for_export_metadata(self, hook: DataprocMetastoreHook):
     """
     Workaround to check that export was created successfully.
     We discovered a issue to parse result to MetadataExport inside the SDK
     """
     for time_to_wait in exponential_sleep_generator(initial=10, maximum=120):
         sleep(time_to_wait)
         service = hook.get_service(
             region=self.region,
             project_id=self.project_id,
             service_id=self.service_id,
             retry=self.retry,
             timeout=self.timeout,
             metadata=self.metadata,
         )
         activities: MetadataManagementActivity = service.metadata_management_activity
         metadata_export: MetadataExport = activities.metadata_exports[0]
         if metadata_export.state == MetadataExport.State.SUCCEEDED:
             return metadata_export
         if metadata_export.state == MetadataExport.State.FAILED:
             raise AirflowException(
                 f"Exporting metadata from Dataproc Metastore {metadata_export.name} FAILED"
             )