apache-airflow-providers-google 15.1.0rc1__py3-none-any.whl → 19.1.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/google/3rd-party-licenses/NOTICE +2 -12
- airflow/providers/google/__init__.py +3 -3
- airflow/providers/google/ads/hooks/ads.py +39 -5
- airflow/providers/google/ads/operators/ads.py +2 -2
- airflow/providers/google/ads/transfers/ads_to_gcs.py +2 -2
- airflow/providers/google/assets/gcs.py +1 -11
- airflow/providers/google/cloud/bundles/__init__.py +16 -0
- airflow/providers/google/cloud/bundles/gcs.py +161 -0
- airflow/providers/google/cloud/hooks/bigquery.py +166 -281
- airflow/providers/google/cloud/hooks/cloud_composer.py +287 -14
- airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
- airflow/providers/google/cloud/hooks/cloud_run.py +17 -9
- airflow/providers/google/cloud/hooks/cloud_sql.py +101 -22
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +27 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +5 -1
- airflow/providers/google/cloud/hooks/datacatalog.py +9 -1
- airflow/providers/google/cloud/hooks/dataflow.py +71 -94
- airflow/providers/google/cloud/hooks/datafusion.py +1 -1
- airflow/providers/google/cloud/hooks/dataplex.py +1 -1
- airflow/providers/google/cloud/hooks/dataprep.py +1 -1
- airflow/providers/google/cloud/hooks/dataproc.py +72 -71
- airflow/providers/google/cloud/hooks/gcs.py +111 -14
- airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +2 -2
- airflow/providers/google/cloud/hooks/looker.py +6 -1
- airflow/providers/google/cloud/hooks/mlengine.py +3 -2
- airflow/providers/google/cloud/hooks/secret_manager.py +102 -10
- airflow/providers/google/cloud/hooks/spanner.py +73 -8
- airflow/providers/google/cloud/hooks/stackdriver.py +10 -8
- airflow/providers/google/cloud/hooks/translate.py +1 -1
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +0 -209
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +2 -2
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +27 -1
- airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +307 -7
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
- airflow/providers/google/cloud/hooks/vision.py +2 -2
- airflow/providers/google/cloud/hooks/workflows.py +1 -1
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +77 -13
- airflow/providers/google/cloud/links/bigquery.py +0 -47
- airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
- airflow/providers/google/cloud/links/bigtable.py +0 -48
- airflow/providers/google/cloud/links/cloud_build.py +0 -73
- airflow/providers/google/cloud/links/cloud_functions.py +0 -33
- airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
- airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -44
- airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
- airflow/providers/google/cloud/links/compute.py +0 -58
- airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
- airflow/providers/google/cloud/links/datacatalog.py +23 -54
- airflow/providers/google/cloud/links/dataflow.py +0 -34
- airflow/providers/google/cloud/links/dataform.py +0 -64
- airflow/providers/google/cloud/links/datafusion.py +1 -96
- airflow/providers/google/cloud/links/dataplex.py +0 -154
- airflow/providers/google/cloud/links/dataprep.py +0 -24
- airflow/providers/google/cloud/links/dataproc.py +11 -95
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +9 -60
- airflow/providers/google/cloud/links/managed_kafka.py +0 -70
- airflow/providers/google/cloud/links/mlengine.py +0 -70
- airflow/providers/google/cloud/links/pubsub.py +0 -32
- airflow/providers/google/cloud/links/spanner.py +0 -33
- airflow/providers/google/cloud/links/stackdriver.py +0 -30
- airflow/providers/google/cloud/links/translate.py +17 -187
- airflow/providers/google/cloud/links/vertex_ai.py +28 -195
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/log/gcs_task_handler.py +17 -9
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +9 -6
- airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
- airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
- airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
- airflow/providers/google/cloud/openlineage/facets.py +102 -1
- airflow/providers/google/cloud/openlineage/mixins.py +10 -8
- airflow/providers/google/cloud/openlineage/utils.py +15 -1
- airflow/providers/google/cloud/operators/alloy_db.py +70 -55
- airflow/providers/google/cloud/operators/bigquery.py +73 -636
- airflow/providers/google/cloud/operators/bigquery_dts.py +3 -5
- airflow/providers/google/cloud/operators/bigtable.py +36 -7
- airflow/providers/google/cloud/operators/cloud_base.py +21 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +2 -2
- airflow/providers/google/cloud/operators/cloud_build.py +75 -32
- airflow/providers/google/cloud/operators/cloud_composer.py +128 -40
- airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
- airflow/providers/google/cloud/operators/cloud_memorystore.py +69 -43
- airflow/providers/google/cloud/operators/cloud_run.py +23 -5
- airflow/providers/google/cloud/operators/cloud_sql.py +8 -16
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -11
- airflow/providers/google/cloud/operators/compute.py +8 -40
- airflow/providers/google/cloud/operators/datacatalog.py +157 -21
- airflow/providers/google/cloud/operators/dataflow.py +38 -15
- airflow/providers/google/cloud/operators/dataform.py +15 -5
- airflow/providers/google/cloud/operators/datafusion.py +41 -20
- airflow/providers/google/cloud/operators/dataplex.py +193 -109
- airflow/providers/google/cloud/operators/dataprep.py +1 -5
- airflow/providers/google/cloud/operators/dataproc.py +78 -35
- airflow/providers/google/cloud/operators/dataproc_metastore.py +96 -88
- airflow/providers/google/cloud/operators/datastore.py +22 -6
- airflow/providers/google/cloud/operators/dlp.py +6 -29
- airflow/providers/google/cloud/operators/functions.py +16 -7
- airflow/providers/google/cloud/operators/gcs.py +10 -8
- airflow/providers/google/cloud/operators/gen_ai.py +389 -0
- airflow/providers/google/cloud/operators/kubernetes_engine.py +60 -99
- airflow/providers/google/cloud/operators/looker.py +1 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +107 -52
- airflow/providers/google/cloud/operators/natural_language.py +1 -1
- airflow/providers/google/cloud/operators/pubsub.py +60 -14
- airflow/providers/google/cloud/operators/spanner.py +25 -12
- airflow/providers/google/cloud/operators/speech_to_text.py +1 -2
- airflow/providers/google/cloud/operators/stackdriver.py +1 -9
- airflow/providers/google/cloud/operators/tasks.py +1 -12
- airflow/providers/google/cloud/operators/text_to_speech.py +1 -2
- airflow/providers/google/cloud/operators/translate.py +40 -16
- airflow/providers/google/cloud/operators/translate_speech.py +1 -2
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +39 -19
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +29 -9
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +54 -26
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +70 -8
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +43 -9
- airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +11 -9
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +57 -11
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +30 -7
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
- airflow/providers/google/cloud/operators/video_intelligence.py +1 -1
- airflow/providers/google/cloud/operators/vision.py +2 -2
- airflow/providers/google/cloud/operators/workflows.py +18 -15
- airflow/providers/google/cloud/sensors/bigquery.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +2 -2
- airflow/providers/google/cloud/sensors/bigtable.py +11 -4
- airflow/providers/google/cloud/sensors/cloud_composer.py +533 -29
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +2 -2
- airflow/providers/google/cloud/sensors/dataflow.py +26 -9
- airflow/providers/google/cloud/sensors/dataform.py +2 -2
- airflow/providers/google/cloud/sensors/datafusion.py +4 -4
- airflow/providers/google/cloud/sensors/dataplex.py +2 -2
- airflow/providers/google/cloud/sensors/dataprep.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +2 -2
- airflow/providers/google/cloud/sensors/gcs.py +4 -4
- airflow/providers/google/cloud/sensors/looker.py +2 -2
- airflow/providers/google/cloud/sensors/pubsub.py +4 -4
- airflow/providers/google/cloud/sensors/tasks.py +2 -2
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
- airflow/providers/google/cloud/sensors/workflows.py +2 -2
- airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +4 -4
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
- airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +3 -3
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +20 -12
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
- airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
- airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
- airflow/providers/google/cloud/transfers/postgres_to_gcs.py +42 -9
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +13 -4
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
- airflow/providers/google/cloud/triggers/bigquery.py +75 -34
- airflow/providers/google/cloud/triggers/cloud_build.py +1 -1
- airflow/providers/google/cloud/triggers/cloud_composer.py +302 -46
- airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +91 -1
- airflow/providers/google/cloud/triggers/dataflow.py +122 -0
- airflow/providers/google/cloud/triggers/datafusion.py +1 -1
- airflow/providers/google/cloud/triggers/dataplex.py +14 -2
- airflow/providers/google/cloud/triggers/dataproc.py +122 -52
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +45 -27
- airflow/providers/google/cloud/triggers/mlengine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +15 -19
- airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
- airflow/providers/google/cloud/utils/credentials_provider.py +1 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/common/auth_backend/google_openid.py +4 -4
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +27 -8
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/common/utils/get_secret.py +31 -0
- airflow/providers/google/common/utils/id_token_credentials.py +3 -4
- airflow/providers/google/firebase/operators/firestore.py +2 -2
- airflow/providers/google/get_provider_info.py +56 -52
- airflow/providers/google/go_module_utils.py +35 -3
- airflow/providers/google/leveldb/hooks/leveldb.py +26 -1
- airflow/providers/google/leveldb/operators/leveldb.py +2 -2
- airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
- airflow/providers/google/marketing_platform/links/analytics_admin.py +5 -14
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +1 -2
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
- airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
- airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
- airflow/providers/google/marketing_platform/sensors/display_video.py +3 -63
- airflow/providers/google/suite/hooks/calendar.py +1 -1
- airflow/providers/google/suite/hooks/sheets.py +15 -1
- airflow/providers/google/suite/operators/sheets.py +8 -3
- airflow/providers/google/suite/sensors/drive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
- airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
- airflow/providers/google/version_compat.py +15 -1
- {apache_airflow_providers_google-15.1.0rc1.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +92 -48
- apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
- apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
- airflow/providers/google/cloud/hooks/automl.py +0 -673
- airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
- airflow/providers/google/cloud/links/automl.py +0 -193
- airflow/providers/google/cloud/operators/automl.py +0 -1362
- airflow/providers/google/cloud/operators/life_sciences.py +0 -119
- airflow/providers/google/cloud/operators/mlengine.py +0 -112
- apache_airflow_providers_google-15.1.0rc1.dist-info/RECORD +0 -321
- {apache_airflow_providers_google-15.1.0rc1.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_google-15.1.0rc1.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
- {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
|
@@ -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
|
-
)
|
|
@@ -25,20 +25,13 @@ from typing import TYPE_CHECKING, Any
|
|
|
25
25
|
import attr
|
|
26
26
|
|
|
27
27
|
from airflow.exceptions import AirflowProviderDeprecationWarning
|
|
28
|
+
from airflow.providers.common.compat.sdk import BaseOperatorLink, XCom
|
|
28
29
|
from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
|
|
29
|
-
from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
|
|
30
30
|
|
|
31
31
|
if TYPE_CHECKING:
|
|
32
|
-
from airflow.models import BaseOperator
|
|
33
32
|
from airflow.models.taskinstancekey import TaskInstanceKey
|
|
34
|
-
from airflow.
|
|
35
|
-
|
|
36
|
-
if AIRFLOW_V_3_0_PLUS:
|
|
37
|
-
from airflow.sdk import BaseOperatorLink
|
|
38
|
-
from airflow.sdk.execution_time.xcom import XCom
|
|
39
|
-
else:
|
|
40
|
-
from airflow.models import XCom # type: ignore[no-redef]
|
|
41
|
-
from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
|
|
33
|
+
from airflow.providers.common.compat.sdk import Context
|
|
34
|
+
from airflow.providers.google.version_compat import BaseOperator
|
|
42
35
|
|
|
43
36
|
|
|
44
37
|
def __getattr__(name: str) -> Any:
|
|
@@ -94,16 +87,16 @@ class DataprocLink(BaseOperatorLink):
|
|
|
94
87
|
@staticmethod
|
|
95
88
|
def persist(
|
|
96
89
|
context: Context,
|
|
97
|
-
task_instance,
|
|
98
90
|
url: str,
|
|
99
91
|
resource: str,
|
|
92
|
+
region: str,
|
|
93
|
+
project_id: str,
|
|
100
94
|
):
|
|
101
|
-
task_instance.xcom_push(
|
|
102
|
-
context=context,
|
|
95
|
+
context["task_instance"].xcom_push(
|
|
103
96
|
key=DataprocLink.key,
|
|
104
97
|
value={
|
|
105
|
-
"region":
|
|
106
|
-
"project_id":
|
|
98
|
+
"region": region,
|
|
99
|
+
"project_id": project_id,
|
|
107
100
|
"url": url,
|
|
108
101
|
"resource": resource,
|
|
109
102
|
},
|
|
@@ -147,14 +140,13 @@ class DataprocListLink(BaseOperatorLink):
|
|
|
147
140
|
@staticmethod
|
|
148
141
|
def persist(
|
|
149
142
|
context: Context,
|
|
150
|
-
task_instance,
|
|
151
143
|
url: str,
|
|
144
|
+
project_id: str,
|
|
152
145
|
):
|
|
153
|
-
task_instance.xcom_push(
|
|
154
|
-
context=context,
|
|
146
|
+
context["task_instance"].xcom_push(
|
|
155
147
|
key=DataprocListLink.key,
|
|
156
148
|
value={
|
|
157
|
-
"project_id":
|
|
149
|
+
"project_id": project_id,
|
|
158
150
|
"url": url,
|
|
159
151
|
},
|
|
160
152
|
)
|
|
@@ -189,20 +181,6 @@ class DataprocClusterLink(BaseGoogleLink):
|
|
|
189
181
|
key = "dataproc_cluster"
|
|
190
182
|
format_str = DATAPROC_CLUSTER_LINK
|
|
191
183
|
|
|
192
|
-
@staticmethod
|
|
193
|
-
def persist(
|
|
194
|
-
context: Context,
|
|
195
|
-
operator: BaseOperator,
|
|
196
|
-
cluster_id: str,
|
|
197
|
-
region: str,
|
|
198
|
-
project_id: str,
|
|
199
|
-
):
|
|
200
|
-
operator.xcom_push(
|
|
201
|
-
context,
|
|
202
|
-
key=DataprocClusterLink.key,
|
|
203
|
-
value={"cluster_id": cluster_id, "region": region, "project_id": project_id},
|
|
204
|
-
)
|
|
205
|
-
|
|
206
184
|
|
|
207
185
|
class DataprocJobLink(BaseGoogleLink):
|
|
208
186
|
"""Helper class for constructing Dataproc Job Link."""
|
|
@@ -211,20 +189,6 @@ class DataprocJobLink(BaseGoogleLink):
|
|
|
211
189
|
key = "dataproc_job"
|
|
212
190
|
format_str = DATAPROC_JOB_LINK
|
|
213
191
|
|
|
214
|
-
@staticmethod
|
|
215
|
-
def persist(
|
|
216
|
-
context: Context,
|
|
217
|
-
operator: BaseOperator,
|
|
218
|
-
job_id: str,
|
|
219
|
-
region: str,
|
|
220
|
-
project_id: str,
|
|
221
|
-
):
|
|
222
|
-
operator.xcom_push(
|
|
223
|
-
context,
|
|
224
|
-
key=DataprocJobLink.key,
|
|
225
|
-
value={"job_id": job_id, "region": region, "project_id": project_id},
|
|
226
|
-
)
|
|
227
|
-
|
|
228
192
|
|
|
229
193
|
class DataprocWorkflowLink(BaseGoogleLink):
|
|
230
194
|
"""Helper class for constructing Dataproc Workflow Link."""
|
|
@@ -233,14 +197,6 @@ class DataprocWorkflowLink(BaseGoogleLink):
|
|
|
233
197
|
key = "dataproc_workflow"
|
|
234
198
|
format_str = DATAPROC_WORKFLOW_LINK
|
|
235
199
|
|
|
236
|
-
@staticmethod
|
|
237
|
-
def persist(context: Context, operator: BaseOperator, workflow_id: str, project_id: str, region: str):
|
|
238
|
-
operator.xcom_push(
|
|
239
|
-
context,
|
|
240
|
-
key=DataprocWorkflowLink.key,
|
|
241
|
-
value={"workflow_id": workflow_id, "region": region, "project_id": project_id},
|
|
242
|
-
)
|
|
243
|
-
|
|
244
200
|
|
|
245
201
|
class DataprocWorkflowTemplateLink(BaseGoogleLink):
|
|
246
202
|
"""Helper class for constructing Dataproc Workflow Template Link."""
|
|
@@ -249,20 +205,6 @@ class DataprocWorkflowTemplateLink(BaseGoogleLink):
|
|
|
249
205
|
key = "dataproc_workflow_template"
|
|
250
206
|
format_str = DATAPROC_WORKFLOW_TEMPLATE_LINK
|
|
251
207
|
|
|
252
|
-
@staticmethod
|
|
253
|
-
def persist(
|
|
254
|
-
context: Context,
|
|
255
|
-
operator: BaseOperator,
|
|
256
|
-
workflow_template_id: str,
|
|
257
|
-
project_id: str,
|
|
258
|
-
region: str,
|
|
259
|
-
):
|
|
260
|
-
operator.xcom_push(
|
|
261
|
-
context,
|
|
262
|
-
key=DataprocWorkflowTemplateLink.key,
|
|
263
|
-
value={"workflow_template_id": workflow_template_id, "region": region, "project_id": project_id},
|
|
264
|
-
)
|
|
265
|
-
|
|
266
208
|
|
|
267
209
|
class DataprocBatchLink(BaseGoogleLink):
|
|
268
210
|
"""Helper class for constructing Dataproc Batch Link."""
|
|
@@ -271,20 +213,6 @@ class DataprocBatchLink(BaseGoogleLink):
|
|
|
271
213
|
key = "dataproc_batch"
|
|
272
214
|
format_str = DATAPROC_BATCH_LINK
|
|
273
215
|
|
|
274
|
-
@staticmethod
|
|
275
|
-
def persist(
|
|
276
|
-
context: Context,
|
|
277
|
-
operator: BaseOperator,
|
|
278
|
-
batch_id: str,
|
|
279
|
-
project_id: str,
|
|
280
|
-
region: str,
|
|
281
|
-
):
|
|
282
|
-
operator.xcom_push(
|
|
283
|
-
context,
|
|
284
|
-
key=DataprocBatchLink.key,
|
|
285
|
-
value={"batch_id": batch_id, "region": region, "project_id": project_id},
|
|
286
|
-
)
|
|
287
|
-
|
|
288
216
|
|
|
289
217
|
class DataprocBatchesListLink(BaseGoogleLink):
|
|
290
218
|
"""Helper class for constructing Dataproc Batches List Link."""
|
|
@@ -292,15 +220,3 @@ class DataprocBatchesListLink(BaseGoogleLink):
|
|
|
292
220
|
name = "Dataproc Batches List"
|
|
293
221
|
key = "dataproc_batches_list"
|
|
294
222
|
format_str = DATAPROC_BATCHES_LINK
|
|
295
|
-
|
|
296
|
-
@staticmethod
|
|
297
|
-
def persist(
|
|
298
|
-
context: Context,
|
|
299
|
-
operator: BaseOperator,
|
|
300
|
-
project_id: str,
|
|
301
|
-
):
|
|
302
|
-
operator.xcom_push(
|
|
303
|
-
context,
|
|
304
|
-
key=DataprocBatchesListLink.key,
|
|
305
|
-
value={"project_id": project_id},
|
|
306
|
-
)
|
|
@@ -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
|
DATASTORE_BASE_LINK = "/datastore"
|
|
27
22
|
DATASTORE_IMPORT_EXPORT_LINK = DATASTORE_BASE_LINK + "/import-export?project={project_id}"
|
|
28
23
|
DATASTORE_EXPORT_ENTITIES_LINK = "/storage/browser/{bucket_name}/{export_name}?project={project_id}"
|
|
@@ -36,19 +31,6 @@ class CloudDatastoreImportExportLink(BaseGoogleLink):
|
|
|
36
31
|
key = "import_export_conf"
|
|
37
32
|
format_str = DATASTORE_IMPORT_EXPORT_LINK
|
|
38
33
|
|
|
39
|
-
@staticmethod
|
|
40
|
-
def persist(
|
|
41
|
-
context: Context,
|
|
42
|
-
task_instance,
|
|
43
|
-
):
|
|
44
|
-
task_instance.xcom_push(
|
|
45
|
-
context=context,
|
|
46
|
-
key=CloudDatastoreImportExportLink.key,
|
|
47
|
-
value={
|
|
48
|
-
"project_id": task_instance.project_id,
|
|
49
|
-
},
|
|
50
|
-
)
|
|
51
|
-
|
|
52
34
|
|
|
53
35
|
class CloudDatastoreEntitiesLink(BaseGoogleLink):
|
|
54
36
|
"""Helper class for constructing Cloud Datastore Entities Link."""
|
|
@@ -56,16 +38,3 @@ class CloudDatastoreEntitiesLink(BaseGoogleLink):
|
|
|
56
38
|
name = "Entities"
|
|
57
39
|
key = "entities_conf"
|
|
58
40
|
format_str = DATASTORE_ENTITIES_LINK
|
|
59
|
-
|
|
60
|
-
@staticmethod
|
|
61
|
-
def persist(
|
|
62
|
-
context: Context,
|
|
63
|
-
task_instance,
|
|
64
|
-
):
|
|
65
|
-
task_instance.xcom_push(
|
|
66
|
-
context=context,
|
|
67
|
-
key=CloudDatastoreEntitiesLink.key,
|
|
68
|
-
value={
|
|
69
|
-
"project_id": task_instance.project_id,
|
|
70
|
-
},
|
|
71
|
-
)
|
|
@@ -24,7 +24,7 @@ from google.cloud.container_v1.types import Cluster
|
|
|
24
24
|
from airflow.providers.google.cloud.links.base import BaseGoogleLink
|
|
25
25
|
|
|
26
26
|
if TYPE_CHECKING:
|
|
27
|
-
from airflow.
|
|
27
|
+
from airflow.providers.common.compat.sdk import Context
|
|
28
28
|
|
|
29
29
|
KUBERNETES_BASE_LINK = "/kubernetes"
|
|
30
30
|
KUBERNETES_CLUSTER_LINK = (
|
|
@@ -51,19 +51,18 @@ class KubernetesEngineClusterLink(BaseGoogleLink):
|
|
|
51
51
|
key = "kubernetes_cluster_conf"
|
|
52
52
|
format_str = KUBERNETES_CLUSTER_LINK
|
|
53
53
|
|
|
54
|
-
@
|
|
55
|
-
def persist(context: Context,
|
|
54
|
+
@classmethod
|
|
55
|
+
def persist(cls, context: Context, **value):
|
|
56
|
+
cluster = value.get("cluster")
|
|
56
57
|
if isinstance(cluster, dict):
|
|
57
58
|
cluster = Cluster.from_json(json.dumps(cluster))
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
if not cluster:
|
|
61
|
+
raise ValueError("Cluster must be provided for KubernetesEngineClusterLink.")
|
|
62
|
+
|
|
63
|
+
super().persist(
|
|
60
64
|
context=context,
|
|
61
|
-
|
|
62
|
-
value={
|
|
63
|
-
"location": task_instance.location,
|
|
64
|
-
"cluster_name": cluster.name, # type: ignore
|
|
65
|
-
"project_id": task_instance.project_id,
|
|
66
|
-
},
|
|
65
|
+
cluster_name=cluster.name,
|
|
67
66
|
)
|
|
68
67
|
|
|
69
68
|
|
|
@@ -74,23 +73,6 @@ class KubernetesEnginePodLink(BaseGoogleLink):
|
|
|
74
73
|
key = "kubernetes_pod_conf"
|
|
75
74
|
format_str = KUBERNETES_POD_LINK
|
|
76
75
|
|
|
77
|
-
@staticmethod
|
|
78
|
-
def persist(
|
|
79
|
-
context: Context,
|
|
80
|
-
task_instance,
|
|
81
|
-
):
|
|
82
|
-
task_instance.xcom_push(
|
|
83
|
-
context=context,
|
|
84
|
-
key=KubernetesEnginePodLink.key,
|
|
85
|
-
value={
|
|
86
|
-
"location": task_instance.location,
|
|
87
|
-
"cluster_name": task_instance.cluster_name,
|
|
88
|
-
"namespace": task_instance.pod.metadata.namespace,
|
|
89
|
-
"pod_name": task_instance.pod.metadata.name,
|
|
90
|
-
"project_id": task_instance.project_id,
|
|
91
|
-
},
|
|
92
|
-
)
|
|
93
|
-
|
|
94
76
|
|
|
95
77
|
class KubernetesEngineJobLink(BaseGoogleLink):
|
|
96
78
|
"""Helper class for constructing Kubernetes Engine Job Link."""
|
|
@@ -99,23 +81,6 @@ class KubernetesEngineJobLink(BaseGoogleLink):
|
|
|
99
81
|
key = "kubernetes_job_conf"
|
|
100
82
|
format_str = KUBERNETES_JOB_LINK
|
|
101
83
|
|
|
102
|
-
@staticmethod
|
|
103
|
-
def persist(
|
|
104
|
-
context: Context,
|
|
105
|
-
task_instance,
|
|
106
|
-
):
|
|
107
|
-
task_instance.xcom_push(
|
|
108
|
-
context=context,
|
|
109
|
-
key=KubernetesEngineJobLink.key,
|
|
110
|
-
value={
|
|
111
|
-
"location": task_instance.location,
|
|
112
|
-
"cluster_name": task_instance.cluster_name,
|
|
113
|
-
"namespace": task_instance.job.metadata.namespace,
|
|
114
|
-
"job_name": task_instance.job.metadata.name,
|
|
115
|
-
"project_id": task_instance.project_id,
|
|
116
|
-
},
|
|
117
|
-
)
|
|
118
|
-
|
|
119
84
|
|
|
120
85
|
class KubernetesEngineWorkloadsLink(BaseGoogleLink):
|
|
121
86
|
"""Helper class for constructing Kubernetes Engine Workloads Link."""
|
|
@@ -123,19 +88,3 @@ class KubernetesEngineWorkloadsLink(BaseGoogleLink):
|
|
|
123
88
|
name = "Kubernetes Workloads"
|
|
124
89
|
key = "kubernetes_workloads_conf"
|
|
125
90
|
format_str = KUBERNETES_WORKLOADS_LINK
|
|
126
|
-
|
|
127
|
-
@staticmethod
|
|
128
|
-
def persist(
|
|
129
|
-
context: Context,
|
|
130
|
-
task_instance,
|
|
131
|
-
):
|
|
132
|
-
task_instance.xcom_push(
|
|
133
|
-
context=context,
|
|
134
|
-
key=KubernetesEngineWorkloadsLink.key,
|
|
135
|
-
value={
|
|
136
|
-
"location": task_instance.location,
|
|
137
|
-
"cluster_name": task_instance.cluster_name,
|
|
138
|
-
"namespace": task_instance.namespace,
|
|
139
|
-
"project_id": task_instance.project_id,
|
|
140
|
-
},
|
|
141
|
-
)
|
|
@@ -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
|
MANAGED_KAFKA_BASE_LINK = "/managedkafka"
|
|
27
22
|
MANAGED_KAFKA_CLUSTER_LINK = (
|
|
28
23
|
MANAGED_KAFKA_BASE_LINK + "/{location}/clusters/{cluster_id}?project={project_id}"
|
|
@@ -44,22 +39,6 @@ class ApacheKafkaClusterLink(BaseGoogleLink):
|
|
|
44
39
|
key = "cluster_conf"
|
|
45
40
|
format_str = MANAGED_KAFKA_CLUSTER_LINK
|
|
46
41
|
|
|
47
|
-
@staticmethod
|
|
48
|
-
def persist(
|
|
49
|
-
context: Context,
|
|
50
|
-
task_instance,
|
|
51
|
-
cluster_id: str,
|
|
52
|
-
):
|
|
53
|
-
task_instance.xcom_push(
|
|
54
|
-
context=context,
|
|
55
|
-
key=ApacheKafkaClusterLink.key,
|
|
56
|
-
value={
|
|
57
|
-
"location": task_instance.location,
|
|
58
|
-
"cluster_id": cluster_id,
|
|
59
|
-
"project_id": task_instance.project_id,
|
|
60
|
-
},
|
|
61
|
-
)
|
|
62
|
-
|
|
63
42
|
|
|
64
43
|
class ApacheKafkaClusterListLink(BaseGoogleLink):
|
|
65
44
|
"""Helper class for constructing Apache Kafka Clusters link."""
|
|
@@ -68,19 +47,6 @@ class ApacheKafkaClusterListLink(BaseGoogleLink):
|
|
|
68
47
|
key = "cluster_list_conf"
|
|
69
48
|
format_str = MANAGED_KAFKA_CLUSTER_LIST_LINK
|
|
70
49
|
|
|
71
|
-
@staticmethod
|
|
72
|
-
def persist(
|
|
73
|
-
context: Context,
|
|
74
|
-
task_instance,
|
|
75
|
-
):
|
|
76
|
-
task_instance.xcom_push(
|
|
77
|
-
context=context,
|
|
78
|
-
key=ApacheKafkaClusterListLink.key,
|
|
79
|
-
value={
|
|
80
|
-
"project_id": task_instance.project_id,
|
|
81
|
-
},
|
|
82
|
-
)
|
|
83
|
-
|
|
84
50
|
|
|
85
51
|
class ApacheKafkaTopicLink(BaseGoogleLink):
|
|
86
52
|
"""Helper class for constructing Apache Kafka Topic link."""
|
|
@@ -89,24 +55,6 @@ class ApacheKafkaTopicLink(BaseGoogleLink):
|
|
|
89
55
|
key = "topic_conf"
|
|
90
56
|
format_str = MANAGED_KAFKA_TOPIC_LINK
|
|
91
57
|
|
|
92
|
-
@staticmethod
|
|
93
|
-
def persist(
|
|
94
|
-
context: Context,
|
|
95
|
-
task_instance,
|
|
96
|
-
cluster_id: str,
|
|
97
|
-
topic_id: str,
|
|
98
|
-
):
|
|
99
|
-
task_instance.xcom_push(
|
|
100
|
-
context=context,
|
|
101
|
-
key=ApacheKafkaTopicLink.key,
|
|
102
|
-
value={
|
|
103
|
-
"location": task_instance.location,
|
|
104
|
-
"cluster_id": cluster_id,
|
|
105
|
-
"topic_id": topic_id,
|
|
106
|
-
"project_id": task_instance.project_id,
|
|
107
|
-
},
|
|
108
|
-
)
|
|
109
|
-
|
|
110
58
|
|
|
111
59
|
class ApacheKafkaConsumerGroupLink(BaseGoogleLink):
|
|
112
60
|
"""Helper class for constructing Apache Kafka Consumer Group link."""
|
|
@@ -114,21 +62,3 @@ class ApacheKafkaConsumerGroupLink(BaseGoogleLink):
|
|
|
114
62
|
name = "Apache Kafka Consumer Group"
|
|
115
63
|
key = "consumer_group_conf"
|
|
116
64
|
format_str = MANAGED_KAFKA_CONSUMER_GROUP_LINK
|
|
117
|
-
|
|
118
|
-
@staticmethod
|
|
119
|
-
def persist(
|
|
120
|
-
context: Context,
|
|
121
|
-
task_instance,
|
|
122
|
-
cluster_id: str,
|
|
123
|
-
consumer_group_id: str,
|
|
124
|
-
):
|
|
125
|
-
task_instance.xcom_push(
|
|
126
|
-
context=context,
|
|
127
|
-
key=ApacheKafkaConsumerGroupLink.key,
|
|
128
|
-
value={
|
|
129
|
-
"location": task_instance.location,
|
|
130
|
-
"cluster_id": cluster_id,
|
|
131
|
-
"consumer_group_id": consumer_group_id,
|
|
132
|
-
"project_id": task_instance.project_id,
|
|
133
|
-
},
|
|
134
|
-
)
|