apache-airflow-providers-google 16.0.0a1__py3-none-any.whl → 16.1.0__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/__init__.py +1 -1
- airflow/providers/google/ads/hooks/ads.py +43 -5
- airflow/providers/google/ads/operators/ads.py +1 -1
- airflow/providers/google/ads/transfers/ads_to_gcs.py +1 -1
- airflow/providers/google/cloud/hooks/bigquery.py +63 -77
- airflow/providers/google/cloud/hooks/cloud_sql.py +8 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +9 -1
- airflow/providers/google/cloud/hooks/dataflow.py +2 -2
- airflow/providers/google/cloud/hooks/dataplex.py +1 -1
- airflow/providers/google/cloud/hooks/dataprep.py +4 -1
- airflow/providers/google/cloud/hooks/gcs.py +5 -5
- airflow/providers/google/cloud/hooks/looker.py +10 -1
- airflow/providers/google/cloud/hooks/mlengine.py +2 -1
- airflow/providers/google/cloud/hooks/secret_manager.py +102 -10
- airflow/providers/google/cloud/hooks/spanner.py +2 -2
- airflow/providers/google/cloud/hooks/translate.py +1 -1
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +0 -36
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +307 -7
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +44 -80
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +11 -2
- airflow/providers/google/cloud/hooks/vision.py +2 -2
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +75 -11
- 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/cloud_run.py +27 -0
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +16 -43
- airflow/providers/google/cloud/links/cloud_tasks.py +6 -25
- 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 -96
- 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 +14 -90
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +5 -59
- airflow/providers/google/cloud/links/life_sciences.py +0 -19
- airflow/providers/google/cloud/links/managed_kafka.py +0 -70
- 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 +16 -186
- airflow/providers/google/cloud/links/vertex_ai.py +8 -224
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/log/gcs_task_handler.py +4 -4
- airflow/providers/google/cloud/operators/alloy_db.py +69 -54
- airflow/providers/google/cloud/operators/automl.py +16 -14
- airflow/providers/google/cloud/operators/bigquery.py +49 -25
- airflow/providers/google/cloud/operators/bigquery_dts.py +2 -4
- airflow/providers/google/cloud/operators/bigtable.py +35 -6
- airflow/providers/google/cloud/operators/cloud_base.py +21 -1
- airflow/providers/google/cloud/operators/cloud_build.py +74 -31
- airflow/providers/google/cloud/operators/cloud_composer.py +34 -35
- airflow/providers/google/cloud/operators/cloud_memorystore.py +68 -42
- airflow/providers/google/cloud/operators/cloud_run.py +9 -1
- airflow/providers/google/cloud/operators/cloud_sql.py +11 -15
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -2
- airflow/providers/google/cloud/operators/compute.py +7 -39
- airflow/providers/google/cloud/operators/datacatalog.py +156 -20
- airflow/providers/google/cloud/operators/dataflow.py +37 -14
- airflow/providers/google/cloud/operators/dataform.py +14 -4
- airflow/providers/google/cloud/operators/datafusion.py +4 -12
- airflow/providers/google/cloud/operators/dataplex.py +180 -96
- airflow/providers/google/cloud/operators/dataprep.py +0 -4
- airflow/providers/google/cloud/operators/dataproc.py +10 -16
- airflow/providers/google/cloud/operators/dataproc_metastore.py +95 -87
- airflow/providers/google/cloud/operators/datastore.py +21 -5
- airflow/providers/google/cloud/operators/dlp.py +3 -26
- airflow/providers/google/cloud/operators/functions.py +15 -6
- airflow/providers/google/cloud/operators/gcs.py +1 -7
- airflow/providers/google/cloud/operators/kubernetes_engine.py +53 -92
- airflow/providers/google/cloud/operators/life_sciences.py +0 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +106 -51
- airflow/providers/google/cloud/operators/mlengine.py +0 -1
- airflow/providers/google/cloud/operators/pubsub.py +4 -5
- airflow/providers/google/cloud/operators/spanner.py +0 -4
- airflow/providers/google/cloud/operators/speech_to_text.py +0 -1
- airflow/providers/google/cloud/operators/stackdriver.py +0 -8
- airflow/providers/google/cloud/operators/tasks.py +0 -11
- airflow/providers/google/cloud/operators/text_to_speech.py +0 -1
- airflow/providers/google/cloud/operators/translate.py +37 -13
- airflow/providers/google/cloud/operators/translate_speech.py +0 -1
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +31 -18
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +28 -8
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +38 -25
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +69 -7
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +42 -8
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +531 -0
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +93 -117
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +10 -8
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +56 -10
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +29 -6
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +9 -6
- airflow/providers/google/cloud/operators/workflows.py +1 -9
- airflow/providers/google/cloud/sensors/bigquery.py +1 -1
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -1
- airflow/providers/google/cloud/sensors/bigtable.py +15 -3
- airflow/providers/google/cloud/sensors/cloud_composer.py +6 -1
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -1
- airflow/providers/google/cloud/sensors/dataflow.py +3 -3
- airflow/providers/google/cloud/sensors/dataform.py +6 -1
- airflow/providers/google/cloud/sensors/datafusion.py +6 -1
- airflow/providers/google/cloud/sensors/dataplex.py +6 -1
- airflow/providers/google/cloud/sensors/dataprep.py +6 -1
- airflow/providers/google/cloud/sensors/dataproc.py +6 -1
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +6 -1
- airflow/providers/google/cloud/sensors/gcs.py +9 -3
- airflow/providers/google/cloud/sensors/looker.py +6 -1
- airflow/providers/google/cloud/sensors/pubsub.py +8 -3
- airflow/providers/google/cloud/sensors/tasks.py +6 -1
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +6 -1
- airflow/providers/google/cloud/sensors/workflows.py +6 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +10 -7
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +1 -2
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -1
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +1 -2
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/gcs_to_local.py +1 -1
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +1 -1
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +5 -1
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +1 -1
- airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
- airflow/providers/google/cloud/transfers/local_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +11 -5
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
- airflow/providers/google/cloud/triggers/bigquery.py +32 -5
- airflow/providers/google/cloud/triggers/dataproc.py +62 -10
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/common/auth_backend/google_openid.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +7 -3
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/firebase/operators/firestore.py +1 -1
- airflow/providers/google/get_provider_info.py +14 -16
- airflow/providers/google/leveldb/hooks/leveldb.py +30 -1
- airflow/providers/google/leveldb/operators/leveldb.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +3 -6
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +0 -1
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +4 -4
- airflow/providers/google/marketing_platform/operators/display_video.py +6 -6
- airflow/providers/google/marketing_platform/operators/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +6 -1
- airflow/providers/google/marketing_platform/sensors/display_video.py +6 -1
- airflow/providers/google/suite/operators/sheets.py +3 -3
- airflow/providers/google/suite/sensors/drive.py +6 -1
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +1 -1
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +1 -1
- airflow/providers/google/version_compat.py +28 -0
- {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/METADATA +35 -35
- {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/RECORD +171 -170
- airflow/providers/google/cloud/links/automl.py +0 -193
- {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/entry_points.txt +0 -0
@@ -32,6 +32,7 @@ from google.cloud.datacatalog import (
|
|
32
32
|
TagTemplateField,
|
33
33
|
)
|
34
34
|
|
35
|
+
from airflow.exceptions import AirflowProviderDeprecationWarning
|
35
36
|
from airflow.providers.google.cloud.hooks.datacatalog import CloudDataCatalogHook
|
36
37
|
from airflow.providers.google.cloud.links.datacatalog import (
|
37
38
|
DataCatalogEntryGroupLink,
|
@@ -39,6 +40,7 @@ from airflow.providers.google.cloud.links.datacatalog import (
|
|
39
40
|
DataCatalogTagTemplateLink,
|
40
41
|
)
|
41
42
|
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
43
|
+
from airflow.providers.google.common.deprecated import deprecated
|
42
44
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
43
45
|
|
44
46
|
if TYPE_CHECKING:
|
@@ -48,6 +50,13 @@ if TYPE_CHECKING:
|
|
48
50
|
from airflow.utils.context import Context
|
49
51
|
|
50
52
|
|
53
|
+
@deprecated(
|
54
|
+
planned_removal_date="January 30, 2026",
|
55
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogCreateEntryOperator",
|
56
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
57
|
+
"in favor of Dataplex Universal Catalog.",
|
58
|
+
category=AirflowProviderDeprecationWarning,
|
59
|
+
)
|
51
60
|
class CloudDataCatalogCreateEntryOperator(GoogleCloudBaseOperator):
|
52
61
|
"""
|
53
62
|
Creates an entry.
|
@@ -154,10 +163,9 @@ class CloudDataCatalogCreateEntryOperator(GoogleCloudBaseOperator):
|
|
154
163
|
)
|
155
164
|
_, _, entry_id = result.name.rpartition("/")
|
156
165
|
self.log.info("Current entry_id ID: %s", entry_id)
|
157
|
-
|
166
|
+
context["ti"].xcom_push(key="entry_id", value=entry_id)
|
158
167
|
DataCatalogEntryLink.persist(
|
159
168
|
context=context,
|
160
|
-
task_instance=self,
|
161
169
|
entry_id=self.entry_id,
|
162
170
|
entry_group_id=self.entry_group,
|
163
171
|
location_id=self.location,
|
@@ -166,6 +174,13 @@ class CloudDataCatalogCreateEntryOperator(GoogleCloudBaseOperator):
|
|
166
174
|
return Entry.to_dict(result)
|
167
175
|
|
168
176
|
|
177
|
+
@deprecated(
|
178
|
+
planned_removal_date="January 30, 2026",
|
179
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogCreateEntryGroupOperator",
|
180
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
181
|
+
"in favor of Dataplex Universal Catalog.",
|
182
|
+
category=AirflowProviderDeprecationWarning,
|
183
|
+
)
|
169
184
|
class CloudDataCatalogCreateEntryGroupOperator(GoogleCloudBaseOperator):
|
170
185
|
"""
|
171
186
|
Creates an EntryGroup.
|
@@ -268,10 +283,9 @@ class CloudDataCatalogCreateEntryGroupOperator(GoogleCloudBaseOperator):
|
|
268
283
|
|
269
284
|
_, _, entry_group_id = result.name.rpartition("/")
|
270
285
|
self.log.info("Current entry group ID: %s", entry_group_id)
|
271
|
-
|
286
|
+
context["ti"].xcom_push(key="entry_group_id", value=entry_group_id)
|
272
287
|
DataCatalogEntryGroupLink.persist(
|
273
288
|
context=context,
|
274
|
-
task_instance=self,
|
275
289
|
entry_group_id=self.entry_group_id,
|
276
290
|
location_id=self.location,
|
277
291
|
project_id=self.project_id or hook.project_id,
|
@@ -279,6 +293,14 @@ class CloudDataCatalogCreateEntryGroupOperator(GoogleCloudBaseOperator):
|
|
279
293
|
return EntryGroup.to_dict(result)
|
280
294
|
|
281
295
|
|
296
|
+
@deprecated(
|
297
|
+
planned_removal_date="January 30, 2026",
|
298
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogCreateEntryOperator, "
|
299
|
+
"airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateEntryOperator",
|
300
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
301
|
+
"in favor of Dataplex Universal Catalog.",
|
302
|
+
category=AirflowProviderDeprecationWarning,
|
303
|
+
)
|
282
304
|
class CloudDataCatalogCreateTagOperator(GoogleCloudBaseOperator):
|
283
305
|
"""
|
284
306
|
Creates a tag on an entry.
|
@@ -403,10 +425,9 @@ class CloudDataCatalogCreateTagOperator(GoogleCloudBaseOperator):
|
|
403
425
|
|
404
426
|
_, _, tag_id = tag.name.rpartition("/")
|
405
427
|
self.log.info("Current Tag ID: %s", tag_id)
|
406
|
-
|
428
|
+
context["ti"].xcom_push(key="tag_id", value=tag_id)
|
407
429
|
DataCatalogEntryLink.persist(
|
408
430
|
context=context,
|
409
|
-
task_instance=self,
|
410
431
|
entry_id=self.entry,
|
411
432
|
entry_group_id=self.entry_group,
|
412
433
|
location_id=self.location,
|
@@ -415,6 +436,13 @@ class CloudDataCatalogCreateTagOperator(GoogleCloudBaseOperator):
|
|
415
436
|
return Tag.to_dict(tag)
|
416
437
|
|
417
438
|
|
439
|
+
@deprecated(
|
440
|
+
planned_removal_date="January 30, 2026",
|
441
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogCreateAspectTypeOperator",
|
442
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
443
|
+
"in favor of Dataplex Universal Catalog.",
|
444
|
+
category=AirflowProviderDeprecationWarning,
|
445
|
+
)
|
418
446
|
class CloudDataCatalogCreateTagTemplateOperator(GoogleCloudBaseOperator):
|
419
447
|
"""
|
420
448
|
Creates a tag template.
|
@@ -514,10 +542,9 @@ class CloudDataCatalogCreateTagTemplateOperator(GoogleCloudBaseOperator):
|
|
514
542
|
)
|
515
543
|
_, _, tag_template = result.name.rpartition("/")
|
516
544
|
self.log.info("Current Tag ID: %s", tag_template)
|
517
|
-
|
545
|
+
context["ti"].xcom_push(key="tag_template_id", value=tag_template)
|
518
546
|
DataCatalogTagTemplateLink.persist(
|
519
547
|
context=context,
|
520
|
-
task_instance=self,
|
521
548
|
tag_template_id=self.tag_template_id,
|
522
549
|
location_id=self.location,
|
523
550
|
project_id=self.project_id or hook.project_id,
|
@@ -525,6 +552,14 @@ class CloudDataCatalogCreateTagTemplateOperator(GoogleCloudBaseOperator):
|
|
525
552
|
return TagTemplate.to_dict(result)
|
526
553
|
|
527
554
|
|
555
|
+
@deprecated(
|
556
|
+
planned_removal_date="January 30, 2026",
|
557
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateAspectTypeOperator, "
|
558
|
+
"airflow.providers.google.cloud.operators.dataplex.DataplexCatalogCreateAspectTypeOperator",
|
559
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
560
|
+
"in favor of Dataplex Universal Catalog.",
|
561
|
+
category=AirflowProviderDeprecationWarning,
|
562
|
+
)
|
528
563
|
class CloudDataCatalogCreateTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
529
564
|
r"""
|
530
565
|
Creates a field in a tag template.
|
@@ -633,10 +668,9 @@ class CloudDataCatalogCreateTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
|
633
668
|
result = tag_template.fields[self.tag_template_field_id]
|
634
669
|
|
635
670
|
self.log.info("Current Tag ID: %s", self.tag_template_field_id)
|
636
|
-
|
671
|
+
context["ti"].xcom_push(key="tag_template_field_id", value=self.tag_template_field_id)
|
637
672
|
DataCatalogTagTemplateLink.persist(
|
638
673
|
context=context,
|
639
|
-
task_instance=self,
|
640
674
|
tag_template_id=self.tag_template,
|
641
675
|
location_id=self.location,
|
642
676
|
project_id=self.project_id or hook.project_id,
|
@@ -644,6 +678,13 @@ class CloudDataCatalogCreateTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
|
644
678
|
return TagTemplateField.to_dict(result)
|
645
679
|
|
646
680
|
|
681
|
+
@deprecated(
|
682
|
+
planned_removal_date="January 30, 2026",
|
683
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogDeleteEntryOperator",
|
684
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
685
|
+
"in favor of Dataplex Universal Catalog.",
|
686
|
+
category=AirflowProviderDeprecationWarning,
|
687
|
+
)
|
647
688
|
class CloudDataCatalogDeleteEntryOperator(GoogleCloudBaseOperator):
|
648
689
|
"""
|
649
690
|
Deletes an existing entry.
|
@@ -729,6 +770,13 @@ class CloudDataCatalogDeleteEntryOperator(GoogleCloudBaseOperator):
|
|
729
770
|
self.log.info("Entry doesn't exists. Skipping.")
|
730
771
|
|
731
772
|
|
773
|
+
@deprecated(
|
774
|
+
planned_removal_date="January 30, 2026",
|
775
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogDeleteEntryGroupOperator",
|
776
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
777
|
+
"in favor of Dataplex Universal Catalog.",
|
778
|
+
category=AirflowProviderDeprecationWarning,
|
779
|
+
)
|
732
780
|
class CloudDataCatalogDeleteEntryGroupOperator(GoogleCloudBaseOperator):
|
733
781
|
"""
|
734
782
|
Deletes an EntryGroup.
|
@@ -811,6 +859,13 @@ class CloudDataCatalogDeleteEntryGroupOperator(GoogleCloudBaseOperator):
|
|
811
859
|
self.log.info("Entry doesn't exists. skipping")
|
812
860
|
|
813
861
|
|
862
|
+
@deprecated(
|
863
|
+
planned_removal_date="January 30, 2026",
|
864
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateEntryOperator",
|
865
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
866
|
+
"in favor of Dataplex Universal Catalog.",
|
867
|
+
category=AirflowProviderDeprecationWarning,
|
868
|
+
)
|
814
869
|
class CloudDataCatalogDeleteTagOperator(GoogleCloudBaseOperator):
|
815
870
|
"""
|
816
871
|
Deletes a tag.
|
@@ -901,6 +956,13 @@ class CloudDataCatalogDeleteTagOperator(GoogleCloudBaseOperator):
|
|
901
956
|
self.log.info("Entry doesn't exists. skipping")
|
902
957
|
|
903
958
|
|
959
|
+
@deprecated(
|
960
|
+
planned_removal_date="January 30, 2026",
|
961
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogDeleteAspectTypeOperator",
|
962
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
963
|
+
"in favor of Dataplex Universal Catalog.",
|
964
|
+
category=AirflowProviderDeprecationWarning,
|
965
|
+
)
|
904
966
|
class CloudDataCatalogDeleteTagTemplateOperator(GoogleCloudBaseOperator):
|
905
967
|
"""
|
906
968
|
Deletes a tag template and all tags using the template.
|
@@ -988,6 +1050,13 @@ class CloudDataCatalogDeleteTagTemplateOperator(GoogleCloudBaseOperator):
|
|
988
1050
|
self.log.info("Tag Template doesn't exists. skipping")
|
989
1051
|
|
990
1052
|
|
1053
|
+
@deprecated(
|
1054
|
+
planned_removal_date="January 30, 2026",
|
1055
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateAspectTypeOperator",
|
1056
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1057
|
+
"in favor of Dataplex Universal Catalog.",
|
1058
|
+
category=AirflowProviderDeprecationWarning,
|
1059
|
+
)
|
991
1060
|
class CloudDataCatalogDeleteTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
992
1061
|
"""
|
993
1062
|
Deletes a field in a tag template and all uses of that field.
|
@@ -1078,6 +1147,13 @@ class CloudDataCatalogDeleteTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
|
1078
1147
|
self.log.info("Tag Template field doesn't exists. skipping")
|
1079
1148
|
|
1080
1149
|
|
1150
|
+
@deprecated(
|
1151
|
+
planned_removal_date="January 30, 2026",
|
1152
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogGetEntryOperator",
|
1153
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1154
|
+
"in favor of Dataplex Universal Catalog.",
|
1155
|
+
category=AirflowProviderDeprecationWarning,
|
1156
|
+
)
|
1081
1157
|
class CloudDataCatalogGetEntryOperator(GoogleCloudBaseOperator):
|
1082
1158
|
"""
|
1083
1159
|
Gets an entry.
|
@@ -1161,7 +1237,6 @@ class CloudDataCatalogGetEntryOperator(GoogleCloudBaseOperator):
|
|
1161
1237
|
)
|
1162
1238
|
DataCatalogEntryLink.persist(
|
1163
1239
|
context=context,
|
1164
|
-
task_instance=self,
|
1165
1240
|
entry_id=self.entry,
|
1166
1241
|
entry_group_id=self.entry_group,
|
1167
1242
|
location_id=self.location,
|
@@ -1170,6 +1245,13 @@ class CloudDataCatalogGetEntryOperator(GoogleCloudBaseOperator):
|
|
1170
1245
|
return Entry.to_dict(result)
|
1171
1246
|
|
1172
1247
|
|
1248
|
+
@deprecated(
|
1249
|
+
planned_removal_date="January 30, 2026",
|
1250
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogGetEntryGroupOperator",
|
1251
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1252
|
+
"in favor of Dataplex Universal Catalog.",
|
1253
|
+
category=AirflowProviderDeprecationWarning,
|
1254
|
+
)
|
1173
1255
|
class CloudDataCatalogGetEntryGroupOperator(GoogleCloudBaseOperator):
|
1174
1256
|
"""
|
1175
1257
|
Gets an entry group.
|
@@ -1256,7 +1338,6 @@ class CloudDataCatalogGetEntryGroupOperator(GoogleCloudBaseOperator):
|
|
1256
1338
|
)
|
1257
1339
|
DataCatalogEntryGroupLink.persist(
|
1258
1340
|
context=context,
|
1259
|
-
task_instance=self,
|
1260
1341
|
entry_group_id=self.entry_group,
|
1261
1342
|
location_id=self.location,
|
1262
1343
|
project_id=self.project_id or hook.project_id,
|
@@ -1264,6 +1345,13 @@ class CloudDataCatalogGetEntryGroupOperator(GoogleCloudBaseOperator):
|
|
1264
1345
|
return EntryGroup.to_dict(result)
|
1265
1346
|
|
1266
1347
|
|
1348
|
+
@deprecated(
|
1349
|
+
planned_removal_date="January 30, 2026",
|
1350
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogGetAspectTypeOperator",
|
1351
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1352
|
+
"in favor of Dataplex Universal Catalog.",
|
1353
|
+
category=AirflowProviderDeprecationWarning,
|
1354
|
+
)
|
1267
1355
|
class CloudDataCatalogGetTagTemplateOperator(GoogleCloudBaseOperator):
|
1268
1356
|
"""
|
1269
1357
|
Gets a tag template.
|
@@ -1342,7 +1430,6 @@ class CloudDataCatalogGetTagTemplateOperator(GoogleCloudBaseOperator):
|
|
1342
1430
|
)
|
1343
1431
|
DataCatalogTagTemplateLink.persist(
|
1344
1432
|
context=context,
|
1345
|
-
task_instance=self,
|
1346
1433
|
tag_template_id=self.tag_template,
|
1347
1434
|
location_id=self.location,
|
1348
1435
|
project_id=self.project_id or hook.project_id,
|
@@ -1350,6 +1437,13 @@ class CloudDataCatalogGetTagTemplateOperator(GoogleCloudBaseOperator):
|
|
1350
1437
|
return TagTemplate.to_dict(result)
|
1351
1438
|
|
1352
1439
|
|
1440
|
+
@deprecated(
|
1441
|
+
planned_removal_date="January 30, 2026",
|
1442
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogGetEntryOperator",
|
1443
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1444
|
+
"in favor of Dataplex Universal Catalog.",
|
1445
|
+
category=AirflowProviderDeprecationWarning,
|
1446
|
+
)
|
1353
1447
|
class CloudDataCatalogListTagsOperator(GoogleCloudBaseOperator):
|
1354
1448
|
"""
|
1355
1449
|
Lists the tags on an Entry.
|
@@ -1441,7 +1535,6 @@ class CloudDataCatalogListTagsOperator(GoogleCloudBaseOperator):
|
|
1441
1535
|
)
|
1442
1536
|
DataCatalogEntryLink.persist(
|
1443
1537
|
context=context,
|
1444
|
-
task_instance=self,
|
1445
1538
|
entry_id=self.entry,
|
1446
1539
|
entry_group_id=self.entry_group,
|
1447
1540
|
location_id=self.location,
|
@@ -1450,6 +1543,13 @@ class CloudDataCatalogListTagsOperator(GoogleCloudBaseOperator):
|
|
1450
1543
|
return [Tag.to_dict(item) for item in result]
|
1451
1544
|
|
1452
1545
|
|
1546
|
+
@deprecated(
|
1547
|
+
planned_removal_date="January 30, 2026",
|
1548
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogLookupEntryOperator",
|
1549
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1550
|
+
"in favor of Dataplex Universal Catalog.",
|
1551
|
+
category=AirflowProviderDeprecationWarning,
|
1552
|
+
)
|
1453
1553
|
class CloudDataCatalogLookupEntryOperator(GoogleCloudBaseOperator):
|
1454
1554
|
r"""
|
1455
1555
|
Get an entry by target resource name.
|
@@ -1532,7 +1632,6 @@ class CloudDataCatalogLookupEntryOperator(GoogleCloudBaseOperator):
|
|
1532
1632
|
project_id, location_id, entry_group_id, entry_id = result.name.split("/")[1::2]
|
1533
1633
|
DataCatalogEntryLink.persist(
|
1534
1634
|
context=context,
|
1535
|
-
task_instance=self,
|
1536
1635
|
entry_id=entry_id,
|
1537
1636
|
entry_group_id=entry_group_id,
|
1538
1637
|
location_id=location_id,
|
@@ -1541,6 +1640,13 @@ class CloudDataCatalogLookupEntryOperator(GoogleCloudBaseOperator):
|
|
1541
1640
|
return Entry.to_dict(result)
|
1542
1641
|
|
1543
1642
|
|
1643
|
+
@deprecated(
|
1644
|
+
planned_removal_date="January 30, 2026",
|
1645
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateAspectTypeOperator",
|
1646
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1647
|
+
"in favor of Dataplex Universal Catalog.",
|
1648
|
+
category=AirflowProviderDeprecationWarning,
|
1649
|
+
)
|
1544
1650
|
class CloudDataCatalogRenameTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
1545
1651
|
"""
|
1546
1652
|
Renames a field in a tag template.
|
@@ -1631,13 +1737,19 @@ class CloudDataCatalogRenameTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
|
1631
1737
|
)
|
1632
1738
|
DataCatalogTagTemplateLink.persist(
|
1633
1739
|
context=context,
|
1634
|
-
task_instance=self,
|
1635
1740
|
tag_template_id=self.tag_template,
|
1636
1741
|
location_id=self.location,
|
1637
1742
|
project_id=self.project_id or hook.project_id,
|
1638
1743
|
)
|
1639
1744
|
|
1640
1745
|
|
1746
|
+
@deprecated(
|
1747
|
+
planned_removal_date="January 30, 2026",
|
1748
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogSearchEntriesOperator",
|
1749
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1750
|
+
"in favor of Dataplex Universal Catalog.",
|
1751
|
+
category=AirflowProviderDeprecationWarning,
|
1752
|
+
)
|
1641
1753
|
class CloudDataCatalogSearchCatalogOperator(GoogleCloudBaseOperator):
|
1642
1754
|
r"""
|
1643
1755
|
Searches Data Catalog for multiple resources like entries, tags that match a query.
|
@@ -1748,6 +1860,13 @@ class CloudDataCatalogSearchCatalogOperator(GoogleCloudBaseOperator):
|
|
1748
1860
|
return [SearchCatalogResult.to_dict(item) for item in result]
|
1749
1861
|
|
1750
1862
|
|
1863
|
+
@deprecated(
|
1864
|
+
planned_removal_date="January 30, 2026",
|
1865
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateEntryOperator",
|
1866
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1867
|
+
"in favor of Dataplex Universal Catalog.",
|
1868
|
+
category=AirflowProviderDeprecationWarning,
|
1869
|
+
)
|
1751
1870
|
class CloudDataCatalogUpdateEntryOperator(GoogleCloudBaseOperator):
|
1752
1871
|
"""
|
1753
1872
|
Updates an existing entry.
|
@@ -1850,7 +1969,6 @@ class CloudDataCatalogUpdateEntryOperator(GoogleCloudBaseOperator):
|
|
1850
1969
|
location_id, entry_group_id, entry_id = result.name.split("/")[3::2]
|
1851
1970
|
DataCatalogEntryLink.persist(
|
1852
1971
|
context=context,
|
1853
|
-
task_instance=self,
|
1854
1972
|
entry_id=self.entry_id or entry_id,
|
1855
1973
|
entry_group_id=self.entry_group or entry_group_id,
|
1856
1974
|
location_id=self.location or location_id,
|
@@ -1858,6 +1976,13 @@ class CloudDataCatalogUpdateEntryOperator(GoogleCloudBaseOperator):
|
|
1858
1976
|
)
|
1859
1977
|
|
1860
1978
|
|
1979
|
+
@deprecated(
|
1980
|
+
planned_removal_date="January 30, 2026",
|
1981
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateEntryOperator",
|
1982
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
1983
|
+
"in favor of Dataplex Universal Catalog.",
|
1984
|
+
category=AirflowProviderDeprecationWarning,
|
1985
|
+
)
|
1861
1986
|
class CloudDataCatalogUpdateTagOperator(GoogleCloudBaseOperator):
|
1862
1987
|
"""
|
1863
1988
|
Updates an existing tag.
|
@@ -1964,7 +2089,6 @@ class CloudDataCatalogUpdateTagOperator(GoogleCloudBaseOperator):
|
|
1964
2089
|
location_id, entry_group_id, entry_id = result.name.split("/")[3:8:2]
|
1965
2090
|
DataCatalogEntryLink.persist(
|
1966
2091
|
context=context,
|
1967
|
-
task_instance=self,
|
1968
2092
|
entry_id=self.entry or entry_id,
|
1969
2093
|
entry_group_id=self.entry_group or entry_group_id,
|
1970
2094
|
location_id=self.location or location_id,
|
@@ -1972,6 +2096,13 @@ class CloudDataCatalogUpdateTagOperator(GoogleCloudBaseOperator):
|
|
1972
2096
|
)
|
1973
2097
|
|
1974
2098
|
|
2099
|
+
@deprecated(
|
2100
|
+
planned_removal_date="January 30, 2026",
|
2101
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateAspectTypeOperator",
|
2102
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
2103
|
+
"in favor of Dataplex Universal Catalog.",
|
2104
|
+
category=AirflowProviderDeprecationWarning,
|
2105
|
+
)
|
1975
2106
|
class CloudDataCatalogUpdateTagTemplateOperator(GoogleCloudBaseOperator):
|
1976
2107
|
"""
|
1977
2108
|
Updates a tag template.
|
@@ -2074,13 +2205,19 @@ class CloudDataCatalogUpdateTagTemplateOperator(GoogleCloudBaseOperator):
|
|
2074
2205
|
location_id, tag_template_id = result.name.split("/")[3::2]
|
2075
2206
|
DataCatalogTagTemplateLink.persist(
|
2076
2207
|
context=context,
|
2077
|
-
task_instance=self,
|
2078
2208
|
tag_template_id=self.tag_template_id or tag_template_id,
|
2079
2209
|
location_id=self.location or location_id,
|
2080
2210
|
project_id=self.project_id or hook.project_id,
|
2081
2211
|
)
|
2082
2212
|
|
2083
2213
|
|
2214
|
+
@deprecated(
|
2215
|
+
planned_removal_date="January 30, 2026",
|
2216
|
+
use_instead="airflow.providers.google.cloud.operators.dataplex.DataplexCatalogUpdateAspectTypeOperator",
|
2217
|
+
reason="The Data Catalog will be discontinued on January 30, 2026 "
|
2218
|
+
"in favor of Dataplex Universal Catalog.",
|
2219
|
+
category=AirflowProviderDeprecationWarning,
|
2220
|
+
)
|
2084
2221
|
class CloudDataCatalogUpdateTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
2085
2222
|
"""
|
2086
2223
|
Updates a field in a tag template. This method cannot be used to update the field type.
|
@@ -2195,7 +2332,6 @@ class CloudDataCatalogUpdateTagTemplateFieldOperator(GoogleCloudBaseOperator):
|
|
2195
2332
|
location_id, tag_template_id = result.name.split("/")[3:6:2]
|
2196
2333
|
DataCatalogTagTemplateLink.persist(
|
2197
2334
|
context=context,
|
2198
|
-
task_instance=self,
|
2199
2335
|
tag_template_id=self.tag_template or tag_template_id,
|
2200
2336
|
location_id=self.location or location_id,
|
2201
2337
|
project_id=self.project_id or hook.project_id,
|
@@ -383,7 +383,12 @@ class DataflowTemplatedJobStartOperator(GoogleCloudBaseOperator):
|
|
383
383
|
def execute(self, context: Context):
|
384
384
|
def set_current_job(current_job):
|
385
385
|
self.job = current_job
|
386
|
-
DataflowJobLink.persist(
|
386
|
+
DataflowJobLink.persist(
|
387
|
+
context=context,
|
388
|
+
project_id=self.project_id,
|
389
|
+
region=self.location,
|
390
|
+
job_id=self.job.get("id"),
|
391
|
+
)
|
387
392
|
|
388
393
|
options = self.dataflow_default_options
|
389
394
|
options.update(self.options)
|
@@ -404,7 +409,7 @@ class DataflowTemplatedJobStartOperator(GoogleCloudBaseOperator):
|
|
404
409
|
append_job_name=self.append_job_name,
|
405
410
|
)
|
406
411
|
job_id = self.hook.extract_job_id(self.job)
|
407
|
-
|
412
|
+
context["task_instance"].xcom_push(key="job_id", value=job_id)
|
408
413
|
return job_id
|
409
414
|
|
410
415
|
self.job = self.hook.launch_job_with_template(
|
@@ -418,7 +423,9 @@ class DataflowTemplatedJobStartOperator(GoogleCloudBaseOperator):
|
|
418
423
|
environment=self.environment,
|
419
424
|
)
|
420
425
|
job_id = self.hook.extract_job_id(self.job)
|
421
|
-
DataflowJobLink.persist(
|
426
|
+
DataflowJobLink.persist(
|
427
|
+
context=context, project_id=self.project_id, region=self.location, job_id=job_id
|
428
|
+
)
|
422
429
|
self.defer(
|
423
430
|
trigger=TemplateJobStartTrigger(
|
424
431
|
project_id=self.project_id,
|
@@ -439,7 +446,7 @@ class DataflowTemplatedJobStartOperator(GoogleCloudBaseOperator):
|
|
439
446
|
raise AirflowException(event["message"])
|
440
447
|
|
441
448
|
job_id = event["job_id"]
|
442
|
-
|
449
|
+
context["task_instance"].xcom_push(key="job_id", value=job_id)
|
443
450
|
self.log.info("Task %s completed with response %s", self.task_id, event["message"])
|
444
451
|
return job_id
|
445
452
|
|
@@ -590,7 +597,9 @@ class DataflowStartFlexTemplateOperator(GoogleCloudBaseOperator):
|
|
590
597
|
|
591
598
|
def set_current_job(current_job):
|
592
599
|
self.job = current_job
|
593
|
-
DataflowJobLink.persist(
|
600
|
+
DataflowJobLink.persist(
|
601
|
+
context=context, project_id=self.project_id, region=self.location, job_id=self.job.get("id")
|
602
|
+
)
|
594
603
|
|
595
604
|
if not self.deferrable:
|
596
605
|
self.job = self.hook.start_flex_template(
|
@@ -600,7 +609,7 @@ class DataflowStartFlexTemplateOperator(GoogleCloudBaseOperator):
|
|
600
609
|
on_new_job_callback=set_current_job,
|
601
610
|
)
|
602
611
|
job_id = self.hook.extract_job_id(self.job)
|
603
|
-
|
612
|
+
context["task_instance"].xcom_push(key="job_id", value=job_id)
|
604
613
|
return self.job
|
605
614
|
|
606
615
|
self.job = self.hook.launch_job_with_flex_template(
|
@@ -609,7 +618,9 @@ class DataflowStartFlexTemplateOperator(GoogleCloudBaseOperator):
|
|
609
618
|
project_id=self.project_id,
|
610
619
|
)
|
611
620
|
job_id = self.hook.extract_job_id(self.job)
|
612
|
-
DataflowJobLink.persist(
|
621
|
+
DataflowJobLink.persist(
|
622
|
+
context=context, project_id=self.project_id, region=self.location, job_id=job_id
|
623
|
+
)
|
613
624
|
self.defer(
|
614
625
|
trigger=TemplateJobStartTrigger(
|
615
626
|
project_id=self.project_id,
|
@@ -639,7 +650,7 @@ class DataflowStartFlexTemplateOperator(GoogleCloudBaseOperator):
|
|
639
650
|
|
640
651
|
job_id = event["job_id"]
|
641
652
|
self.log.info("Task %s completed with response %s", job_id, event["message"])
|
642
|
-
|
653
|
+
context["task_instance"].xcom_push(key="job_id", value=job_id)
|
643
654
|
job = self.hook.get_job(job_id=job_id, project_id=self.project_id, location=self.location)
|
644
655
|
return job
|
645
656
|
|
@@ -764,7 +775,9 @@ class DataflowStartYamlJobOperator(GoogleCloudBaseOperator):
|
|
764
775
|
location=self.region,
|
765
776
|
)
|
766
777
|
|
767
|
-
DataflowJobLink.persist(
|
778
|
+
DataflowJobLink.persist(
|
779
|
+
context=context, project_id=self.project_id, region=self.region, job_id=self.job_id
|
780
|
+
)
|
768
781
|
|
769
782
|
if self.deferrable:
|
770
783
|
self.defer(
|
@@ -794,7 +807,7 @@ class DataflowStartYamlJobOperator(GoogleCloudBaseOperator):
|
|
794
807
|
raise AirflowException(event["message"])
|
795
808
|
job = event["job"]
|
796
809
|
self.log.info("Job %s completed with response %s", job["id"], event["message"])
|
797
|
-
|
810
|
+
context["task_instance"].xcom_push(key="job_id", value=job["id"])
|
798
811
|
|
799
812
|
return job
|
800
813
|
|
@@ -971,6 +984,14 @@ class DataflowCreatePipelineOperator(GoogleCloudBaseOperator):
|
|
971
984
|
|
972
985
|
self.pipeline_name = self.body["name"].split("/")[-1] if self.body else None
|
973
986
|
|
987
|
+
@property
|
988
|
+
def extra_links_params(self) -> dict[str, Any]:
|
989
|
+
return {
|
990
|
+
"project_id": self.project_id,
|
991
|
+
"location": self.location,
|
992
|
+
"pipeline_name": self.pipeline_name,
|
993
|
+
}
|
994
|
+
|
974
995
|
def execute(self, context: Context):
|
975
996
|
if self.body is None:
|
976
997
|
raise AirflowException(
|
@@ -1003,8 +1024,8 @@ class DataflowCreatePipelineOperator(GoogleCloudBaseOperator):
|
|
1003
1024
|
pipeline_name=self.pipeline_name,
|
1004
1025
|
location=self.location,
|
1005
1026
|
)
|
1006
|
-
DataflowPipelineLink.persist(
|
1007
|
-
|
1027
|
+
DataflowPipelineLink.persist(context=context)
|
1028
|
+
context["task_instance"].xcom_push(key="pipeline_name", value=self.pipeline_name)
|
1008
1029
|
if self.pipeline:
|
1009
1030
|
if "error" in self.pipeline:
|
1010
1031
|
raise AirflowException(self.pipeline.get("error").get("message"))
|
@@ -1075,8 +1096,10 @@ class DataflowRunPipelineOperator(GoogleCloudBaseOperator):
|
|
1075
1096
|
location=self.location,
|
1076
1097
|
)["job"]
|
1077
1098
|
job_id = self.dataflow_hook.extract_job_id(self.job)
|
1078
|
-
|
1079
|
-
DataflowJobLink.persist(
|
1099
|
+
context["task_instance"].xcom_push(key="job_id", value=job_id)
|
1100
|
+
DataflowJobLink.persist(
|
1101
|
+
context=context, project_id=self.project_id, region=self.location, job_id=job_id
|
1102
|
+
)
|
1080
1103
|
except HttpError as e:
|
1081
1104
|
if e.resp.status == 404:
|
1082
1105
|
raise AirflowException("Pipeline with given name was not found.")
|
@@ -258,7 +258,6 @@ class DataformCreateWorkflowInvocationOperator(GoogleCloudBaseOperator):
|
|
258
258
|
)
|
259
259
|
workflow_invocation_id = result.name.split("/")[-1]
|
260
260
|
DataformWorkflowInvocationLink.persist(
|
261
|
-
operator_instance=self,
|
262
261
|
context=context,
|
263
262
|
project_id=self.project_id,
|
264
263
|
region=self.region,
|
@@ -347,6 +346,13 @@ class DataformGetWorkflowInvocationOperator(GoogleCloudBaseOperator):
|
|
347
346
|
timeout=self.timeout,
|
348
347
|
metadata=self.metadata,
|
349
348
|
)
|
349
|
+
DataformWorkflowInvocationLink.persist(
|
350
|
+
context=context,
|
351
|
+
project_id=self.project_id,
|
352
|
+
region=self.region,
|
353
|
+
repository_id=self.repository_id,
|
354
|
+
workflow_invocation_id=self.workflow_invocation_id,
|
355
|
+
)
|
350
356
|
return WorkflowInvocation.to_dict(result)
|
351
357
|
|
352
358
|
|
@@ -412,7 +418,6 @@ class DataformQueryWorkflowInvocationActionsOperator(GoogleCloudBaseOperator):
|
|
412
418
|
impersonation_chain=self.impersonation_chain,
|
413
419
|
)
|
414
420
|
DataformWorkflowInvocationLink.persist(
|
415
|
-
operator_instance=self,
|
416
421
|
context=context,
|
417
422
|
project_id=self.project_id,
|
418
423
|
region=self.region,
|
@@ -494,6 +499,13 @@ class DataformCancelWorkflowInvocationOperator(GoogleCloudBaseOperator):
|
|
494
499
|
gcp_conn_id=self.gcp_conn_id,
|
495
500
|
impersonation_chain=self.impersonation_chain,
|
496
501
|
)
|
502
|
+
DataformWorkflowInvocationLink.persist(
|
503
|
+
context=context,
|
504
|
+
project_id=self.project_id,
|
505
|
+
region=self.region,
|
506
|
+
repository_id=self.repository_id,
|
507
|
+
workflow_invocation_id=self.workflow_invocation_id,
|
508
|
+
)
|
497
509
|
hook.cancel_workflow_invocation(
|
498
510
|
project_id=self.project_id,
|
499
511
|
region=self.region,
|
@@ -576,7 +588,6 @@ class DataformCreateRepositoryOperator(GoogleCloudBaseOperator):
|
|
576
588
|
)
|
577
589
|
|
578
590
|
DataformRepositoryLink.persist(
|
579
|
-
operator_instance=self,
|
580
591
|
context=context,
|
581
592
|
project_id=self.project_id,
|
582
593
|
region=self.region,
|
@@ -735,7 +746,6 @@ class DataformCreateWorkspaceOperator(GoogleCloudBaseOperator):
|
|
735
746
|
)
|
736
747
|
|
737
748
|
DataformWorkspaceLink.persist(
|
738
|
-
operator_instance=self,
|
739
749
|
context=context,
|
740
750
|
project_id=self.project_id,
|
741
751
|
region=self.region,
|