apache-airflow-providers-google 16.0.0rc1__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 (166) hide show
  1. airflow/providers/google/__init__.py +1 -1
  2. airflow/providers/google/ads/hooks/ads.py +9 -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 +2 -3
  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 +2 -2
  12. airflow/providers/google/cloud/hooks/looker.py +5 -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/feature_store.py +307 -7
  18. airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +43 -14
  19. airflow/providers/google/cloud/hooks/vertex_ai/ray.py +11 -2
  20. airflow/providers/google/cloud/hooks/vision.py +2 -2
  21. airflow/providers/google/cloud/links/alloy_db.py +0 -46
  22. airflow/providers/google/cloud/links/base.py +75 -11
  23. airflow/providers/google/cloud/links/bigquery.py +0 -47
  24. airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
  25. airflow/providers/google/cloud/links/bigtable.py +0 -48
  26. airflow/providers/google/cloud/links/cloud_build.py +0 -73
  27. airflow/providers/google/cloud/links/cloud_functions.py +0 -33
  28. airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
  29. airflow/providers/google/cloud/links/cloud_run.py +1 -33
  30. airflow/providers/google/cloud/links/cloud_sql.py +0 -33
  31. airflow/providers/google/cloud/links/cloud_storage_transfer.py +16 -43
  32. airflow/providers/google/cloud/links/cloud_tasks.py +6 -25
  33. airflow/providers/google/cloud/links/compute.py +0 -58
  34. airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
  35. airflow/providers/google/cloud/links/datacatalog.py +23 -54
  36. airflow/providers/google/cloud/links/dataflow.py +0 -34
  37. airflow/providers/google/cloud/links/dataform.py +0 -64
  38. airflow/providers/google/cloud/links/datafusion.py +1 -96
  39. airflow/providers/google/cloud/links/dataplex.py +0 -154
  40. airflow/providers/google/cloud/links/dataprep.py +0 -24
  41. airflow/providers/google/cloud/links/dataproc.py +14 -90
  42. airflow/providers/google/cloud/links/datastore.py +0 -31
  43. airflow/providers/google/cloud/links/kubernetes_engine.py +5 -59
  44. airflow/providers/google/cloud/links/life_sciences.py +0 -19
  45. airflow/providers/google/cloud/links/managed_kafka.py +0 -70
  46. airflow/providers/google/cloud/links/mlengine.py +0 -70
  47. airflow/providers/google/cloud/links/pubsub.py +0 -32
  48. airflow/providers/google/cloud/links/spanner.py +0 -33
  49. airflow/providers/google/cloud/links/stackdriver.py +0 -30
  50. airflow/providers/google/cloud/links/translate.py +16 -186
  51. airflow/providers/google/cloud/links/vertex_ai.py +8 -224
  52. airflow/providers/google/cloud/links/workflows.py +0 -52
  53. airflow/providers/google/cloud/operators/alloy_db.py +69 -54
  54. airflow/providers/google/cloud/operators/automl.py +16 -14
  55. airflow/providers/google/cloud/operators/bigquery.py +0 -15
  56. airflow/providers/google/cloud/operators/bigquery_dts.py +2 -4
  57. airflow/providers/google/cloud/operators/bigtable.py +35 -6
  58. airflow/providers/google/cloud/operators/cloud_base.py +21 -1
  59. airflow/providers/google/cloud/operators/cloud_build.py +74 -31
  60. airflow/providers/google/cloud/operators/cloud_composer.py +34 -35
  61. airflow/providers/google/cloud/operators/cloud_memorystore.py +68 -42
  62. airflow/providers/google/cloud/operators/cloud_run.py +0 -1
  63. airflow/providers/google/cloud/operators/cloud_sql.py +11 -15
  64. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -2
  65. airflow/providers/google/cloud/operators/compute.py +7 -39
  66. airflow/providers/google/cloud/operators/datacatalog.py +156 -20
  67. airflow/providers/google/cloud/operators/dataflow.py +37 -14
  68. airflow/providers/google/cloud/operators/dataform.py +14 -4
  69. airflow/providers/google/cloud/operators/datafusion.py +4 -12
  70. airflow/providers/google/cloud/operators/dataplex.py +180 -96
  71. airflow/providers/google/cloud/operators/dataprep.py +0 -4
  72. airflow/providers/google/cloud/operators/dataproc.py +10 -16
  73. airflow/providers/google/cloud/operators/dataproc_metastore.py +95 -87
  74. airflow/providers/google/cloud/operators/datastore.py +21 -5
  75. airflow/providers/google/cloud/operators/dlp.py +3 -26
  76. airflow/providers/google/cloud/operators/functions.py +15 -6
  77. airflow/providers/google/cloud/operators/gcs.py +0 -7
  78. airflow/providers/google/cloud/operators/kubernetes_engine.py +50 -7
  79. airflow/providers/google/cloud/operators/life_sciences.py +0 -1
  80. airflow/providers/google/cloud/operators/managed_kafka.py +106 -51
  81. airflow/providers/google/cloud/operators/mlengine.py +0 -1
  82. airflow/providers/google/cloud/operators/pubsub.py +2 -4
  83. airflow/providers/google/cloud/operators/spanner.py +0 -4
  84. airflow/providers/google/cloud/operators/speech_to_text.py +0 -1
  85. airflow/providers/google/cloud/operators/stackdriver.py +0 -8
  86. airflow/providers/google/cloud/operators/tasks.py +0 -11
  87. airflow/providers/google/cloud/operators/text_to_speech.py +0 -1
  88. airflow/providers/google/cloud/operators/translate.py +37 -13
  89. airflow/providers/google/cloud/operators/translate_speech.py +0 -1
  90. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +31 -18
  91. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +28 -8
  92. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +38 -25
  93. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +69 -7
  94. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +42 -8
  95. airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +531 -0
  96. airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +93 -25
  97. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +10 -8
  98. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +56 -10
  99. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +25 -6
  100. airflow/providers/google/cloud/operators/vertex_ai/ray.py +9 -6
  101. airflow/providers/google/cloud/operators/workflows.py +1 -9
  102. airflow/providers/google/cloud/sensors/bigquery.py +1 -1
  103. airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -1
  104. airflow/providers/google/cloud/sensors/bigtable.py +15 -3
  105. airflow/providers/google/cloud/sensors/cloud_composer.py +6 -1
  106. airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -1
  107. airflow/providers/google/cloud/sensors/dataflow.py +3 -3
  108. airflow/providers/google/cloud/sensors/dataform.py +6 -1
  109. airflow/providers/google/cloud/sensors/datafusion.py +6 -1
  110. airflow/providers/google/cloud/sensors/dataplex.py +6 -1
  111. airflow/providers/google/cloud/sensors/dataprep.py +6 -1
  112. airflow/providers/google/cloud/sensors/dataproc.py +6 -1
  113. airflow/providers/google/cloud/sensors/dataproc_metastore.py +6 -1
  114. airflow/providers/google/cloud/sensors/gcs.py +9 -3
  115. airflow/providers/google/cloud/sensors/looker.py +6 -1
  116. airflow/providers/google/cloud/sensors/pubsub.py +8 -3
  117. airflow/providers/google/cloud/sensors/tasks.py +6 -1
  118. airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +6 -1
  119. airflow/providers/google/cloud/sensors/workflows.py +6 -1
  120. airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +1 -1
  121. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +1 -1
  122. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +1 -2
  123. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +1 -2
  124. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -1
  125. airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
  126. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
  127. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -1
  128. airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +1 -1
  129. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +1 -2
  130. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +1 -1
  131. airflow/providers/google/cloud/transfers/gcs_to_local.py +1 -1
  132. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +1 -1
  133. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +5 -1
  134. airflow/providers/google/cloud/transfers/gdrive_to_local.py +1 -1
  135. airflow/providers/google/cloud/transfers/http_to_gcs.py +1 -1
  136. airflow/providers/google/cloud/transfers/local_to_gcs.py +1 -1
  137. airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +1 -1
  138. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +1 -1
  139. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +2 -2
  140. airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
  141. airflow/providers/google/cloud/utils/field_validator.py +1 -2
  142. airflow/providers/google/common/auth_backend/google_openid.py +2 -1
  143. airflow/providers/google/common/deprecated.py +2 -1
  144. airflow/providers/google/common/hooks/base_google.py +7 -3
  145. airflow/providers/google/common/links/storage.py +0 -22
  146. airflow/providers/google/firebase/operators/firestore.py +1 -1
  147. airflow/providers/google/get_provider_info.py +0 -11
  148. airflow/providers/google/leveldb/hooks/leveldb.py +5 -1
  149. airflow/providers/google/leveldb/operators/leveldb.py +1 -1
  150. airflow/providers/google/marketing_platform/links/analytics_admin.py +3 -6
  151. airflow/providers/google/marketing_platform/operators/analytics_admin.py +0 -1
  152. airflow/providers/google/marketing_platform/operators/campaign_manager.py +4 -4
  153. airflow/providers/google/marketing_platform/operators/display_video.py +6 -6
  154. airflow/providers/google/marketing_platform/operators/search_ads.py +1 -1
  155. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +6 -1
  156. airflow/providers/google/marketing_platform/sensors/display_video.py +6 -1
  157. airflow/providers/google/suite/operators/sheets.py +3 -3
  158. airflow/providers/google/suite/sensors/drive.py +6 -1
  159. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +1 -1
  160. airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
  161. airflow/providers/google/suite/transfers/local_to_drive.py +1 -1
  162. airflow/providers/google/version_compat.py +28 -0
  163. {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/METADATA +27 -28
  164. {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/RECORD +166 -166
  165. {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/WHEEL +0 -0
  166. {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/entry_points.txt +0 -0
@@ -144,7 +144,6 @@ class CloudDLPCancelDLPJobOperator(GoogleCloudBaseOperator):
144
144
  if project_id:
145
145
  CloudDLPJobDetailsLink.persist(
146
146
  context=context,
147
- task_instance=self,
148
147
  project_id=project_id,
149
148
  job_name=self.dlp_job_id,
150
149
  )
@@ -251,7 +250,6 @@ class CloudDLPCreateDeidentifyTemplateOperator(GoogleCloudBaseOperator):
251
250
  if project_id and template_id:
252
251
  CloudDLPDeidentifyTemplateDetailsLink.persist(
253
252
  context=context,
254
- task_instance=self,
255
253
  project_id=project_id,
256
254
  template_name=template_id,
257
255
  )
@@ -363,7 +361,6 @@ class CloudDLPCreateDLPJobOperator(GoogleCloudBaseOperator):
363
361
  if project_id:
364
362
  CloudDLPJobDetailsLink.persist(
365
363
  context=context,
366
- task_instance=self,
367
364
  project_id=project_id,
368
365
  job_name=result["name"].split("/")[-1] if result["name"] else None,
369
366
  )
@@ -473,7 +470,6 @@ class CloudDLPCreateInspectTemplateOperator(GoogleCloudBaseOperator):
473
470
  if project_id and template_id:
474
471
  CloudDLPInspectTemplateDetailsLink.persist(
475
472
  context=context,
476
- task_instance=self,
477
473
  project_id=project_id,
478
474
  template_name=template_id,
479
475
  )
@@ -578,7 +574,6 @@ class CloudDLPCreateJobTriggerOperator(GoogleCloudBaseOperator):
578
574
  if project_id:
579
575
  CloudDLPJobTriggerDetailsLink.persist(
580
576
  context=context,
581
- task_instance=self,
582
577
  project_id=project_id,
583
578
  trigger_name=trigger_name,
584
579
  )
@@ -692,7 +687,6 @@ class CloudDLPCreateStoredInfoTypeOperator(GoogleCloudBaseOperator):
692
687
  if project_id and stored_info_type_id:
693
688
  CloudDLPInfoTypeDetailsLink.persist(
694
689
  context=context,
695
- task_instance=self,
696
690
  project_id=project_id,
697
691
  info_type_name=stored_info_type_id,
698
692
  )
@@ -880,7 +874,6 @@ class CloudDLPDeleteDeidentifyTemplateOperator(GoogleCloudBaseOperator):
880
874
  if project_id:
881
875
  CloudDLPDeidentifyTemplatesListLink.persist(
882
876
  context=context,
883
- task_instance=self,
884
877
  project_id=project_id,
885
878
  )
886
879
  except NotFound:
@@ -966,7 +959,6 @@ class CloudDLPDeleteDLPJobOperator(GoogleCloudBaseOperator):
966
959
  if project_id:
967
960
  CloudDLPJobsListLink.persist(
968
961
  context=context,
969
- task_instance=self,
970
962
  project_id=project_id,
971
963
  )
972
964
 
@@ -1056,7 +1048,6 @@ class CloudDLPDeleteInspectTemplateOperator(GoogleCloudBaseOperator):
1056
1048
  if project_id:
1057
1049
  CloudDLPInspectTemplatesListLink.persist(
1058
1050
  context=context,
1059
- task_instance=self,
1060
1051
  project_id=project_id,
1061
1052
  )
1062
1053
 
@@ -1140,7 +1131,6 @@ class CloudDLPDeleteJobTriggerOperator(GoogleCloudBaseOperator):
1140
1131
  if project_id:
1141
1132
  CloudDLPJobTriggersListLink.persist(
1142
1133
  context=context,
1143
- task_instance=self,
1144
1134
  project_id=project_id,
1145
1135
  )
1146
1136
 
@@ -1232,7 +1222,6 @@ class CloudDLPDeleteStoredInfoTypeOperator(GoogleCloudBaseOperator):
1232
1222
  if project_id:
1233
1223
  CloudDLPInfoTypesListLink.persist(
1234
1224
  context=context,
1235
- task_instance=self,
1236
1225
  project_id=project_id,
1237
1226
  )
1238
1227
 
@@ -1318,7 +1307,9 @@ class CloudDLPGetDeidentifyTemplateOperator(GoogleCloudBaseOperator):
1318
1307
  project_id = self.project_id or hook.project_id
1319
1308
  if project_id:
1320
1309
  CloudDLPDeidentifyTemplateDetailsLink.persist(
1321
- context=context, task_instance=self, project_id=project_id, template_name=self.template_id
1310
+ context=context,
1311
+ project_id=project_id,
1312
+ template_name=self.template_id,
1322
1313
  )
1323
1314
 
1324
1315
  return DeidentifyTemplate.to_dict(template)
@@ -1400,7 +1391,6 @@ class CloudDLPGetDLPJobOperator(GoogleCloudBaseOperator):
1400
1391
  if project_id:
1401
1392
  CloudDLPJobDetailsLink.persist(
1402
1393
  context=context,
1403
- task_instance=self,
1404
1394
  project_id=project_id,
1405
1395
  job_name=self.dlp_job_id,
1406
1396
  )
@@ -1490,7 +1480,6 @@ class CloudDLPGetInspectTemplateOperator(GoogleCloudBaseOperator):
1490
1480
  if project_id:
1491
1481
  CloudDLPInspectTemplateDetailsLink.persist(
1492
1482
  context=context,
1493
- task_instance=self,
1494
1483
  project_id=project_id,
1495
1484
  template_name=self.template_id,
1496
1485
  )
@@ -1574,7 +1563,6 @@ class CloudDLPGetDLPJobTriggerOperator(GoogleCloudBaseOperator):
1574
1563
  if project_id:
1575
1564
  CloudDLPJobTriggerDetailsLink.persist(
1576
1565
  context=context,
1577
- task_instance=self,
1578
1566
  project_id=project_id,
1579
1567
  trigger_name=self.job_trigger_id,
1580
1568
  )
@@ -1664,7 +1652,6 @@ class CloudDLPGetStoredInfoTypeOperator(GoogleCloudBaseOperator):
1664
1652
  if project_id:
1665
1653
  CloudDLPInfoTypeDetailsLink.persist(
1666
1654
  context=context,
1667
- task_instance=self,
1668
1655
  project_id=project_id,
1669
1656
  info_type_name=self.stored_info_type_id,
1670
1657
  )
@@ -1844,7 +1831,6 @@ class CloudDLPListDeidentifyTemplatesOperator(GoogleCloudBaseOperator):
1844
1831
  if project_id:
1845
1832
  CloudDLPDeidentifyTemplatesListLink.persist(
1846
1833
  context=context,
1847
- task_instance=self,
1848
1834
  project_id=project_id,
1849
1835
  )
1850
1836
 
@@ -1940,7 +1926,6 @@ class CloudDLPListDLPJobsOperator(GoogleCloudBaseOperator):
1940
1926
  if project_id:
1941
1927
  CloudDLPJobsListLink.persist(
1942
1928
  context=context,
1943
- task_instance=self,
1944
1929
  project_id=project_id,
1945
1930
  )
1946
1931
 
@@ -2025,7 +2010,6 @@ class CloudDLPListInfoTypesOperator(GoogleCloudBaseOperator):
2025
2010
  if project_id:
2026
2011
  CloudDLPPossibleInfoTypesListLink.persist(
2027
2012
  context=context,
2028
- task_instance=self,
2029
2013
  project_id=project_id,
2030
2014
  )
2031
2015
 
@@ -2119,7 +2103,6 @@ class CloudDLPListInspectTemplatesOperator(GoogleCloudBaseOperator):
2119
2103
  if project_id:
2120
2104
  CloudDLPInspectTemplatesListLink.persist(
2121
2105
  context=context,
2122
- task_instance=self,
2123
2106
  project_id=project_id,
2124
2107
  )
2125
2108
 
@@ -2211,7 +2194,6 @@ class CloudDLPListJobTriggersOperator(GoogleCloudBaseOperator):
2211
2194
  if project_id:
2212
2195
  CloudDLPJobTriggersListLink.persist(
2213
2196
  context=context,
2214
- task_instance=self,
2215
2197
  project_id=project_id,
2216
2198
  )
2217
2199
 
@@ -2305,7 +2287,6 @@ class CloudDLPListStoredInfoTypesOperator(GoogleCloudBaseOperator):
2305
2287
  if project_id:
2306
2288
  CloudDLPInfoTypesListLink.persist(
2307
2289
  context=context,
2308
- task_instance=self,
2309
2290
  project_id=project_id,
2310
2291
  )
2311
2292
 
@@ -2592,7 +2573,6 @@ class CloudDLPUpdateDeidentifyTemplateOperator(GoogleCloudBaseOperator):
2592
2573
  if project_id:
2593
2574
  CloudDLPDeidentifyTemplateDetailsLink.persist(
2594
2575
  context=context,
2595
- task_instance=self,
2596
2576
  project_id=project_id,
2597
2577
  template_name=self.template_id,
2598
2578
  )
@@ -2692,7 +2672,6 @@ class CloudDLPUpdateInspectTemplateOperator(GoogleCloudBaseOperator):
2692
2672
  if project_id:
2693
2673
  CloudDLPInspectTemplateDetailsLink.persist(
2694
2674
  context=context,
2695
- task_instance=self,
2696
2675
  project_id=project_id,
2697
2676
  template_name=self.template_id,
2698
2677
  )
@@ -2786,7 +2765,6 @@ class CloudDLPUpdateJobTriggerOperator(GoogleCloudBaseOperator):
2786
2765
  if project_id:
2787
2766
  CloudDLPJobTriggerDetailsLink.persist(
2788
2767
  context=context,
2789
- task_instance=self,
2790
2768
  project_id=project_id,
2791
2769
  trigger_name=self.job_trigger_id,
2792
2770
  )
@@ -2887,7 +2865,6 @@ class CloudDLPUpdateStoredInfoTypeOperator(GoogleCloudBaseOperator):
2887
2865
  if project_id:
2888
2866
  CloudDLPInfoTypeDetailsLink.persist(
2889
2867
  context=context,
2890
- task_instance=self,
2891
2868
  project_id=project_id,
2892
2869
  info_type_name=self.stored_info_type_id,
2893
2870
  )
@@ -219,6 +219,13 @@ class CloudFunctionDeployFunctionOperator(GoogleCloudBaseOperator):
219
219
  self.body["labels"] = {}
220
220
  self.body["labels"].update({"airflow-version": "v" + version.replace(".", "-").replace("+", "-")})
221
221
 
222
+ @property
223
+ def extra_links_params(self) -> dict[str, Any]:
224
+ return {
225
+ "location": self.location,
226
+ "function_name": self.body["name"].split("/")[-1],
227
+ }
228
+
222
229
  def execute(self, context: Context):
223
230
  hook = CloudFunctionsHook(
224
231
  gcp_conn_id=self.gcp_conn_id,
@@ -237,7 +244,6 @@ class CloudFunctionDeployFunctionOperator(GoogleCloudBaseOperator):
237
244
  if project_id:
238
245
  CloudFunctionsDetailsLink.persist(
239
246
  context=context,
240
- task_instance=self,
241
247
  location=self.location,
242
248
  project_id=project_id,
243
249
  function_name=self.body["name"].split("/")[-1],
@@ -394,7 +400,6 @@ class CloudFunctionDeleteFunctionOperator(GoogleCloudBaseOperator):
394
400
  if project_id:
395
401
  CloudFunctionsListLink.persist(
396
402
  context=context,
397
- task_instance=self,
398
403
  project_id=project_id,
399
404
  )
400
405
  return hook.delete_function(self.name)
@@ -462,6 +467,13 @@ class CloudFunctionInvokeFunctionOperator(GoogleCloudBaseOperator):
462
467
  self.api_version = api_version
463
468
  self.impersonation_chain = impersonation_chain
464
469
 
470
+ @property
471
+ def extra_links_params(self) -> dict[str, Any]:
472
+ return {
473
+ "location": self.location,
474
+ "function_name": self.function_id,
475
+ }
476
+
465
477
  def execute(self, context: Context):
466
478
  hook = CloudFunctionsHook(
467
479
  api_version=self.api_version,
@@ -476,16 +488,13 @@ class CloudFunctionInvokeFunctionOperator(GoogleCloudBaseOperator):
476
488
  project_id=self.project_id,
477
489
  )
478
490
  self.log.info("Function called successfully. Execution id %s", result.get("executionId"))
479
- self.xcom_push(context=context, key="execution_id", value=result.get("executionId"))
491
+ context["ti"].xcom_push(key="execution_id", value=result.get("executionId"))
480
492
 
481
493
  project_id = self.project_id or hook.project_id
482
494
  if project_id:
483
495
  CloudFunctionsDetailsLink.persist(
484
496
  context=context,
485
- task_instance=self,
486
- location=self.location,
487
497
  project_id=project_id,
488
- function_name=self.function_id,
489
498
  )
490
499
 
491
500
  return result
@@ -145,7 +145,6 @@ class GCSCreateBucketOperator(GoogleCloudBaseOperator):
145
145
  )
146
146
  StorageLink.persist(
147
147
  context=context,
148
- task_instance=self,
149
148
  uri=self.bucket_name,
150
149
  project_id=self.project_id or hook.project_id,
151
150
  )
@@ -260,7 +259,6 @@ class GCSListObjectsOperator(GoogleCloudBaseOperator):
260
259
 
261
260
  StorageLink.persist(
262
261
  context=context,
263
- task_instance=self,
264
262
  uri=self.bucket,
265
263
  project_id=hook.project_id,
266
264
  )
@@ -439,7 +437,6 @@ class GCSBucketCreateAclEntryOperator(GoogleCloudBaseOperator):
439
437
  )
440
438
  StorageLink.persist(
441
439
  context=context,
442
- task_instance=self,
443
440
  uri=self.bucket,
444
441
  project_id=hook.project_id,
445
442
  )
@@ -522,7 +519,6 @@ class GCSObjectCreateAclEntryOperator(GoogleCloudBaseOperator):
522
519
  )
523
520
  FileDetailsLink.persist(
524
521
  context=context,
525
- task_instance=self,
526
522
  uri=f"{self.bucket}/{self.object_name}",
527
523
  project_id=hook.project_id,
528
524
  )
@@ -631,7 +627,6 @@ class GCSFileTransformOperator(GoogleCloudBaseOperator):
631
627
  self.log.info("Uploading file to %s as %s", self.destination_bucket, self.destination_object)
632
628
  FileDetailsLink.persist(
633
629
  context=context,
634
- task_instance=self,
635
630
  uri=f"{self.destination_bucket}/{self.destination_object}",
636
631
  project_id=hook.project_id,
637
632
  )
@@ -829,7 +824,6 @@ class GCSTimeSpanFileTransformOperator(GoogleCloudBaseOperator):
829
824
  )
830
825
  StorageLink.persist(
831
826
  context=context,
832
- task_instance=self,
833
827
  uri=self.destination_bucket,
834
828
  project_id=destination_hook.project_id,
835
829
  )
@@ -1080,7 +1074,6 @@ class GCSSynchronizeBucketsOperator(GoogleCloudBaseOperator):
1080
1074
  )
1081
1075
  StorageLink.persist(
1082
1076
  context=context,
1083
- task_instance=self,
1084
1077
  uri=self._get_uri(self.destination_bucket, self.destination_object),
1085
1078
  project_id=hook.project_id,
1086
1079
  )
@@ -453,8 +453,15 @@ class GKECreateClusterOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
453
453
  stacklevel=2,
454
454
  )
455
455
 
456
+ @property
457
+ def extra_links_params(self) -> dict[str, Any]:
458
+ return {
459
+ "project_id": self.project_id,
460
+ "location": self.location,
461
+ }
462
+
456
463
  def execute(self, context: Context) -> str:
457
- KubernetesEngineClusterLink.persist(context=context, task_instance=self, cluster=self.body)
464
+ KubernetesEngineClusterLink.persist(context=context, cluster=self.body)
458
465
 
459
466
  try:
460
467
  operation = self.cluster_hook.create_cluster(
@@ -553,9 +560,16 @@ class GKEStartKueueInsideClusterOperator(GKEOperatorMixin, KubernetesInstallKueu
553
560
  self.use_dns_endpoint = use_dns_endpoint
554
561
  self.impersonation_chain = impersonation_chain
555
562
 
563
+ @property
564
+ def extra_links_params(self) -> dict[str, Any]:
565
+ return {
566
+ "project_id": self.project_id,
567
+ "location": self.location,
568
+ }
569
+
556
570
  def execute(self, context: Context):
557
571
  cluster = self.cluster_hook.get_cluster(name=self.cluster_name, project_id=self.project_id)
558
- KubernetesEngineClusterLink.persist(context=context, task_instance=self, cluster=cluster)
572
+ KubernetesEngineClusterLink.persist(context=context, cluster=cluster)
559
573
 
560
574
  if self.cluster_hook.check_cluster_autoscaling_ability(cluster=cluster):
561
575
  super().execute(context)
@@ -854,7 +868,14 @@ class GKEDescribeJobOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
854
868
  self.cluster_name,
855
869
  self.job,
856
870
  )
857
- KubernetesEngineJobLink.persist(context=context, task_instance=self)
871
+ KubernetesEngineJobLink.persist(
872
+ context=context,
873
+ location=self.location,
874
+ cluster_name=self.cluster_name,
875
+ namespace=self.job.metadata.namespace,
876
+ job_name=self.job.metadata.name,
877
+ project_id=self.project_id,
878
+ )
858
879
  return None
859
880
 
860
881
 
@@ -918,6 +939,15 @@ class GKEListJobsOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
918
939
  self.namespace = namespace
919
940
  self.do_xcom_push = do_xcom_push
920
941
 
942
+ @property
943
+ def extra_links_params(self) -> dict[str, Any]:
944
+ return {
945
+ "location": self.location,
946
+ "cluster_name": self.cluster_name,
947
+ "namespace": self.namespace,
948
+ "project_id": self.project_id,
949
+ }
950
+
921
951
  def execute(self, context: Context) -> dict:
922
952
  if self.namespace:
923
953
  jobs = self.hook.list_jobs_from_namespace(namespace=self.namespace)
@@ -928,7 +958,7 @@ class GKEListJobsOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
928
958
  if self.do_xcom_push:
929
959
  ti = context["ti"]
930
960
  ti.xcom_push(key="jobs_list", value=V1JobList.to_dict(jobs))
931
- KubernetesEngineWorkloadsLink.persist(context=context, task_instance=self)
961
+ KubernetesEngineWorkloadsLink.persist(context=context)
932
962
  return V1JobList.to_dict(jobs)
933
963
 
934
964
 
@@ -1270,8 +1300,14 @@ class GKESuspendJobOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
1270
1300
  self.name,
1271
1301
  self.cluster_name,
1272
1302
  )
1273
- KubernetesEngineJobLink.persist(context=context, task_instance=self)
1274
-
1303
+ KubernetesEngineJobLink.persist(
1304
+ context=context,
1305
+ location=self.location,
1306
+ cluster_name=self.cluster_name,
1307
+ namespace=self.job.metadata.namespace,
1308
+ job_name=self.job.metadata.name,
1309
+ project_id=self.project_id,
1310
+ )
1275
1311
  return k8s.V1Job.to_dict(self.job)
1276
1312
 
1277
1313
 
@@ -1344,6 +1380,13 @@ class GKEResumeJobOperator(GKEOperatorMixin, GoogleCloudBaseOperator):
1344
1380
  self.name,
1345
1381
  self.cluster_name,
1346
1382
  )
1347
- KubernetesEngineJobLink.persist(context=context, task_instance=self)
1383
+ KubernetesEngineJobLink.persist(
1384
+ context=context,
1385
+ location=self.location,
1386
+ cluster_name=self.cluster_name,
1387
+ namespace=self.job.metadata.namespace,
1388
+ job_name=self.job.metadata.name,
1389
+ project_id=self.project_id,
1390
+ )
1348
1391
 
1349
1392
  return k8s.V1Job.to_dict(self.job)
@@ -113,7 +113,6 @@ class LifeSciencesRunPipelineOperator(GoogleCloudBaseOperator):
113
113
  if project_id:
114
114
  LifeSciencesLink.persist(
115
115
  context=context,
116
- task_instance=self,
117
116
  project_id=project_id,
118
117
  )
119
118
  return hook.run_pipeline(body=self.body, location=self.location, project_id=self.project_id)