apache-airflow-providers-google 14.0.0__py3-none-any.whl → 19.1.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
- airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
- airflow/providers/google/__init__.py +3 -3
- airflow/providers/google/_vendor/__init__.py +0 -0
- airflow/providers/google/_vendor/json_merge_patch.py +91 -0
- airflow/providers/google/ads/hooks/ads.py +52 -43
- airflow/providers/google/ads/operators/ads.py +2 -2
- airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
- airflow/providers/google/assets/gcs.py +1 -11
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
- airflow/providers/google/cloud/bundles/gcs.py +161 -0
- airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
- airflow/providers/google/cloud/hooks/bigquery.py +195 -318
- airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
- airflow/providers/google/cloud/hooks/bigtable.py +3 -2
- airflow/providers/google/cloud/hooks/cloud_batch.py +8 -9
- airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
- airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
- airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
- airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
- airflow/providers/google/cloud/hooks/compute.py +7 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
- airflow/providers/google/cloud/hooks/dataflow.py +87 -242
- airflow/providers/google/cloud/hooks/dataform.py +9 -14
- airflow/providers/google/cloud/hooks/datafusion.py +7 -9
- airflow/providers/google/cloud/hooks/dataplex.py +13 -12
- airflow/providers/google/cloud/hooks/dataprep.py +2 -2
- airflow/providers/google/cloud/hooks/dataproc.py +76 -74
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/hooks/dlp.py +5 -4
- airflow/providers/google/cloud/hooks/gcs.py +144 -33
- airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
- airflow/providers/google/cloud/hooks/kms.py +3 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
- airflow/providers/google/cloud/hooks/looker.py +6 -1
- airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
- airflow/providers/google/cloud/hooks/mlengine.py +7 -8
- airflow/providers/google/cloud/hooks/natural_language.py +3 -2
- airflow/providers/google/cloud/hooks/os_login.py +3 -2
- airflow/providers/google/cloud/hooks/pubsub.py +6 -6
- airflow/providers/google/cloud/hooks/secret_manager.py +105 -12
- airflow/providers/google/cloud/hooks/spanner.py +75 -10
- airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
- airflow/providers/google/cloud/hooks/tasks.py +4 -3
- airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
- airflow/providers/google/cloud/hooks/translate.py +8 -17
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
- airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
- airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
- airflow/providers/google/cloud/hooks/vision.py +7 -7
- airflow/providers/google/cloud/hooks/workflows.py +4 -3
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +77 -7
- airflow/providers/google/cloud/links/bigquery.py +0 -47
- airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
- airflow/providers/google/cloud/links/bigtable.py +0 -48
- airflow/providers/google/cloud/links/cloud_build.py +0 -73
- airflow/providers/google/cloud/links/cloud_functions.py +0 -33
- airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
- airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -46
- airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
- airflow/providers/google/cloud/links/compute.py +0 -58
- airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
- airflow/providers/google/cloud/links/datacatalog.py +23 -54
- airflow/providers/google/cloud/links/dataflow.py +0 -34
- airflow/providers/google/cloud/links/dataform.py +0 -64
- airflow/providers/google/cloud/links/datafusion.py +1 -90
- airflow/providers/google/cloud/links/dataplex.py +0 -154
- airflow/providers/google/cloud/links/dataprep.py +0 -24
- airflow/providers/google/cloud/links/dataproc.py +11 -89
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
- airflow/providers/google/cloud/links/managed_kafka.py +11 -51
- airflow/providers/google/cloud/links/mlengine.py +0 -70
- airflow/providers/google/cloud/links/pubsub.py +0 -32
- airflow/providers/google/cloud/links/spanner.py +0 -33
- airflow/providers/google/cloud/links/stackdriver.py +0 -30
- airflow/providers/google/cloud/links/translate.py +17 -187
- airflow/providers/google/cloud/links/vertex_ai.py +28 -195
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/log/gcs_task_handler.py +166 -118
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
- airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
- airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
- airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
- airflow/providers/google/cloud/openlineage/facets.py +141 -40
- airflow/providers/google/cloud/openlineage/mixins.py +14 -13
- airflow/providers/google/cloud/openlineage/utils.py +19 -3
- airflow/providers/google/cloud/operators/alloy_db.py +76 -61
- airflow/providers/google/cloud/operators/bigquery.py +104 -667
- airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
- airflow/providers/google/cloud/operators/bigtable.py +38 -7
- airflow/providers/google/cloud/operators/cloud_base.py +22 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
- airflow/providers/google/cloud/operators/cloud_build.py +80 -36
- airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
- airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
- airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
- airflow/providers/google/cloud/operators/cloud_run.py +39 -20
- airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
- airflow/providers/google/cloud/operators/compute.py +18 -50
- airflow/providers/google/cloud/operators/datacatalog.py +167 -29
- airflow/providers/google/cloud/operators/dataflow.py +38 -15
- airflow/providers/google/cloud/operators/dataform.py +19 -7
- airflow/providers/google/cloud/operators/datafusion.py +43 -43
- airflow/providers/google/cloud/operators/dataplex.py +212 -126
- airflow/providers/google/cloud/operators/dataprep.py +1 -5
- airflow/providers/google/cloud/operators/dataproc.py +134 -207
- airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
- airflow/providers/google/cloud/operators/datastore.py +22 -6
- airflow/providers/google/cloud/operators/dlp.py +24 -45
- airflow/providers/google/cloud/operators/functions.py +21 -14
- airflow/providers/google/cloud/operators/gcs.py +15 -12
- airflow/providers/google/cloud/operators/gen_ai.py +389 -0
- airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
- airflow/providers/google/cloud/operators/looker.py +1 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
- airflow/providers/google/cloud/operators/natural_language.py +5 -3
- airflow/providers/google/cloud/operators/pubsub.py +69 -21
- airflow/providers/google/cloud/operators/spanner.py +53 -45
- airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
- airflow/providers/google/cloud/operators/stackdriver.py +5 -11
- airflow/providers/google/cloud/operators/tasks.py +6 -15
- airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
- airflow/providers/google/cloud/operators/translate.py +46 -20
- airflow/providers/google/cloud/operators/translate_speech.py +4 -3
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
- airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +16 -12
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
- airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
- airflow/providers/google/cloud/operators/vision.py +7 -5
- airflow/providers/google/cloud/operators/workflows.py +24 -19
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
- airflow/providers/google/cloud/sensors/bigquery.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
- airflow/providers/google/cloud/sensors/bigtable.py +14 -6
- airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
- airflow/providers/google/cloud/sensors/dataflow.py +27 -10
- airflow/providers/google/cloud/sensors/dataform.py +2 -2
- airflow/providers/google/cloud/sensors/datafusion.py +4 -4
- airflow/providers/google/cloud/sensors/dataplex.py +7 -5
- airflow/providers/google/cloud/sensors/dataprep.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc.py +10 -9
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/sensors/gcs.py +22 -21
- airflow/providers/google/cloud/sensors/looker.py +5 -5
- airflow/providers/google/cloud/sensors/pubsub.py +20 -20
- airflow/providers/google/cloud/sensors/tasks.py +2 -2
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
- airflow/providers/google/cloud/sensors/workflows.py +6 -4
- airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +14 -13
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
- airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +18 -22
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
- airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
- airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
- airflow/providers/google/cloud/transfers/postgres_to_gcs.py +44 -12
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +36 -14
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
- airflow/providers/google/cloud/triggers/bigquery.py +75 -34
- airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_build.py +3 -2
- airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
- airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
- airflow/providers/google/cloud/triggers/dataflow.py +125 -2
- airflow/providers/google/cloud/triggers/datafusion.py +1 -1
- airflow/providers/google/cloud/triggers/dataplex.py +16 -3
- airflow/providers/google/cloud/triggers/dataproc.py +124 -53
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
- airflow/providers/google/cloud/triggers/mlengine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +17 -20
- airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
- airflow/providers/google/cloud/utils/bigquery.py +5 -7
- airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
- airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
- airflow/providers/google/cloud/utils/dataform.py +1 -1
- airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/cloud/utils/validators.py +43 -0
- airflow/providers/google/common/auth_backend/google_openid.py +26 -9
- airflow/providers/google/common/consts.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +40 -43
- airflow/providers/google/common/hooks/operation_helpers.py +78 -0
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/common/utils/get_secret.py +31 -0
- airflow/providers/google/common/utils/id_token_credentials.py +4 -5
- airflow/providers/google/firebase/operators/firestore.py +2 -2
- airflow/providers/google/get_provider_info.py +61 -216
- airflow/providers/google/go_module_utils.py +35 -3
- airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
- airflow/providers/google/leveldb/operators/leveldb.py +2 -2
- airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
- airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
- airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
- airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
- airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
- airflow/providers/google/marketing_platform/sensors/display_video.py +4 -64
- airflow/providers/google/suite/hooks/calendar.py +1 -1
- airflow/providers/google/suite/hooks/drive.py +2 -2
- airflow/providers/google/suite/hooks/sheets.py +15 -1
- airflow/providers/google/suite/operators/sheets.py +8 -3
- airflow/providers/google/suite/sensors/drive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
- airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
- airflow/providers/google/version_compat.py +15 -1
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
- apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
- apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
- airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
- airflow/providers/google/cloud/hooks/automl.py +0 -679
- airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
- airflow/providers/google/cloud/links/automl.py +0 -193
- airflow/providers/google/cloud/operators/automl.py +0 -1360
- airflow/providers/google/cloud/operators/life_sciences.py +0 -119
- airflow/providers/google/cloud/operators/mlengine.py +0 -1515
- airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
- apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
- /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
- {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
|
@@ -22,10 +22,11 @@ import time
|
|
|
22
22
|
from collections.abc import Sequence
|
|
23
23
|
from typing import TYPE_CHECKING, Any
|
|
24
24
|
|
|
25
|
+
from google.api_core.retry import exponential_sleep_generator
|
|
25
26
|
from googleapiclient.errors import HttpError
|
|
26
27
|
|
|
27
28
|
from airflow.configuration import conf
|
|
28
|
-
from airflow.exceptions import AirflowException
|
|
29
|
+
from airflow.exceptions import AirflowException
|
|
29
30
|
from airflow.providers.google.cloud.hooks.datafusion import SUCCESS_STATES, DataFusionHook, PipelineStates
|
|
30
31
|
from airflow.providers.google.cloud.links.datafusion import (
|
|
31
32
|
DataFusionInstanceLink,
|
|
@@ -36,32 +37,11 @@ from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseO
|
|
|
36
37
|
from airflow.providers.google.cloud.triggers.datafusion import DataFusionStartPipelineTrigger
|
|
37
38
|
from airflow.providers.google.cloud.utils.datafusion import DataFusionPipelineType
|
|
38
39
|
from airflow.providers.google.cloud.utils.helpers import resource_path_to_dict
|
|
39
|
-
from airflow.providers.google.common.deprecated import deprecated
|
|
40
40
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
41
|
-
from google.api_core.retry import exponential_sleep_generator
|
|
42
41
|
|
|
43
42
|
if TYPE_CHECKING:
|
|
44
|
-
from airflow.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class DataFusionPipelineLinkHelper:
|
|
48
|
-
"""
|
|
49
|
-
Helper class for Pipeline links.
|
|
50
|
-
|
|
51
|
-
.. warning::
|
|
52
|
-
This class is deprecated. Consider using ``resource_path_to_dict()`` instead.
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
@staticmethod
|
|
56
|
-
@deprecated(
|
|
57
|
-
planned_removal_date="March 01, 2025",
|
|
58
|
-
use_instead="airflow.providers.google.cloud.utils.helpers.resource_path_to_dict",
|
|
59
|
-
category=AirflowProviderDeprecationWarning,
|
|
60
|
-
)
|
|
61
|
-
def get_project_id(instance):
|
|
62
|
-
instance = instance["name"]
|
|
63
|
-
project_id = next(x for x in instance.split("/") if x.startswith("airflow"))
|
|
64
|
-
return project_id
|
|
43
|
+
from airflow.providers.common.compat.sdk import Context
|
|
44
|
+
from airflow.providers.openlineage.extractors import OperatorLineage
|
|
65
45
|
|
|
66
46
|
|
|
67
47
|
class CloudDataFusionRestartInstanceOperator(GoogleCloudBaseOperator):
|
|
@@ -132,10 +112,9 @@ class CloudDataFusionRestartInstanceOperator(GoogleCloudBaseOperator):
|
|
|
132
112
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
|
133
113
|
DataFusionInstanceLink.persist(
|
|
134
114
|
context=context,
|
|
135
|
-
task_instance=self,
|
|
136
115
|
project_id=project_id,
|
|
137
116
|
instance_name=self.instance_name,
|
|
138
|
-
|
|
117
|
+
region=self.location,
|
|
139
118
|
)
|
|
140
119
|
|
|
141
120
|
|
|
@@ -290,10 +269,9 @@ class CloudDataFusionCreateInstanceOperator(GoogleCloudBaseOperator):
|
|
|
290
269
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
|
291
270
|
DataFusionInstanceLink.persist(
|
|
292
271
|
context=context,
|
|
293
|
-
task_instance=self,
|
|
294
272
|
project_id=project_id,
|
|
295
273
|
instance_name=self.instance_name,
|
|
296
|
-
|
|
274
|
+
region=self.location,
|
|
297
275
|
)
|
|
298
276
|
return instance
|
|
299
277
|
|
|
@@ -379,10 +357,9 @@ class CloudDataFusionUpdateInstanceOperator(GoogleCloudBaseOperator):
|
|
|
379
357
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
|
380
358
|
DataFusionInstanceLink.persist(
|
|
381
359
|
context=context,
|
|
382
|
-
task_instance=self,
|
|
383
360
|
project_id=project_id,
|
|
384
361
|
instance_name=self.instance_name,
|
|
385
|
-
|
|
362
|
+
region=self.location,
|
|
386
363
|
)
|
|
387
364
|
|
|
388
365
|
|
|
@@ -450,10 +427,9 @@ class CloudDataFusionGetInstanceOperator(GoogleCloudBaseOperator):
|
|
|
450
427
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
|
451
428
|
DataFusionInstanceLink.persist(
|
|
452
429
|
context=context,
|
|
453
|
-
task_instance=self,
|
|
454
430
|
project_id=project_id,
|
|
455
431
|
instance_name=self.instance_name,
|
|
456
|
-
|
|
432
|
+
region=self.location,
|
|
457
433
|
)
|
|
458
434
|
return instance
|
|
459
435
|
|
|
@@ -540,7 +516,6 @@ class CloudDataFusionCreatePipelineOperator(GoogleCloudBaseOperator):
|
|
|
540
516
|
)
|
|
541
517
|
DataFusionPipelineLink.persist(
|
|
542
518
|
context=context,
|
|
543
|
-
task_instance=self,
|
|
544
519
|
uri=instance["serviceEndpoint"],
|
|
545
520
|
pipeline_name=self.pipeline_name,
|
|
546
521
|
namespace=self.namespace,
|
|
@@ -714,7 +689,6 @@ class CloudDataFusionListPipelinesOperator(GoogleCloudBaseOperator):
|
|
|
714
689
|
|
|
715
690
|
DataFusionPipelinesLink.persist(
|
|
716
691
|
context=context,
|
|
717
|
-
task_instance=self,
|
|
718
692
|
uri=service_endpoint,
|
|
719
693
|
namespace=self.namespace,
|
|
720
694
|
)
|
|
@@ -804,6 +778,7 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
|
804
778
|
self.pipeline_timeout = pipeline_timeout
|
|
805
779
|
self.deferrable = deferrable
|
|
806
780
|
self.poll_interval = poll_interval
|
|
781
|
+
self.pipeline_id: str | None = None
|
|
807
782
|
|
|
808
783
|
if success_states:
|
|
809
784
|
self.success_states = success_states
|
|
@@ -823,18 +798,17 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
|
823
798
|
project_id=self.project_id,
|
|
824
799
|
)
|
|
825
800
|
api_url = instance["apiEndpoint"]
|
|
826
|
-
pipeline_id = hook.start_pipeline(
|
|
801
|
+
self.pipeline_id = hook.start_pipeline(
|
|
827
802
|
pipeline_name=self.pipeline_name,
|
|
828
803
|
pipeline_type=self.pipeline_type,
|
|
829
804
|
instance_url=api_url,
|
|
830
805
|
namespace=self.namespace,
|
|
831
806
|
runtime_args=self.runtime_args,
|
|
832
807
|
)
|
|
833
|
-
self.log.info("Pipeline %s submitted successfully.", pipeline_id)
|
|
808
|
+
self.log.info("Pipeline %s submitted successfully.", self.pipeline_id)
|
|
834
809
|
|
|
835
810
|
DataFusionPipelineLink.persist(
|
|
836
811
|
context=context,
|
|
837
|
-
task_instance=self,
|
|
838
812
|
uri=instance["serviceEndpoint"],
|
|
839
813
|
pipeline_name=self.pipeline_name,
|
|
840
814
|
namespace=self.namespace,
|
|
@@ -852,7 +826,7 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
|
852
826
|
namespace=self.namespace,
|
|
853
827
|
pipeline_name=self.pipeline_name,
|
|
854
828
|
pipeline_type=self.pipeline_type.value,
|
|
855
|
-
pipeline_id=pipeline_id,
|
|
829
|
+
pipeline_id=self.pipeline_id,
|
|
856
830
|
poll_interval=self.poll_interval,
|
|
857
831
|
gcp_conn_id=self.gcp_conn_id,
|
|
858
832
|
impersonation_chain=self.impersonation_chain,
|
|
@@ -862,19 +836,21 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
|
862
836
|
else:
|
|
863
837
|
if not self.asynchronous:
|
|
864
838
|
# when NOT using asynchronous mode it will just wait for pipeline to finish and print message
|
|
865
|
-
self.log.info(
|
|
839
|
+
self.log.info(
|
|
840
|
+
"Waiting when pipeline %s will be in one of the success states", self.pipeline_id
|
|
841
|
+
)
|
|
866
842
|
hook.wait_for_pipeline_state(
|
|
867
843
|
success_states=self.success_states,
|
|
868
|
-
pipeline_id=pipeline_id,
|
|
844
|
+
pipeline_id=self.pipeline_id,
|
|
869
845
|
pipeline_name=self.pipeline_name,
|
|
870
846
|
pipeline_type=self.pipeline_type,
|
|
871
847
|
namespace=self.namespace,
|
|
872
848
|
instance_url=api_url,
|
|
873
849
|
timeout=self.pipeline_timeout,
|
|
874
850
|
)
|
|
875
|
-
self.log.info("Pipeline %s discovered success state.", pipeline_id)
|
|
851
|
+
self.log.info("Pipeline %s discovered success state.", self.pipeline_id)
|
|
876
852
|
# otherwise, return pipeline_id so that sensor can use it later to check the pipeline state
|
|
877
|
-
return pipeline_id
|
|
853
|
+
return self.pipeline_id
|
|
878
854
|
|
|
879
855
|
def execute_complete(self, context: Context, event: dict[str, Any]):
|
|
880
856
|
"""
|
|
@@ -891,6 +867,31 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
|
891
867
|
)
|
|
892
868
|
return event["pipeline_id"]
|
|
893
869
|
|
|
870
|
+
def get_openlineage_facets_on_complete(self, task_instance) -> OperatorLineage | None:
|
|
871
|
+
"""Build and return OpenLineage facets and datasets for the completed pipeline start."""
|
|
872
|
+
from airflow.providers.common.compat.openlineage.facet import Dataset
|
|
873
|
+
from airflow.providers.google.cloud.openlineage.facets import DataFusionRunFacet
|
|
874
|
+
from airflow.providers.openlineage.extractors import OperatorLineage
|
|
875
|
+
|
|
876
|
+
pipeline_resource = f"{self.project_id}:{self.location}:{self.instance_name}:{self.pipeline_name}"
|
|
877
|
+
|
|
878
|
+
inputs = [Dataset(namespace="datafusion", name=pipeline_resource)]
|
|
879
|
+
|
|
880
|
+
if self.pipeline_id:
|
|
881
|
+
output_name = f"{pipeline_resource}:{self.pipeline_id}"
|
|
882
|
+
else:
|
|
883
|
+
output_name = f"{pipeline_resource}:unknown"
|
|
884
|
+
outputs = [Dataset(namespace="datafusion", name=output_name)]
|
|
885
|
+
|
|
886
|
+
run_facets = {
|
|
887
|
+
"dataFusionRun": DataFusionRunFacet(
|
|
888
|
+
runId=self.pipeline_id,
|
|
889
|
+
runtimeArgs=self.runtime_args,
|
|
890
|
+
)
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
return OperatorLineage(inputs=inputs, outputs=outputs, run_facets=run_facets, job_facets={})
|
|
894
|
+
|
|
894
895
|
|
|
895
896
|
class CloudDataFusionStopPipelineOperator(GoogleCloudBaseOperator):
|
|
896
897
|
"""
|
|
@@ -964,7 +965,6 @@ class CloudDataFusionStopPipelineOperator(GoogleCloudBaseOperator):
|
|
|
964
965
|
|
|
965
966
|
DataFusionPipelineLink.persist(
|
|
966
967
|
context=context,
|
|
967
|
-
task_instance=self,
|
|
968
968
|
uri=instance["serviceEndpoint"],
|
|
969
969
|
pipeline_name=self.pipeline_name,
|
|
970
970
|
namespace=self.namespace,
|