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.
Files changed (172) hide show
  1. airflow/providers/google/__init__.py +1 -1
  2. airflow/providers/google/ads/hooks/ads.py +43 -5
  3. airflow/providers/google/ads/operators/ads.py +1 -1
  4. airflow/providers/google/ads/transfers/ads_to_gcs.py +1 -1
  5. airflow/providers/google/cloud/hooks/bigquery.py +63 -77
  6. airflow/providers/google/cloud/hooks/cloud_sql.py +8 -4
  7. airflow/providers/google/cloud/hooks/datacatalog.py +9 -1
  8. airflow/providers/google/cloud/hooks/dataflow.py +2 -2
  9. airflow/providers/google/cloud/hooks/dataplex.py +1 -1
  10. airflow/providers/google/cloud/hooks/dataprep.py +4 -1
  11. airflow/providers/google/cloud/hooks/gcs.py +5 -5
  12. airflow/providers/google/cloud/hooks/looker.py +10 -1
  13. airflow/providers/google/cloud/hooks/mlengine.py +2 -1
  14. airflow/providers/google/cloud/hooks/secret_manager.py +102 -10
  15. airflow/providers/google/cloud/hooks/spanner.py +2 -2
  16. airflow/providers/google/cloud/hooks/translate.py +1 -1
  17. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +0 -36
  18. airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +307 -7
  19. airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +44 -80
  20. airflow/providers/google/cloud/hooks/vertex_ai/ray.py +11 -2
  21. airflow/providers/google/cloud/hooks/vision.py +2 -2
  22. airflow/providers/google/cloud/links/alloy_db.py +0 -46
  23. airflow/providers/google/cloud/links/base.py +75 -11
  24. airflow/providers/google/cloud/links/bigquery.py +0 -47
  25. airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
  26. airflow/providers/google/cloud/links/bigtable.py +0 -48
  27. airflow/providers/google/cloud/links/cloud_build.py +0 -73
  28. airflow/providers/google/cloud/links/cloud_functions.py +0 -33
  29. airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
  30. airflow/providers/google/cloud/links/cloud_run.py +27 -0
  31. airflow/providers/google/cloud/links/cloud_sql.py +0 -33
  32. airflow/providers/google/cloud/links/cloud_storage_transfer.py +16 -43
  33. airflow/providers/google/cloud/links/cloud_tasks.py +6 -25
  34. airflow/providers/google/cloud/links/compute.py +0 -58
  35. airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
  36. airflow/providers/google/cloud/links/datacatalog.py +23 -54
  37. airflow/providers/google/cloud/links/dataflow.py +0 -34
  38. airflow/providers/google/cloud/links/dataform.py +0 -64
  39. airflow/providers/google/cloud/links/datafusion.py +1 -96
  40. airflow/providers/google/cloud/links/dataplex.py +0 -154
  41. airflow/providers/google/cloud/links/dataprep.py +0 -24
  42. airflow/providers/google/cloud/links/dataproc.py +14 -90
  43. airflow/providers/google/cloud/links/datastore.py +0 -31
  44. airflow/providers/google/cloud/links/kubernetes_engine.py +5 -59
  45. airflow/providers/google/cloud/links/life_sciences.py +0 -19
  46. airflow/providers/google/cloud/links/managed_kafka.py +0 -70
  47. airflow/providers/google/cloud/links/mlengine.py +0 -70
  48. airflow/providers/google/cloud/links/pubsub.py +0 -32
  49. airflow/providers/google/cloud/links/spanner.py +0 -33
  50. airflow/providers/google/cloud/links/stackdriver.py +0 -30
  51. airflow/providers/google/cloud/links/translate.py +16 -186
  52. airflow/providers/google/cloud/links/vertex_ai.py +8 -224
  53. airflow/providers/google/cloud/links/workflows.py +0 -52
  54. airflow/providers/google/cloud/log/gcs_task_handler.py +4 -4
  55. airflow/providers/google/cloud/operators/alloy_db.py +69 -54
  56. airflow/providers/google/cloud/operators/automl.py +16 -14
  57. airflow/providers/google/cloud/operators/bigquery.py +49 -25
  58. airflow/providers/google/cloud/operators/bigquery_dts.py +2 -4
  59. airflow/providers/google/cloud/operators/bigtable.py +35 -6
  60. airflow/providers/google/cloud/operators/cloud_base.py +21 -1
  61. airflow/providers/google/cloud/operators/cloud_build.py +74 -31
  62. airflow/providers/google/cloud/operators/cloud_composer.py +34 -35
  63. airflow/providers/google/cloud/operators/cloud_memorystore.py +68 -42
  64. airflow/providers/google/cloud/operators/cloud_run.py +9 -1
  65. airflow/providers/google/cloud/operators/cloud_sql.py +11 -15
  66. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -2
  67. airflow/providers/google/cloud/operators/compute.py +7 -39
  68. airflow/providers/google/cloud/operators/datacatalog.py +156 -20
  69. airflow/providers/google/cloud/operators/dataflow.py +37 -14
  70. airflow/providers/google/cloud/operators/dataform.py +14 -4
  71. airflow/providers/google/cloud/operators/datafusion.py +4 -12
  72. airflow/providers/google/cloud/operators/dataplex.py +180 -96
  73. airflow/providers/google/cloud/operators/dataprep.py +0 -4
  74. airflow/providers/google/cloud/operators/dataproc.py +10 -16
  75. airflow/providers/google/cloud/operators/dataproc_metastore.py +95 -87
  76. airflow/providers/google/cloud/operators/datastore.py +21 -5
  77. airflow/providers/google/cloud/operators/dlp.py +3 -26
  78. airflow/providers/google/cloud/operators/functions.py +15 -6
  79. airflow/providers/google/cloud/operators/gcs.py +1 -7
  80. airflow/providers/google/cloud/operators/kubernetes_engine.py +53 -92
  81. airflow/providers/google/cloud/operators/life_sciences.py +0 -1
  82. airflow/providers/google/cloud/operators/managed_kafka.py +106 -51
  83. airflow/providers/google/cloud/operators/mlengine.py +0 -1
  84. airflow/providers/google/cloud/operators/pubsub.py +4 -5
  85. airflow/providers/google/cloud/operators/spanner.py +0 -4
  86. airflow/providers/google/cloud/operators/speech_to_text.py +0 -1
  87. airflow/providers/google/cloud/operators/stackdriver.py +0 -8
  88. airflow/providers/google/cloud/operators/tasks.py +0 -11
  89. airflow/providers/google/cloud/operators/text_to_speech.py +0 -1
  90. airflow/providers/google/cloud/operators/translate.py +37 -13
  91. airflow/providers/google/cloud/operators/translate_speech.py +0 -1
  92. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +31 -18
  93. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +28 -8
  94. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +38 -25
  95. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +69 -7
  96. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +42 -8
  97. airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +531 -0
  98. airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +93 -117
  99. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +10 -8
  100. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +56 -10
  101. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +29 -6
  102. airflow/providers/google/cloud/operators/vertex_ai/ray.py +9 -6
  103. airflow/providers/google/cloud/operators/workflows.py +1 -9
  104. airflow/providers/google/cloud/sensors/bigquery.py +1 -1
  105. airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -1
  106. airflow/providers/google/cloud/sensors/bigtable.py +15 -3
  107. airflow/providers/google/cloud/sensors/cloud_composer.py +6 -1
  108. airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -1
  109. airflow/providers/google/cloud/sensors/dataflow.py +3 -3
  110. airflow/providers/google/cloud/sensors/dataform.py +6 -1
  111. airflow/providers/google/cloud/sensors/datafusion.py +6 -1
  112. airflow/providers/google/cloud/sensors/dataplex.py +6 -1
  113. airflow/providers/google/cloud/sensors/dataprep.py +6 -1
  114. airflow/providers/google/cloud/sensors/dataproc.py +6 -1
  115. airflow/providers/google/cloud/sensors/dataproc_metastore.py +6 -1
  116. airflow/providers/google/cloud/sensors/gcs.py +9 -3
  117. airflow/providers/google/cloud/sensors/looker.py +6 -1
  118. airflow/providers/google/cloud/sensors/pubsub.py +8 -3
  119. airflow/providers/google/cloud/sensors/tasks.py +6 -1
  120. airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +6 -1
  121. airflow/providers/google/cloud/sensors/workflows.py +6 -1
  122. airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +1 -1
  123. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +1 -1
  124. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +10 -7
  125. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +1 -2
  126. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -1
  127. airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
  128. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
  129. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -1
  130. airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +2 -2
  131. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +1 -2
  132. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +1 -1
  133. airflow/providers/google/cloud/transfers/gcs_to_local.py +1 -1
  134. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +1 -1
  135. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +5 -1
  136. airflow/providers/google/cloud/transfers/gdrive_to_local.py +1 -1
  137. airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
  138. airflow/providers/google/cloud/transfers/local_to_gcs.py +1 -1
  139. airflow/providers/google/cloud/transfers/s3_to_gcs.py +11 -5
  140. airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +1 -1
  141. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +1 -1
  142. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +2 -2
  143. airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
  144. airflow/providers/google/cloud/triggers/bigquery.py +32 -5
  145. airflow/providers/google/cloud/triggers/dataproc.py +62 -10
  146. airflow/providers/google/cloud/utils/field_validator.py +1 -2
  147. airflow/providers/google/common/auth_backend/google_openid.py +2 -1
  148. airflow/providers/google/common/deprecated.py +2 -1
  149. airflow/providers/google/common/hooks/base_google.py +7 -3
  150. airflow/providers/google/common/links/storage.py +0 -22
  151. airflow/providers/google/firebase/operators/firestore.py +1 -1
  152. airflow/providers/google/get_provider_info.py +14 -16
  153. airflow/providers/google/leveldb/hooks/leveldb.py +30 -1
  154. airflow/providers/google/leveldb/operators/leveldb.py +1 -1
  155. airflow/providers/google/marketing_platform/links/analytics_admin.py +3 -6
  156. airflow/providers/google/marketing_platform/operators/analytics_admin.py +0 -1
  157. airflow/providers/google/marketing_platform/operators/campaign_manager.py +4 -4
  158. airflow/providers/google/marketing_platform/operators/display_video.py +6 -6
  159. airflow/providers/google/marketing_platform/operators/search_ads.py +1 -1
  160. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +6 -1
  161. airflow/providers/google/marketing_platform/sensors/display_video.py +6 -1
  162. airflow/providers/google/suite/operators/sheets.py +3 -3
  163. airflow/providers/google/suite/sensors/drive.py +6 -1
  164. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +1 -1
  165. airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
  166. airflow/providers/google/suite/transfers/local_to_drive.py +1 -1
  167. airflow/providers/google/version_compat.py +28 -0
  168. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/METADATA +35 -35
  169. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/RECORD +171 -170
  170. airflow/providers/google/cloud/links/automl.py +0 -193
  171. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/WHEEL +0 -0
  172. {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
- self.xcom_push(context, key="entry_id", value=entry_id)
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
- self.xcom_push(context, key="entry_group_id", value=entry_group_id)
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
- self.xcom_push(context, key="tag_id", value=tag_id)
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
- self.xcom_push(context, key="tag_template_id", value=tag_template)
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
- self.xcom_push(context, key="tag_template_field_id", value=self.tag_template_field_id)
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(self, context, self.project_id, self.location, self.job.get("id"))
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
- self.xcom_push(context, key="job_id", value=job_id)
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(self, context, self.project_id, self.location, job_id)
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
- self.xcom_push(context, key="job_id", value=job_id)
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(self, context, self.project_id, self.location, self.job.get("id"))
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
- self.xcom_push(context, key="job_id", value=job_id)
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(self, context, self.project_id, self.location, job_id)
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
- self.xcom_push(context, key="job_id", value=job_id)
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(self, context, self.project_id, self.region, self.job_id)
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
- self.xcom_push(context, key="job_id", value=job["id"])
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(self, context, self.project_id, self.location, self.pipeline_name)
1007
- self.xcom_push(context, key="pipeline_name", value=self.pipeline_name)
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
- self.xcom_push(context, key="job_id", value=job_id)
1079
- DataflowJobLink.persist(self, context, self.project_id, self.location, job_id)
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,