apache-airflow-providers-google 14.0.0__py3-none-any.whl → 19.1.0rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
  2. airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
  3. airflow/providers/google/__init__.py +3 -3
  4. airflow/providers/google/_vendor/__init__.py +0 -0
  5. airflow/providers/google/_vendor/json_merge_patch.py +91 -0
  6. airflow/providers/google/ads/hooks/ads.py +52 -43
  7. airflow/providers/google/ads/operators/ads.py +2 -2
  8. airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
  9. airflow/providers/google/assets/gcs.py +1 -11
  10. airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
  11. airflow/providers/google/cloud/bundles/gcs.py +161 -0
  12. airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
  13. airflow/providers/google/cloud/hooks/bigquery.py +195 -318
  14. airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
  15. airflow/providers/google/cloud/hooks/bigtable.py +3 -2
  16. airflow/providers/google/cloud/hooks/cloud_batch.py +8 -9
  17. airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
  18. airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
  19. airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
  20. airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
  21. airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
  22. airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
  23. airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
  24. airflow/providers/google/cloud/hooks/compute.py +7 -6
  25. airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
  26. airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
  27. airflow/providers/google/cloud/hooks/dataflow.py +87 -242
  28. airflow/providers/google/cloud/hooks/dataform.py +9 -14
  29. airflow/providers/google/cloud/hooks/datafusion.py +7 -9
  30. airflow/providers/google/cloud/hooks/dataplex.py +13 -12
  31. airflow/providers/google/cloud/hooks/dataprep.py +2 -2
  32. airflow/providers/google/cloud/hooks/dataproc.py +76 -74
  33. airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
  34. airflow/providers/google/cloud/hooks/dlp.py +5 -4
  35. airflow/providers/google/cloud/hooks/gcs.py +144 -33
  36. airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
  37. airflow/providers/google/cloud/hooks/kms.py +3 -2
  38. airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
  39. airflow/providers/google/cloud/hooks/looker.py +6 -1
  40. airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
  41. airflow/providers/google/cloud/hooks/mlengine.py +7 -8
  42. airflow/providers/google/cloud/hooks/natural_language.py +3 -2
  43. airflow/providers/google/cloud/hooks/os_login.py +3 -2
  44. airflow/providers/google/cloud/hooks/pubsub.py +6 -6
  45. airflow/providers/google/cloud/hooks/secret_manager.py +105 -12
  46. airflow/providers/google/cloud/hooks/spanner.py +75 -10
  47. airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
  48. airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
  49. airflow/providers/google/cloud/hooks/tasks.py +4 -3
  50. airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
  51. airflow/providers/google/cloud/hooks/translate.py +8 -17
  52. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
  53. airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
  54. airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
  55. airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
  56. airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
  57. airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
  58. airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
  59. airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
  60. airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
  61. airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
  62. airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
  63. airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
  64. airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
  65. airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
  66. airflow/providers/google/cloud/hooks/vision.py +7 -7
  67. airflow/providers/google/cloud/hooks/workflows.py +4 -3
  68. airflow/providers/google/cloud/links/alloy_db.py +0 -46
  69. airflow/providers/google/cloud/links/base.py +77 -7
  70. airflow/providers/google/cloud/links/bigquery.py +0 -47
  71. airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
  72. airflow/providers/google/cloud/links/bigtable.py +0 -48
  73. airflow/providers/google/cloud/links/cloud_build.py +0 -73
  74. airflow/providers/google/cloud/links/cloud_functions.py +0 -33
  75. airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
  76. airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
  77. airflow/providers/google/cloud/links/cloud_sql.py +0 -33
  78. airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -46
  79. airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
  80. airflow/providers/google/cloud/links/compute.py +0 -58
  81. airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
  82. airflow/providers/google/cloud/links/datacatalog.py +23 -54
  83. airflow/providers/google/cloud/links/dataflow.py +0 -34
  84. airflow/providers/google/cloud/links/dataform.py +0 -64
  85. airflow/providers/google/cloud/links/datafusion.py +1 -90
  86. airflow/providers/google/cloud/links/dataplex.py +0 -154
  87. airflow/providers/google/cloud/links/dataprep.py +0 -24
  88. airflow/providers/google/cloud/links/dataproc.py +11 -89
  89. airflow/providers/google/cloud/links/datastore.py +0 -31
  90. airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
  91. airflow/providers/google/cloud/links/managed_kafka.py +11 -51
  92. airflow/providers/google/cloud/links/mlengine.py +0 -70
  93. airflow/providers/google/cloud/links/pubsub.py +0 -32
  94. airflow/providers/google/cloud/links/spanner.py +0 -33
  95. airflow/providers/google/cloud/links/stackdriver.py +0 -30
  96. airflow/providers/google/cloud/links/translate.py +17 -187
  97. airflow/providers/google/cloud/links/vertex_ai.py +28 -195
  98. airflow/providers/google/cloud/links/workflows.py +0 -52
  99. airflow/providers/google/cloud/log/gcs_task_handler.py +166 -118
  100. airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
  101. airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
  102. airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
  103. airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
  104. airflow/providers/google/cloud/openlineage/facets.py +141 -40
  105. airflow/providers/google/cloud/openlineage/mixins.py +14 -13
  106. airflow/providers/google/cloud/openlineage/utils.py +19 -3
  107. airflow/providers/google/cloud/operators/alloy_db.py +76 -61
  108. airflow/providers/google/cloud/operators/bigquery.py +104 -667
  109. airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
  110. airflow/providers/google/cloud/operators/bigtable.py +38 -7
  111. airflow/providers/google/cloud/operators/cloud_base.py +22 -1
  112. airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
  113. airflow/providers/google/cloud/operators/cloud_build.py +80 -36
  114. airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
  115. airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
  116. airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
  117. airflow/providers/google/cloud/operators/cloud_run.py +39 -20
  118. airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
  119. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
  120. airflow/providers/google/cloud/operators/compute.py +18 -50
  121. airflow/providers/google/cloud/operators/datacatalog.py +167 -29
  122. airflow/providers/google/cloud/operators/dataflow.py +38 -15
  123. airflow/providers/google/cloud/operators/dataform.py +19 -7
  124. airflow/providers/google/cloud/operators/datafusion.py +43 -43
  125. airflow/providers/google/cloud/operators/dataplex.py +212 -126
  126. airflow/providers/google/cloud/operators/dataprep.py +1 -5
  127. airflow/providers/google/cloud/operators/dataproc.py +134 -207
  128. airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
  129. airflow/providers/google/cloud/operators/datastore.py +22 -6
  130. airflow/providers/google/cloud/operators/dlp.py +24 -45
  131. airflow/providers/google/cloud/operators/functions.py +21 -14
  132. airflow/providers/google/cloud/operators/gcs.py +15 -12
  133. airflow/providers/google/cloud/operators/gen_ai.py +389 -0
  134. airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
  135. airflow/providers/google/cloud/operators/looker.py +1 -1
  136. airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
  137. airflow/providers/google/cloud/operators/natural_language.py +5 -3
  138. airflow/providers/google/cloud/operators/pubsub.py +69 -21
  139. airflow/providers/google/cloud/operators/spanner.py +53 -45
  140. airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
  141. airflow/providers/google/cloud/operators/stackdriver.py +5 -11
  142. airflow/providers/google/cloud/operators/tasks.py +6 -15
  143. airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
  144. airflow/providers/google/cloud/operators/translate.py +46 -20
  145. airflow/providers/google/cloud/operators/translate_speech.py +4 -3
  146. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
  147. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
  148. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
  149. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
  150. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
  151. airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
  152. airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
  153. airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
  154. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +16 -12
  155. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
  156. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
  157. airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
  158. airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
  159. airflow/providers/google/cloud/operators/vision.py +7 -5
  160. airflow/providers/google/cloud/operators/workflows.py +24 -19
  161. airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
  162. airflow/providers/google/cloud/sensors/bigquery.py +2 -2
  163. airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
  164. airflow/providers/google/cloud/sensors/bigtable.py +14 -6
  165. airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
  166. airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
  167. airflow/providers/google/cloud/sensors/dataflow.py +27 -10
  168. airflow/providers/google/cloud/sensors/dataform.py +2 -2
  169. airflow/providers/google/cloud/sensors/datafusion.py +4 -4
  170. airflow/providers/google/cloud/sensors/dataplex.py +7 -5
  171. airflow/providers/google/cloud/sensors/dataprep.py +2 -2
  172. airflow/providers/google/cloud/sensors/dataproc.py +10 -9
  173. airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
  174. airflow/providers/google/cloud/sensors/gcs.py +22 -21
  175. airflow/providers/google/cloud/sensors/looker.py +5 -5
  176. airflow/providers/google/cloud/sensors/pubsub.py +20 -20
  177. airflow/providers/google/cloud/sensors/tasks.py +2 -2
  178. airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
  179. airflow/providers/google/cloud/sensors/workflows.py +6 -4
  180. airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
  181. airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
  182. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
  183. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
  184. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +14 -13
  185. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
  186. airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
  187. airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
  188. airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
  189. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
  190. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +18 -22
  191. airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
  192. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
  193. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
  194. airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
  195. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
  196. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
  197. airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
  198. airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
  199. airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
  200. airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
  201. airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
  202. airflow/providers/google/cloud/transfers/postgres_to_gcs.py +44 -12
  203. airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
  204. airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
  205. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +36 -14
  206. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
  207. airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
  208. airflow/providers/google/cloud/triggers/bigquery.py +75 -34
  209. airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
  210. airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
  211. airflow/providers/google/cloud/triggers/cloud_build.py +3 -2
  212. airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
  213. airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
  214. airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
  215. airflow/providers/google/cloud/triggers/dataflow.py +125 -2
  216. airflow/providers/google/cloud/triggers/datafusion.py +1 -1
  217. airflow/providers/google/cloud/triggers/dataplex.py +16 -3
  218. airflow/providers/google/cloud/triggers/dataproc.py +124 -53
  219. airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
  220. airflow/providers/google/cloud/triggers/mlengine.py +1 -1
  221. airflow/providers/google/cloud/triggers/pubsub.py +17 -20
  222. airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
  223. airflow/providers/google/cloud/utils/bigquery.py +5 -7
  224. airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
  225. airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
  226. airflow/providers/google/cloud/utils/dataform.py +1 -1
  227. airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
  228. airflow/providers/google/cloud/utils/field_validator.py +1 -2
  229. airflow/providers/google/cloud/utils/validators.py +43 -0
  230. airflow/providers/google/common/auth_backend/google_openid.py +26 -9
  231. airflow/providers/google/common/consts.py +2 -1
  232. airflow/providers/google/common/deprecated.py +2 -1
  233. airflow/providers/google/common/hooks/base_google.py +40 -43
  234. airflow/providers/google/common/hooks/operation_helpers.py +78 -0
  235. airflow/providers/google/common/links/storage.py +0 -22
  236. airflow/providers/google/common/utils/get_secret.py +31 -0
  237. airflow/providers/google/common/utils/id_token_credentials.py +4 -5
  238. airflow/providers/google/firebase/operators/firestore.py +2 -2
  239. airflow/providers/google/get_provider_info.py +61 -216
  240. airflow/providers/google/go_module_utils.py +35 -3
  241. airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
  242. airflow/providers/google/leveldb/operators/leveldb.py +2 -2
  243. airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
  244. airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
  245. airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
  246. airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
  247. airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
  248. airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
  249. airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
  250. airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
  251. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
  252. airflow/providers/google/marketing_platform/sensors/display_video.py +4 -64
  253. airflow/providers/google/suite/hooks/calendar.py +1 -1
  254. airflow/providers/google/suite/hooks/drive.py +2 -2
  255. airflow/providers/google/suite/hooks/sheets.py +15 -1
  256. airflow/providers/google/suite/operators/sheets.py +8 -3
  257. airflow/providers/google/suite/sensors/drive.py +2 -2
  258. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
  259. airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
  260. airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
  261. airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
  262. airflow/providers/google/version_compat.py +15 -1
  263. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
  264. apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
  265. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
  266. apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
  267. airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
  268. airflow/providers/google/cloud/hooks/automl.py +0 -679
  269. airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
  270. airflow/providers/google/cloud/links/automl.py +0 -193
  271. airflow/providers/google/cloud/operators/automl.py +0 -1360
  272. airflow/providers/google/cloud/operators/life_sciences.py +0 -119
  273. airflow/providers/google/cloud/operators/mlengine.py +0 -1515
  274. airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
  275. apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
  276. /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
  277. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
  278. {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
@@ -19,14 +19,8 @@
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
- from typing import TYPE_CHECKING
23
-
24
22
  from airflow.providers.google.cloud.links.base import BaseGoogleLink
25
23
 
26
- if TYPE_CHECKING:
27
- from airflow.models import BaseOperator
28
- from airflow.utils.context import Context
29
-
30
24
  DATAFLOW_BASE_LINK = "/dataflow/jobs"
31
25
  DATAFLOW_JOB_LINK = DATAFLOW_BASE_LINK + "/{region}/{job_id}?project={project_id}"
32
26
 
@@ -41,20 +35,6 @@ class DataflowJobLink(BaseGoogleLink):
41
35
  key = "dataflow_job_config"
42
36
  format_str = DATAFLOW_JOB_LINK
43
37
 
44
- @staticmethod
45
- def persist(
46
- operator_instance: BaseOperator,
47
- context: Context,
48
- project_id: str | None,
49
- region: str | None,
50
- job_id: str | None,
51
- ):
52
- operator_instance.xcom_push(
53
- context,
54
- key=DataflowJobLink.key,
55
- value={"project_id": project_id, "region": region, "job_id": job_id},
56
- )
57
-
58
38
 
59
39
  class DataflowPipelineLink(BaseGoogleLink):
60
40
  """Helper class for constructing Dataflow Pipeline Link."""
@@ -62,17 +42,3 @@ class DataflowPipelineLink(BaseGoogleLink):
62
42
  name = "Dataflow Pipeline"
63
43
  key = "dataflow_pipeline_config"
64
44
  format_str = DATAFLOW_PIPELINE_LINK
65
-
66
- @staticmethod
67
- def persist(
68
- operator_instance: BaseOperator,
69
- context: Context,
70
- project_id: str | None,
71
- location: str | None,
72
- pipeline_name: str | None,
73
- ):
74
- operator_instance.xcom_push(
75
- context,
76
- key=DataflowPipelineLink.key,
77
- value={"project_id": project_id, "location": location, "pipeline_name": pipeline_name},
78
- )
@@ -19,14 +19,8 @@
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
- from typing import TYPE_CHECKING
23
-
24
22
  from airflow.providers.google.cloud.links.base import BaseGoogleLink
25
23
 
26
- if TYPE_CHECKING:
27
- from airflow.models import BaseOperator
28
- from airflow.utils.context import Context
29
-
30
24
  DATAFORM_BASE_LINK = "/bigquery/dataform"
31
25
  DATAFORM_WORKFLOW_INVOCATION_LINK = (
32
26
  DATAFORM_BASE_LINK
@@ -53,26 +47,6 @@ class DataformWorkflowInvocationLink(BaseGoogleLink):
53
47
  key = "dataform_workflow_invocation_config"
54
48
  format_str = DATAFORM_WORKFLOW_INVOCATION_LINK
55
49
 
56
- @staticmethod
57
- def persist(
58
- operator_instance: BaseOperator,
59
- context: Context,
60
- project_id: str,
61
- region: str,
62
- repository_id: str,
63
- workflow_invocation_id: str,
64
- ):
65
- operator_instance.xcom_push(
66
- context,
67
- key=DataformWorkflowInvocationLink.key,
68
- value={
69
- "project_id": project_id,
70
- "region": region,
71
- "repository_id": repository_id,
72
- "workflow_invocation_id": workflow_invocation_id,
73
- },
74
- )
75
-
76
50
 
77
51
  class DataformRepositoryLink(BaseGoogleLink):
78
52
  """Helper class for constructing Dataflow repository link."""
@@ -81,24 +55,6 @@ class DataformRepositoryLink(BaseGoogleLink):
81
55
  key = "dataform_repository"
82
56
  format_str = DATAFORM_REPOSITORY_LINK
83
57
 
84
- @staticmethod
85
- def persist(
86
- operator_instance: BaseOperator,
87
- context: Context,
88
- project_id: str,
89
- region: str,
90
- repository_id: str,
91
- ) -> None:
92
- operator_instance.xcom_push(
93
- context=context,
94
- key=DataformRepositoryLink.key,
95
- value={
96
- "project_id": project_id,
97
- "region": region,
98
- "repository_id": repository_id,
99
- },
100
- )
101
-
102
58
 
103
59
  class DataformWorkspaceLink(BaseGoogleLink):
104
60
  """Helper class for constructing Dataform workspace link."""
@@ -106,23 +62,3 @@ class DataformWorkspaceLink(BaseGoogleLink):
106
62
  name = "Dataform Workspace"
107
63
  key = "dataform_workspace"
108
64
  format_str = DATAFORM_WORKSPACE_LINK
109
-
110
- @staticmethod
111
- def persist(
112
- operator_instance: BaseOperator,
113
- context: Context,
114
- project_id: str,
115
- region: str,
116
- repository_id: str,
117
- workspace_id: str,
118
- ) -> None:
119
- operator_instance.xcom_push(
120
- context=context,
121
- key=DataformWorkspaceLink.key,
122
- value={
123
- "project_id": project_id,
124
- "region": region,
125
- "repository_id": repository_id,
126
- "workspace_id": workspace_id,
127
- },
128
- )
@@ -19,15 +19,7 @@
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
- from typing import TYPE_CHECKING, ClassVar
23
-
24
- from airflow.models import BaseOperatorLink, XCom
25
-
26
- if TYPE_CHECKING:
27
- from airflow.models import BaseOperator
28
- from airflow.models.taskinstancekey import TaskInstanceKey
29
- from airflow.utils.context import Context
30
-
22
+ from airflow.providers.google.cloud.links.base import BaseGoogleLink
31
23
 
32
24
  BASE_LINK = "https://console.cloud.google.com/data-fusion"
33
25
  DATAFUSION_INSTANCE_LINK = BASE_LINK + "/locations/{region}/instances/{instance_name}?project={project_id}"
@@ -35,35 +27,6 @@ DATAFUSION_PIPELINES_LINK = "{uri}/cdap/ns/{namespace}/pipelines"
35
27
  DATAFUSION_PIPELINE_LINK = "{uri}/pipelines/ns/{namespace}/view/{pipeline_name}"
36
28
 
37
29
 
38
- class BaseGoogleLink(BaseOperatorLink):
39
- """
40
- Link for Google operators.
41
-
42
- Prevent adding ``https://console.cloud.google.com`` in front of every link
43
- where URI is used.
44
- """
45
-
46
- name: ClassVar[str]
47
- key: ClassVar[str]
48
- format_str: ClassVar[str]
49
-
50
- def get_link(
51
- self,
52
- operator: BaseOperator,
53
- *,
54
- ti_key: TaskInstanceKey,
55
- ) -> str:
56
- conf = XCom.get_value(key=self.key, ti_key=ti_key)
57
-
58
- if not conf:
59
- return ""
60
-
61
- # Add a default value for the 'namespace' parameter for backward compatibility.
62
- conf.setdefault("namespace", "default")
63
-
64
- return self.format_str.format(**conf)
65
-
66
-
67
30
  class DataFusionInstanceLink(BaseGoogleLink):
68
31
  """Helper class for constructing Data Fusion Instance link."""
69
32
 
@@ -71,24 +34,6 @@ class DataFusionInstanceLink(BaseGoogleLink):
71
34
  key = "instance_conf"
72
35
  format_str = DATAFUSION_INSTANCE_LINK
73
36
 
74
- @staticmethod
75
- def persist(
76
- context: Context,
77
- task_instance: BaseOperator,
78
- location: str,
79
- instance_name: str,
80
- project_id: str,
81
- ):
82
- task_instance.xcom_push(
83
- context=context,
84
- key=DataFusionInstanceLink.key,
85
- value={
86
- "region": location,
87
- "instance_name": instance_name,
88
- "project_id": project_id,
89
- },
90
- )
91
-
92
37
 
93
38
  class DataFusionPipelineLink(BaseGoogleLink):
94
39
  """Helper class for constructing Data Fusion Pipeline link."""
@@ -97,24 +42,6 @@ class DataFusionPipelineLink(BaseGoogleLink):
97
42
  key = "pipeline_conf"
98
43
  format_str = DATAFUSION_PIPELINE_LINK
99
44
 
100
- @staticmethod
101
- def persist(
102
- context: Context,
103
- task_instance: BaseOperator,
104
- uri: str,
105
- pipeline_name: str,
106
- namespace: str,
107
- ):
108
- task_instance.xcom_push(
109
- context=context,
110
- key=DataFusionPipelineLink.key,
111
- value={
112
- "uri": uri,
113
- "pipeline_name": pipeline_name,
114
- "namespace": namespace,
115
- },
116
- )
117
-
118
45
 
119
46
  class DataFusionPipelinesLink(BaseGoogleLink):
120
47
  """Helper class for constructing list of Data Fusion Pipelines link."""
@@ -122,19 +49,3 @@ class DataFusionPipelinesLink(BaseGoogleLink):
122
49
  name = "Data Fusion Pipelines List"
123
50
  key = "pipelines_conf"
124
51
  format_str = DATAFUSION_PIPELINES_LINK
125
-
126
- @staticmethod
127
- def persist(
128
- context: Context,
129
- task_instance: BaseOperator,
130
- uri: str,
131
- namespace: str,
132
- ):
133
- task_instance.xcom_push(
134
- context=context,
135
- key=DataFusionPipelinesLink.key,
136
- value={
137
- "uri": uri,
138
- "namespace": namespace,
139
- },
140
- )
@@ -19,13 +19,8 @@
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
- from typing import TYPE_CHECKING
23
-
24
22
  from airflow.providers.google.cloud.links.base import BaseGoogleLink
25
23
 
26
- if TYPE_CHECKING:
27
- from airflow.utils.context import Context
28
-
29
24
  DATAPLEX_BASE_LINK = "/dataplex/process/tasks"
30
25
  DATAPLEX_TASK_LINK = DATAPLEX_BASE_LINK + "/{lake_id}.{task_id};location={region}/jobs?project={project_id}"
31
26
  DATAPLEX_TASKS_LINK = DATAPLEX_BASE_LINK + "?project={project_id}&qLake={lake_id}.{region}"
@@ -53,22 +48,6 @@ class DataplexTaskLink(BaseGoogleLink):
53
48
  key = "task_conf"
54
49
  format_str = DATAPLEX_TASK_LINK
55
50
 
56
- @staticmethod
57
- def persist(
58
- context: Context,
59
- task_instance,
60
- ):
61
- task_instance.xcom_push(
62
- context=context,
63
- key=DataplexTaskLink.key,
64
- value={
65
- "lake_id": task_instance.lake_id,
66
- "task_id": task_instance.dataplex_task_id,
67
- "region": task_instance.region,
68
- "project_id": task_instance.project_id,
69
- },
70
- )
71
-
72
51
 
73
52
  class DataplexTasksLink(BaseGoogleLink):
74
53
  """Helper class for constructing Dataplex Tasks link."""
@@ -77,21 +56,6 @@ class DataplexTasksLink(BaseGoogleLink):
77
56
  key = "tasks_conf"
78
57
  format_str = DATAPLEX_TASKS_LINK
79
58
 
80
- @staticmethod
81
- def persist(
82
- context: Context,
83
- task_instance,
84
- ):
85
- task_instance.xcom_push(
86
- context=context,
87
- key=DataplexTasksLink.key,
88
- value={
89
- "project_id": task_instance.project_id,
90
- "lake_id": task_instance.lake_id,
91
- "region": task_instance.region,
92
- },
93
- )
94
-
95
59
 
96
60
  class DataplexLakeLink(BaseGoogleLink):
97
61
  """Helper class for constructing Dataplex Lake link."""
@@ -100,21 +64,6 @@ class DataplexLakeLink(BaseGoogleLink):
100
64
  key = "dataplex_lake_key"
101
65
  format_str = DATAPLEX_LAKE_LINK
102
66
 
103
- @staticmethod
104
- def persist(
105
- context: Context,
106
- task_instance,
107
- ):
108
- task_instance.xcom_push(
109
- context=context,
110
- key=DataplexLakeLink.key,
111
- value={
112
- "lake_id": task_instance.lake_id,
113
- "region": task_instance.region,
114
- "project_id": task_instance.project_id,
115
- },
116
- )
117
-
118
67
 
119
68
  class DataplexCatalogEntryGroupLink(BaseGoogleLink):
120
69
  """Helper class for constructing Dataplex Catalog EntryGroup link."""
@@ -123,21 +72,6 @@ class DataplexCatalogEntryGroupLink(BaseGoogleLink):
123
72
  key = "dataplex_catalog_entry_group_key"
124
73
  format_str = DATAPLEX_CATALOG_ENTRY_GROUP_LINK
125
74
 
126
- @staticmethod
127
- def persist(
128
- context: Context,
129
- task_instance,
130
- ):
131
- task_instance.xcom_push(
132
- context=context,
133
- key=DataplexCatalogEntryGroupLink.key,
134
- value={
135
- "entry_group_id": task_instance.entry_group_id,
136
- "location": task_instance.location,
137
- "project_id": task_instance.project_id,
138
- },
139
- )
140
-
141
75
 
142
76
  class DataplexCatalogEntryGroupsLink(BaseGoogleLink):
143
77
  """Helper class for constructing Dataplex Catalog EntryGroups link."""
@@ -146,20 +80,6 @@ class DataplexCatalogEntryGroupsLink(BaseGoogleLink):
146
80
  key = "dataplex_catalog_entry_groups_key"
147
81
  format_str = DATAPLEX_CATALOG_ENTRY_GROUPS_LINK
148
82
 
149
- @staticmethod
150
- def persist(
151
- context: Context,
152
- task_instance,
153
- ):
154
- task_instance.xcom_push(
155
- context=context,
156
- key=DataplexCatalogEntryGroupsLink.key,
157
- value={
158
- "location": task_instance.location,
159
- "project_id": task_instance.project_id,
160
- },
161
- )
162
-
163
83
 
164
84
  class DataplexCatalogEntryTypeLink(BaseGoogleLink):
165
85
  """Helper class for constructing Dataplex Catalog EntryType link."""
@@ -168,21 +88,6 @@ class DataplexCatalogEntryTypeLink(BaseGoogleLink):
168
88
  key = "dataplex_catalog_entry_type_key"
169
89
  format_str = DATAPLEX_CATALOG_ENTRY_TYPE_LINK
170
90
 
171
- @staticmethod
172
- def persist(
173
- context: Context,
174
- task_instance,
175
- ):
176
- task_instance.xcom_push(
177
- context=context,
178
- key=DataplexCatalogEntryTypeLink.key,
179
- value={
180
- "entry_type_id": task_instance.entry_type_id,
181
- "location": task_instance.location,
182
- "project_id": task_instance.project_id,
183
- },
184
- )
185
-
186
91
 
187
92
  class DataplexCatalogEntryTypesLink(BaseGoogleLink):
188
93
  """Helper class for constructing Dataplex Catalog EntryTypes link."""
@@ -191,20 +96,6 @@ class DataplexCatalogEntryTypesLink(BaseGoogleLink):
191
96
  key = "dataplex_catalog_entry_types_key"
192
97
  format_str = DATAPLEX_CATALOG_ENTRY_TYPES_LINK
193
98
 
194
- @staticmethod
195
- def persist(
196
- context: Context,
197
- task_instance,
198
- ):
199
- task_instance.xcom_push(
200
- context=context,
201
- key=DataplexCatalogEntryTypesLink.key,
202
- value={
203
- "location": task_instance.location,
204
- "project_id": task_instance.project_id,
205
- },
206
- )
207
-
208
99
 
209
100
  class DataplexCatalogAspectTypeLink(BaseGoogleLink):
210
101
  """Helper class for constructing Dataplex Catalog AspectType link."""
@@ -213,21 +104,6 @@ class DataplexCatalogAspectTypeLink(BaseGoogleLink):
213
104
  key = "dataplex_catalog_aspect_type_key"
214
105
  format_str = DATAPLEX_CATALOG_ASPECT_TYPE_LINK
215
106
 
216
- @staticmethod
217
- def persist(
218
- context: Context,
219
- task_instance,
220
- ):
221
- task_instance.xcom_push(
222
- context=context,
223
- key=DataplexCatalogAspectTypeLink.key,
224
- value={
225
- "aspect_type_id": task_instance.aspect_type_id,
226
- "location": task_instance.location,
227
- "project_id": task_instance.project_id,
228
- },
229
- )
230
-
231
107
 
232
108
  class DataplexCatalogAspectTypesLink(BaseGoogleLink):
233
109
  """Helper class for constructing Dataplex Catalog AspectTypes link."""
@@ -236,20 +112,6 @@ class DataplexCatalogAspectTypesLink(BaseGoogleLink):
236
112
  key = "dataplex_catalog_aspect_types_key"
237
113
  format_str = DATAPLEX_CATALOG_ASPECT_TYPES_LINK
238
114
 
239
- @staticmethod
240
- def persist(
241
- context: Context,
242
- task_instance,
243
- ):
244
- task_instance.xcom_push(
245
- context=context,
246
- key=DataplexCatalogAspectTypesLink.key,
247
- value={
248
- "location": task_instance.location,
249
- "project_id": task_instance.project_id,
250
- },
251
- )
252
-
253
115
 
254
116
  class DataplexCatalogEntryLink(BaseGoogleLink):
255
117
  """Helper class for constructing Dataplex Catalog Entry link."""
@@ -257,19 +119,3 @@ class DataplexCatalogEntryLink(BaseGoogleLink):
257
119
  name = "Dataplex Catalog Entry"
258
120
  key = "dataplex_catalog_entry_key"
259
121
  format_str = DATAPLEX_CATALOG_ENTRY_LINK
260
-
261
- @staticmethod
262
- def persist(
263
- context: Context,
264
- task_instance,
265
- ):
266
- task_instance.xcom_push(
267
- context=context,
268
- key=DataplexCatalogEntryLink.key,
269
- value={
270
- "entry_id": task_instance.entry_id,
271
- "entry_group_id": task_instance.entry_group_id,
272
- "location": task_instance.location,
273
- "project_id": task_instance.project_id,
274
- },
275
- )
@@ -16,13 +16,8 @@
16
16
  # under the License.
17
17
  from __future__ import annotations
18
18
 
19
- from typing import TYPE_CHECKING
20
-
21
19
  from airflow.providers.google.cloud.links.base import BaseGoogleLink
22
20
 
23
- if TYPE_CHECKING:
24
- from airflow.utils.context import Context
25
-
26
21
  BASE_LINK = "https://clouddataprep.com"
27
22
  DATAPREP_FLOW_LINK = BASE_LINK + "/flows/{flow_id}?projectId={project_id}"
28
23
  DATAPREP_JOB_GROUP_LINK = BASE_LINK + "/jobs/{job_group_id}?projectId={project_id}"
@@ -35,14 +30,6 @@ class DataprepFlowLink(BaseGoogleLink):
35
30
  key = "dataprep_flow_page"
36
31
  format_str = DATAPREP_FLOW_LINK
37
32
 
38
- @staticmethod
39
- def persist(context: Context, task_instance, project_id: str, flow_id: int):
40
- task_instance.xcom_push(
41
- context=context,
42
- key=DataprepFlowLink.key,
43
- value={"project_id": project_id, "flow_id": flow_id},
44
- )
45
-
46
33
 
47
34
  class DataprepJobGroupLink(BaseGoogleLink):
48
35
  """Helper class for constructing Dataprep job group link."""
@@ -50,14 +37,3 @@ class DataprepJobGroupLink(BaseGoogleLink):
50
37
  name = "Job group details page"
51
38
  key = "dataprep_job_group_page"
52
39
  format_str = DATAPREP_JOB_GROUP_LINK
53
-
54
- @staticmethod
55
- def persist(context: Context, task_instance, project_id: str, job_group_id: int):
56
- task_instance.xcom_push(
57
- context=context,
58
- key=DataprepJobGroupLink.key,
59
- value={
60
- "project_id": project_id,
61
- "job_group_id": job_group_id,
62
- },
63
- )