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.
- airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
- airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
- airflow/providers/google/__init__.py +3 -3
- airflow/providers/google/_vendor/__init__.py +0 -0
- airflow/providers/google/_vendor/json_merge_patch.py +91 -0
- airflow/providers/google/ads/hooks/ads.py +52 -43
- airflow/providers/google/ads/operators/ads.py +2 -2
- airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
- airflow/providers/google/assets/gcs.py +1 -11
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
- airflow/providers/google/cloud/bundles/gcs.py +161 -0
- airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
- airflow/providers/google/cloud/hooks/bigquery.py +195 -318
- airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
- airflow/providers/google/cloud/hooks/bigtable.py +3 -2
- airflow/providers/google/cloud/hooks/cloud_batch.py +8 -9
- airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
- airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
- airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
- airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
- airflow/providers/google/cloud/hooks/compute.py +7 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
- airflow/providers/google/cloud/hooks/dataflow.py +87 -242
- airflow/providers/google/cloud/hooks/dataform.py +9 -14
- airflow/providers/google/cloud/hooks/datafusion.py +7 -9
- airflow/providers/google/cloud/hooks/dataplex.py +13 -12
- airflow/providers/google/cloud/hooks/dataprep.py +2 -2
- airflow/providers/google/cloud/hooks/dataproc.py +76 -74
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/hooks/dlp.py +5 -4
- airflow/providers/google/cloud/hooks/gcs.py +144 -33
- airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
- airflow/providers/google/cloud/hooks/kms.py +3 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
- airflow/providers/google/cloud/hooks/looker.py +6 -1
- airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
- airflow/providers/google/cloud/hooks/mlengine.py +7 -8
- airflow/providers/google/cloud/hooks/natural_language.py +3 -2
- airflow/providers/google/cloud/hooks/os_login.py +3 -2
- airflow/providers/google/cloud/hooks/pubsub.py +6 -6
- airflow/providers/google/cloud/hooks/secret_manager.py +105 -12
- airflow/providers/google/cloud/hooks/spanner.py +75 -10
- airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
- airflow/providers/google/cloud/hooks/tasks.py +4 -3
- airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
- airflow/providers/google/cloud/hooks/translate.py +8 -17
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
- airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
- airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
- airflow/providers/google/cloud/hooks/vision.py +7 -7
- airflow/providers/google/cloud/hooks/workflows.py +4 -3
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +77 -7
- 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 -46
- 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 -90
- 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 -89
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
- airflow/providers/google/cloud/links/managed_kafka.py +11 -51
- 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 +166 -118
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
- 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 +141 -40
- airflow/providers/google/cloud/openlineage/mixins.py +14 -13
- airflow/providers/google/cloud/openlineage/utils.py +19 -3
- airflow/providers/google/cloud/operators/alloy_db.py +76 -61
- airflow/providers/google/cloud/operators/bigquery.py +104 -667
- airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
- airflow/providers/google/cloud/operators/bigtable.py +38 -7
- airflow/providers/google/cloud/operators/cloud_base.py +22 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
- airflow/providers/google/cloud/operators/cloud_build.py +80 -36
- airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
- airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
- airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
- airflow/providers/google/cloud/operators/cloud_run.py +39 -20
- airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
- airflow/providers/google/cloud/operators/compute.py +18 -50
- airflow/providers/google/cloud/operators/datacatalog.py +167 -29
- airflow/providers/google/cloud/operators/dataflow.py +38 -15
- airflow/providers/google/cloud/operators/dataform.py +19 -7
- airflow/providers/google/cloud/operators/datafusion.py +43 -43
- airflow/providers/google/cloud/operators/dataplex.py +212 -126
- airflow/providers/google/cloud/operators/dataprep.py +1 -5
- airflow/providers/google/cloud/operators/dataproc.py +134 -207
- airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
- airflow/providers/google/cloud/operators/datastore.py +22 -6
- airflow/providers/google/cloud/operators/dlp.py +24 -45
- airflow/providers/google/cloud/operators/functions.py +21 -14
- airflow/providers/google/cloud/operators/gcs.py +15 -12
- airflow/providers/google/cloud/operators/gen_ai.py +389 -0
- airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
- airflow/providers/google/cloud/operators/looker.py +1 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
- airflow/providers/google/cloud/operators/natural_language.py +5 -3
- airflow/providers/google/cloud/operators/pubsub.py +69 -21
- airflow/providers/google/cloud/operators/spanner.py +53 -45
- airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
- airflow/providers/google/cloud/operators/stackdriver.py +5 -11
- airflow/providers/google/cloud/operators/tasks.py +6 -15
- airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
- airflow/providers/google/cloud/operators/translate.py +46 -20
- airflow/providers/google/cloud/operators/translate_speech.py +4 -3
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
- 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 +16 -12
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
- airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
- airflow/providers/google/cloud/operators/vision.py +7 -5
- airflow/providers/google/cloud/operators/workflows.py +24 -19
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
- airflow/providers/google/cloud/sensors/bigquery.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
- airflow/providers/google/cloud/sensors/bigtable.py +14 -6
- airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
- airflow/providers/google/cloud/sensors/dataflow.py +27 -10
- 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 +7 -5
- airflow/providers/google/cloud/sensors/dataprep.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc.py +10 -9
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/sensors/gcs.py +22 -21
- airflow/providers/google/cloud/sensors/looker.py +5 -5
- airflow/providers/google/cloud/sensors/pubsub.py +20 -20
- 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 +6 -4
- 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 +14 -13
- 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 +18 -22
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
- 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 +44 -12
- 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 +36 -14
- 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/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_build.py +3 -2
- airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
- airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
- airflow/providers/google/cloud/triggers/dataflow.py +125 -2
- airflow/providers/google/cloud/triggers/datafusion.py +1 -1
- airflow/providers/google/cloud/triggers/dataplex.py +16 -3
- airflow/providers/google/cloud/triggers/dataproc.py +124 -53
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
- airflow/providers/google/cloud/triggers/mlengine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +17 -20
- airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
- airflow/providers/google/cloud/utils/bigquery.py +5 -7
- airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
- airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
- airflow/providers/google/cloud/utils/dataform.py +1 -1
- airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/cloud/utils/validators.py +43 -0
- airflow/providers/google/common/auth_backend/google_openid.py +26 -9
- airflow/providers/google/common/consts.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +40 -43
- airflow/providers/google/common/hooks/operation_helpers.py +78 -0
- 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 +4 -5
- airflow/providers/google/firebase/operators/firestore.py +2 -2
- airflow/providers/google/get_provider_info.py +61 -216
- airflow/providers/google/go_module_utils.py +35 -3
- airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
- airflow/providers/google/leveldb/operators/leveldb.py +2 -2
- airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
- airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
- airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
- 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 +4 -64
- airflow/providers/google/suite/hooks/calendar.py +1 -1
- airflow/providers/google/suite/hooks/drive.py +2 -2
- 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-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
- apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
- apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
- airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
- airflow/providers/google/cloud/hooks/automl.py +0 -679
- 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 -1360
- airflow/providers/google/cloud/operators/life_sciences.py +0 -119
- airflow/providers/google/cloud/operators/mlengine.py +0 -1515
- airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
- apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
- /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
- {apache_airflow_providers_google-14.0.0.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
|
@@ -20,9 +20,15 @@ import datetime
|
|
|
20
20
|
import json
|
|
21
21
|
import re
|
|
22
22
|
import uuid
|
|
23
|
-
from collections.abc import Sequence
|
|
23
|
+
from collections.abc import Collection, Sequence
|
|
24
24
|
from typing import TYPE_CHECKING
|
|
25
25
|
|
|
26
|
+
import pendulum
|
|
27
|
+
from google.api_core.exceptions import AlreadyExists
|
|
28
|
+
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
|
29
|
+
from google.cloud.workflows.executions_v1beta import Execution
|
|
30
|
+
from google.cloud.workflows_v1beta import Workflow
|
|
31
|
+
|
|
26
32
|
from airflow.providers.google.cloud.hooks.workflows import WorkflowsHook
|
|
27
33
|
from airflow.providers.google.cloud.links.workflows import (
|
|
28
34
|
WorkflowsExecutionLink,
|
|
@@ -31,16 +37,14 @@ from airflow.providers.google.cloud.links.workflows import (
|
|
|
31
37
|
)
|
|
32
38
|
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
|
33
39
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
34
|
-
from google.
|
|
35
|
-
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
|
36
|
-
from google.cloud.workflows.executions_v1beta import Execution
|
|
37
|
-
from google.cloud.workflows_v1beta import Workflow
|
|
40
|
+
from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
|
|
38
41
|
|
|
39
42
|
if TYPE_CHECKING:
|
|
40
|
-
from airflow.utils.context import Context
|
|
41
43
|
from google.api_core.retry import Retry
|
|
42
44
|
from google.protobuf.field_mask_pb2 import FieldMask
|
|
43
45
|
|
|
46
|
+
from airflow.sdk import Context
|
|
47
|
+
|
|
44
48
|
from airflow.utils.hashlib_wrapper import md5
|
|
45
49
|
|
|
46
50
|
|
|
@@ -67,7 +71,7 @@ class WorkflowsCreateWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
67
71
|
:param metadata: Additional metadata that is provided to the method.
|
|
68
72
|
"""
|
|
69
73
|
|
|
70
|
-
template_fields:
|
|
74
|
+
template_fields: Collection[str] = ("location", "workflow", "workflow_id")
|
|
71
75
|
template_fields_renderers = {"workflow": "json"}
|
|
72
76
|
operator_extra_links = (WorkflowsWorkflowDetailsLink(),)
|
|
73
77
|
|
|
@@ -99,7 +103,7 @@ class WorkflowsCreateWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
99
103
|
self.impersonation_chain = impersonation_chain
|
|
100
104
|
self.force_rerun = force_rerun
|
|
101
105
|
|
|
102
|
-
def _workflow_id(self, context):
|
|
106
|
+
def _workflow_id(self, context: Context) -> str:
|
|
103
107
|
if self.workflow_id and not self.force_rerun:
|
|
104
108
|
# If users provide workflow id then assuring the idempotency
|
|
105
109
|
# is on their side
|
|
@@ -112,8 +116,17 @@ class WorkflowsCreateWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
112
116
|
|
|
113
117
|
# We are limited by allowed length of workflow_id so
|
|
114
118
|
# we use hash of whole information
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
if AIRFLOW_V_3_0_PLUS:
|
|
120
|
+
if dag_run := context.get("dag_run"):
|
|
121
|
+
run_after = pendulum.instance(dag_run.run_after)
|
|
122
|
+
else:
|
|
123
|
+
run_after = pendulum.now("UTC")
|
|
124
|
+
else:
|
|
125
|
+
if logical_date := context.get("logical_date"):
|
|
126
|
+
run_after = pendulum.instance(logical_date)
|
|
127
|
+
else:
|
|
128
|
+
run_after = pendulum.now("UTC")
|
|
129
|
+
base = f"airflow_{self.dag_id}_{self.task_id}_{run_after.isoformat()}_{hash_base}"
|
|
117
130
|
workflow_id = md5(base.encode()).hexdigest()
|
|
118
131
|
return re.sub(r"[:\-+.]", "_", workflow_id)
|
|
119
132
|
|
|
@@ -145,7 +158,6 @@ class WorkflowsCreateWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
145
158
|
|
|
146
159
|
WorkflowsWorkflowDetailsLink.persist(
|
|
147
160
|
context=context,
|
|
148
|
-
task_instance=self,
|
|
149
161
|
location_id=self.location,
|
|
150
162
|
workflow_id=self.workflow_id,
|
|
151
163
|
project_id=self.project_id or hook.project_id,
|
|
@@ -233,7 +245,6 @@ class WorkflowsUpdateWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
233
245
|
|
|
234
246
|
WorkflowsWorkflowDetailsLink.persist(
|
|
235
247
|
context=context,
|
|
236
|
-
task_instance=self,
|
|
237
248
|
location_id=self.location,
|
|
238
249
|
workflow_id=self.workflow_id,
|
|
239
250
|
project_id=self.project_id or hook.project_id,
|
|
@@ -366,7 +377,6 @@ class WorkflowsListWorkflowsOperator(GoogleCloudBaseOperator):
|
|
|
366
377
|
|
|
367
378
|
WorkflowsListOfWorkflowsLink.persist(
|
|
368
379
|
context=context,
|
|
369
|
-
task_instance=self,
|
|
370
380
|
project_id=self.project_id or hook.project_id,
|
|
371
381
|
)
|
|
372
382
|
|
|
@@ -432,7 +442,6 @@ class WorkflowsGetWorkflowOperator(GoogleCloudBaseOperator):
|
|
|
432
442
|
|
|
433
443
|
WorkflowsWorkflowDetailsLink.persist(
|
|
434
444
|
context=context,
|
|
435
|
-
task_instance=self,
|
|
436
445
|
location_id=self.location,
|
|
437
446
|
workflow_id=self.workflow_id,
|
|
438
447
|
project_id=self.project_id or hook.project_id,
|
|
@@ -503,11 +512,10 @@ class WorkflowsCreateExecutionOperator(GoogleCloudBaseOperator):
|
|
|
503
512
|
metadata=self.metadata,
|
|
504
513
|
)
|
|
505
514
|
execution_id = execution.name.split("/")[-1]
|
|
506
|
-
|
|
515
|
+
context["task_instance"].xcom_push(key="execution_id", value=execution_id)
|
|
507
516
|
|
|
508
517
|
WorkflowsExecutionLink.persist(
|
|
509
518
|
context=context,
|
|
510
|
-
task_instance=self,
|
|
511
519
|
location_id=self.location,
|
|
512
520
|
workflow_id=self.workflow_id,
|
|
513
521
|
execution_id=execution_id,
|
|
@@ -580,7 +588,6 @@ class WorkflowsCancelExecutionOperator(GoogleCloudBaseOperator):
|
|
|
580
588
|
|
|
581
589
|
WorkflowsExecutionLink.persist(
|
|
582
590
|
context=context,
|
|
583
|
-
task_instance=self,
|
|
584
591
|
location_id=self.location,
|
|
585
592
|
workflow_id=self.workflow_id,
|
|
586
593
|
execution_id=self.execution_id,
|
|
@@ -659,7 +666,6 @@ class WorkflowsListExecutionsOperator(GoogleCloudBaseOperator):
|
|
|
659
666
|
|
|
660
667
|
WorkflowsWorkflowDetailsLink.persist(
|
|
661
668
|
context=context,
|
|
662
|
-
task_instance=self,
|
|
663
669
|
location_id=self.location,
|
|
664
670
|
workflow_id=self.workflow_id,
|
|
665
671
|
project_id=self.project_id or hook.project_id,
|
|
@@ -735,7 +741,6 @@ class WorkflowsGetExecutionOperator(GoogleCloudBaseOperator):
|
|
|
735
741
|
|
|
736
742
|
WorkflowsExecutionLink.persist(
|
|
737
743
|
context=context,
|
|
738
|
-
task_instance=self,
|
|
739
744
|
location_id=self.location,
|
|
740
745
|
workflow_id=self.workflow_id,
|
|
741
746
|
execution_id=self.execution_id,
|
|
@@ -21,6 +21,8 @@ from __future__ import annotations
|
|
|
21
21
|
import logging
|
|
22
22
|
from collections.abc import Sequence
|
|
23
23
|
|
|
24
|
+
from google.auth.exceptions import DefaultCredentialsError
|
|
25
|
+
|
|
24
26
|
from airflow.exceptions import AirflowException
|
|
25
27
|
from airflow.providers.google.cloud._internal_client.secret_manager_client import _SecretManagerClient
|
|
26
28
|
from airflow.providers.google.cloud.utils.credentials_provider import (
|
|
@@ -30,7 +32,6 @@ from airflow.providers.google.cloud.utils.credentials_provider import (
|
|
|
30
32
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
31
33
|
from airflow.secrets import BaseSecretsBackend
|
|
32
34
|
from airflow.utils.log.logging_mixin import LoggingMixin
|
|
33
|
-
from google.auth.exceptions import DefaultCredentialsError
|
|
34
35
|
|
|
35
36
|
log = logging.getLogger(__name__)
|
|
36
37
|
|
|
@@ -26,15 +26,15 @@ from typing import TYPE_CHECKING, Any
|
|
|
26
26
|
|
|
27
27
|
from airflow.configuration import conf
|
|
28
28
|
from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
|
|
29
|
+
from airflow.providers.common.compat.sdk import BaseSensorOperator
|
|
29
30
|
from airflow.providers.google.cloud.hooks.bigquery import BigQueryHook
|
|
30
31
|
from airflow.providers.google.cloud.triggers.bigquery import (
|
|
31
32
|
BigQueryTableExistenceTrigger,
|
|
32
33
|
BigQueryTablePartitionExistenceTrigger,
|
|
33
34
|
)
|
|
34
|
-
from airflow.sensors.base import BaseSensorOperator
|
|
35
35
|
|
|
36
36
|
if TYPE_CHECKING:
|
|
37
|
-
from airflow.
|
|
37
|
+
from airflow.providers.common.compat.sdk import Context
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class BigQueryTableExistenceSensor(BaseSensorOperator):
|
|
@@ -22,17 +22,19 @@ from __future__ import annotations
|
|
|
22
22
|
from collections.abc import Sequence
|
|
23
23
|
from typing import TYPE_CHECKING
|
|
24
24
|
|
|
25
|
+
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
|
26
|
+
from google.cloud.bigquery_datatransfer_v1 import TransferState
|
|
27
|
+
|
|
25
28
|
from airflow.exceptions import AirflowException
|
|
29
|
+
from airflow.providers.common.compat.sdk import BaseSensorOperator
|
|
26
30
|
from airflow.providers.google.cloud.hooks.bigquery_dts import BiqQueryDataTransferServiceHook
|
|
27
31
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
28
|
-
from airflow.sensors.base import BaseSensorOperator
|
|
29
|
-
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
|
30
|
-
from google.cloud.bigquery_datatransfer_v1 import TransferState
|
|
31
32
|
|
|
32
33
|
if TYPE_CHECKING:
|
|
33
|
-
from airflow.utils.context import Context
|
|
34
34
|
from google.api_core.retry import Retry
|
|
35
35
|
|
|
36
|
+
from airflow.providers.common.compat.sdk import Context
|
|
37
|
+
|
|
36
38
|
|
|
37
39
|
class BigQueryDataTransferServiceTransferRunSensor(BaseSensorOperator):
|
|
38
40
|
"""
|
|
@@ -20,19 +20,20 @@
|
|
|
20
20
|
from __future__ import annotations
|
|
21
21
|
|
|
22
22
|
from collections.abc import Sequence
|
|
23
|
-
from typing import TYPE_CHECKING
|
|
23
|
+
from typing import TYPE_CHECKING, Any
|
|
24
24
|
|
|
25
25
|
import google.api_core.exceptions
|
|
26
|
+
from google.cloud.bigtable import enums
|
|
27
|
+
from google.cloud.bigtable.table import ClusterState
|
|
28
|
+
|
|
29
|
+
from airflow.providers.common.compat.sdk import BaseSensorOperator
|
|
26
30
|
from airflow.providers.google.cloud.hooks.bigtable import BigtableHook
|
|
27
31
|
from airflow.providers.google.cloud.links.bigtable import BigtableTablesLink
|
|
28
32
|
from airflow.providers.google.cloud.operators.bigtable import BigtableValidationMixin
|
|
29
33
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
30
|
-
from airflow.sensors.base import BaseSensorOperator
|
|
31
|
-
from google.cloud.bigtable import enums
|
|
32
|
-
from google.cloud.bigtable.table import ClusterState
|
|
33
34
|
|
|
34
35
|
if TYPE_CHECKING:
|
|
35
|
-
from airflow.
|
|
36
|
+
from airflow.providers.common.compat.sdk import Context
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
class BigtableTableReplicationCompletedSensor(BaseSensorOperator, BigtableValidationMixin):
|
|
@@ -88,6 +89,13 @@ class BigtableTableReplicationCompletedSensor(BaseSensorOperator, BigtableValida
|
|
|
88
89
|
self.impersonation_chain = impersonation_chain
|
|
89
90
|
super().__init__(**kwargs)
|
|
90
91
|
|
|
92
|
+
@property
|
|
93
|
+
def extra_links_params(self) -> dict[str, Any]:
|
|
94
|
+
return {
|
|
95
|
+
"instance_id": self.instance_id,
|
|
96
|
+
"project_id": self.project_id,
|
|
97
|
+
}
|
|
98
|
+
|
|
91
99
|
def poke(self, context: Context) -> bool:
|
|
92
100
|
hook = BigtableHook(
|
|
93
101
|
gcp_conn_id=self.gcp_conn_id,
|
|
@@ -118,5 +126,5 @@ class BigtableTableReplicationCompletedSensor(BaseSensorOperator, BigtableValida
|
|
|
118
126
|
return False
|
|
119
127
|
|
|
120
128
|
self.log.info("Table '%s' is replicated.", self.table_id)
|
|
121
|
-
BigtableTablesLink.persist(context=context
|
|
129
|
+
BigtableTablesLink.persist(context=context)
|
|
122
130
|
return True
|