apache-airflow-providers-google 16.0.0rc1__py3-none-any.whl → 16.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/__init__.py +1 -1
- airflow/providers/google/ads/hooks/ads.py +9 -5
- airflow/providers/google/ads/operators/ads.py +1 -1
- airflow/providers/google/ads/transfers/ads_to_gcs.py +1 -1
- airflow/providers/google/cloud/hooks/bigquery.py +2 -3
- airflow/providers/google/cloud/hooks/cloud_sql.py +8 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +9 -1
- airflow/providers/google/cloud/hooks/dataflow.py +2 -2
- airflow/providers/google/cloud/hooks/dataplex.py +1 -1
- airflow/providers/google/cloud/hooks/dataprep.py +4 -1
- airflow/providers/google/cloud/hooks/gcs.py +2 -2
- airflow/providers/google/cloud/hooks/looker.py +5 -1
- airflow/providers/google/cloud/hooks/mlengine.py +2 -1
- airflow/providers/google/cloud/hooks/secret_manager.py +102 -10
- airflow/providers/google/cloud/hooks/spanner.py +2 -2
- airflow/providers/google/cloud/hooks/translate.py +1 -1
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +307 -7
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +43 -14
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +11 -2
- airflow/providers/google/cloud/hooks/vision.py +2 -2
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +75 -11
- 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/cloud_run.py +1 -33
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +16 -43
- airflow/providers/google/cloud/links/cloud_tasks.py +6 -25
- 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 +14 -90
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +5 -59
- airflow/providers/google/cloud/links/life_sciences.py +0 -19
- 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 +16 -186
- airflow/providers/google/cloud/links/vertex_ai.py +8 -224
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/operators/alloy_db.py +69 -54
- airflow/providers/google/cloud/operators/automl.py +16 -14
- airflow/providers/google/cloud/operators/bigquery.py +0 -15
- airflow/providers/google/cloud/operators/bigquery_dts.py +2 -4
- airflow/providers/google/cloud/operators/bigtable.py +35 -6
- airflow/providers/google/cloud/operators/cloud_base.py +21 -1
- airflow/providers/google/cloud/operators/cloud_build.py +74 -31
- airflow/providers/google/cloud/operators/cloud_composer.py +34 -35
- airflow/providers/google/cloud/operators/cloud_memorystore.py +68 -42
- airflow/providers/google/cloud/operators/cloud_run.py +0 -1
- airflow/providers/google/cloud/operators/cloud_sql.py +11 -15
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -2
- airflow/providers/google/cloud/operators/compute.py +7 -39
- airflow/providers/google/cloud/operators/datacatalog.py +156 -20
- airflow/providers/google/cloud/operators/dataflow.py +37 -14
- airflow/providers/google/cloud/operators/dataform.py +14 -4
- airflow/providers/google/cloud/operators/datafusion.py +4 -12
- airflow/providers/google/cloud/operators/dataplex.py +180 -96
- airflow/providers/google/cloud/operators/dataprep.py +0 -4
- airflow/providers/google/cloud/operators/dataproc.py +10 -16
- airflow/providers/google/cloud/operators/dataproc_metastore.py +95 -87
- airflow/providers/google/cloud/operators/datastore.py +21 -5
- airflow/providers/google/cloud/operators/dlp.py +3 -26
- airflow/providers/google/cloud/operators/functions.py +15 -6
- airflow/providers/google/cloud/operators/gcs.py +0 -7
- airflow/providers/google/cloud/operators/kubernetes_engine.py +50 -7
- airflow/providers/google/cloud/operators/life_sciences.py +0 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +106 -51
- airflow/providers/google/cloud/operators/mlengine.py +0 -1
- airflow/providers/google/cloud/operators/pubsub.py +2 -4
- airflow/providers/google/cloud/operators/spanner.py +0 -4
- airflow/providers/google/cloud/operators/speech_to_text.py +0 -1
- airflow/providers/google/cloud/operators/stackdriver.py +0 -8
- airflow/providers/google/cloud/operators/tasks.py +0 -11
- airflow/providers/google/cloud/operators/text_to_speech.py +0 -1
- airflow/providers/google/cloud/operators/translate.py +37 -13
- airflow/providers/google/cloud/operators/translate_speech.py +0 -1
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +31 -18
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +28 -8
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +38 -25
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +69 -7
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +42 -8
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +531 -0
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +93 -25
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +10 -8
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +56 -10
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +25 -6
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +9 -6
- airflow/providers/google/cloud/operators/workflows.py +1 -9
- airflow/providers/google/cloud/sensors/bigquery.py +1 -1
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -1
- airflow/providers/google/cloud/sensors/bigtable.py +15 -3
- airflow/providers/google/cloud/sensors/cloud_composer.py +6 -1
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -1
- airflow/providers/google/cloud/sensors/dataflow.py +3 -3
- airflow/providers/google/cloud/sensors/dataform.py +6 -1
- airflow/providers/google/cloud/sensors/datafusion.py +6 -1
- airflow/providers/google/cloud/sensors/dataplex.py +6 -1
- airflow/providers/google/cloud/sensors/dataprep.py +6 -1
- airflow/providers/google/cloud/sensors/dataproc.py +6 -1
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +6 -1
- airflow/providers/google/cloud/sensors/gcs.py +9 -3
- airflow/providers/google/cloud/sensors/looker.py +6 -1
- airflow/providers/google/cloud/sensors/pubsub.py +8 -3
- airflow/providers/google/cloud/sensors/tasks.py +6 -1
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +6 -1
- airflow/providers/google/cloud/sensors/workflows.py +6 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +1 -2
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +1 -2
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -1
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +1 -2
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/gcs_to_local.py +1 -1
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +1 -1
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +5 -1
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +1 -1
- airflow/providers/google/cloud/transfers/http_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/local_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/common/auth_backend/google_openid.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +7 -3
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/firebase/operators/firestore.py +1 -1
- airflow/providers/google/get_provider_info.py +0 -11
- airflow/providers/google/leveldb/hooks/leveldb.py +5 -1
- airflow/providers/google/leveldb/operators/leveldb.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +3 -6
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +0 -1
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +4 -4
- airflow/providers/google/marketing_platform/operators/display_video.py +6 -6
- airflow/providers/google/marketing_platform/operators/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +6 -1
- airflow/providers/google/marketing_platform/sensors/display_video.py +6 -1
- airflow/providers/google/suite/operators/sheets.py +3 -3
- airflow/providers/google/suite/sensors/drive.py +6 -1
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +1 -1
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +1 -1
- airflow/providers/google/version_compat.py +28 -0
- {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0rc1.dist-info}/METADATA +19 -20
- {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0rc1.dist-info}/RECORD +166 -166
- {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0rc1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_google-16.0.0rc1.dist-info → apache_airflow_providers_google-16.1.0rc1.dist-info}/entry_points.txt +0 -0
@@ -111,10 +111,9 @@ class CloudDataFusionRestartInstanceOperator(GoogleCloudBaseOperator):
|
|
111
111
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
112
112
|
DataFusionInstanceLink.persist(
|
113
113
|
context=context,
|
114
|
-
task_instance=self,
|
115
114
|
project_id=project_id,
|
116
115
|
instance_name=self.instance_name,
|
117
|
-
|
116
|
+
region=self.location,
|
118
117
|
)
|
119
118
|
|
120
119
|
|
@@ -269,10 +268,9 @@ class CloudDataFusionCreateInstanceOperator(GoogleCloudBaseOperator):
|
|
269
268
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
270
269
|
DataFusionInstanceLink.persist(
|
271
270
|
context=context,
|
272
|
-
task_instance=self,
|
273
271
|
project_id=project_id,
|
274
272
|
instance_name=self.instance_name,
|
275
|
-
|
273
|
+
region=self.location,
|
276
274
|
)
|
277
275
|
return instance
|
278
276
|
|
@@ -358,10 +356,9 @@ class CloudDataFusionUpdateInstanceOperator(GoogleCloudBaseOperator):
|
|
358
356
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
359
357
|
DataFusionInstanceLink.persist(
|
360
358
|
context=context,
|
361
|
-
task_instance=self,
|
362
359
|
project_id=project_id,
|
363
360
|
instance_name=self.instance_name,
|
364
|
-
|
361
|
+
region=self.location,
|
365
362
|
)
|
366
363
|
|
367
364
|
|
@@ -429,10 +426,9 @@ class CloudDataFusionGetInstanceOperator(GoogleCloudBaseOperator):
|
|
429
426
|
project_id = resource_path_to_dict(resource_name=instance["name"])["projects"]
|
430
427
|
DataFusionInstanceLink.persist(
|
431
428
|
context=context,
|
432
|
-
task_instance=self,
|
433
429
|
project_id=project_id,
|
434
430
|
instance_name=self.instance_name,
|
435
|
-
|
431
|
+
region=self.location,
|
436
432
|
)
|
437
433
|
return instance
|
438
434
|
|
@@ -519,7 +515,6 @@ class CloudDataFusionCreatePipelineOperator(GoogleCloudBaseOperator):
|
|
519
515
|
)
|
520
516
|
DataFusionPipelineLink.persist(
|
521
517
|
context=context,
|
522
|
-
task_instance=self,
|
523
518
|
uri=instance["serviceEndpoint"],
|
524
519
|
pipeline_name=self.pipeline_name,
|
525
520
|
namespace=self.namespace,
|
@@ -693,7 +688,6 @@ class CloudDataFusionListPipelinesOperator(GoogleCloudBaseOperator):
|
|
693
688
|
|
694
689
|
DataFusionPipelinesLink.persist(
|
695
690
|
context=context,
|
696
|
-
task_instance=self,
|
697
691
|
uri=service_endpoint,
|
698
692
|
namespace=self.namespace,
|
699
693
|
)
|
@@ -813,7 +807,6 @@ class CloudDataFusionStartPipelineOperator(GoogleCloudBaseOperator):
|
|
813
807
|
|
814
808
|
DataFusionPipelineLink.persist(
|
815
809
|
context=context,
|
816
|
-
task_instance=self,
|
817
810
|
uri=instance["serviceEndpoint"],
|
818
811
|
pipeline_name=self.pipeline_name,
|
819
812
|
namespace=self.namespace,
|
@@ -943,7 +936,6 @@ class CloudDataFusionStopPipelineOperator(GoogleCloudBaseOperator):
|
|
943
936
|
|
944
937
|
DataFusionPipelineLink.persist(
|
945
938
|
context=context,
|
946
|
-
task_instance=self,
|
947
939
|
uri=instance["serviceEndpoint"],
|
948
940
|
pipeline_name=self.pipeline_name,
|
949
941
|
namespace=self.namespace,
|
@@ -150,6 +150,15 @@ class DataplexCreateTaskOperator(GoogleCloudBaseOperator):
|
|
150
150
|
self.impersonation_chain = impersonation_chain
|
151
151
|
self.asynchronous = asynchronous
|
152
152
|
|
153
|
+
@property
|
154
|
+
def extra_links_params(self) -> dict[str, Any]:
|
155
|
+
return {
|
156
|
+
"lake_id": self.lake_id,
|
157
|
+
"task_id": self.dataplex_task_id,
|
158
|
+
"region": self.region,
|
159
|
+
"project_id": self.project_id,
|
160
|
+
}
|
161
|
+
|
153
162
|
def execute(self, context: Context) -> dict:
|
154
163
|
hook = DataplexHook(
|
155
164
|
gcp_conn_id=self.gcp_conn_id,
|
@@ -157,7 +166,7 @@ class DataplexCreateTaskOperator(GoogleCloudBaseOperator):
|
|
157
166
|
impersonation_chain=self.impersonation_chain,
|
158
167
|
)
|
159
168
|
self.log.info("Creating Dataplex task %s", self.dataplex_task_id)
|
160
|
-
DataplexTaskLink.persist(context=context
|
169
|
+
DataplexTaskLink.persist(context=context)
|
161
170
|
|
162
171
|
try:
|
163
172
|
operation = hook.create_task(
|
@@ -351,6 +360,14 @@ class DataplexListTasksOperator(GoogleCloudBaseOperator):
|
|
351
360
|
self.gcp_conn_id = gcp_conn_id
|
352
361
|
self.impersonation_chain = impersonation_chain
|
353
362
|
|
363
|
+
@property
|
364
|
+
def extra_links_params(self) -> dict[str, Any]:
|
365
|
+
return {
|
366
|
+
"project_id": self.project_id,
|
367
|
+
"lake_id": self.lake_id,
|
368
|
+
"region": self.region,
|
369
|
+
}
|
370
|
+
|
354
371
|
def execute(self, context: Context) -> list[dict]:
|
355
372
|
hook = DataplexHook(
|
356
373
|
gcp_conn_id=self.gcp_conn_id,
|
@@ -358,7 +375,7 @@ class DataplexListTasksOperator(GoogleCloudBaseOperator):
|
|
358
375
|
impersonation_chain=self.impersonation_chain,
|
359
376
|
)
|
360
377
|
self.log.info("Listing Dataplex tasks from lake %s", self.lake_id)
|
361
|
-
DataplexTasksLink.persist(context=context
|
378
|
+
DataplexTasksLink.persist(context=context)
|
362
379
|
|
363
380
|
tasks = hook.list_tasks(
|
364
381
|
project_id=self.project_id,
|
@@ -430,6 +447,15 @@ class DataplexGetTaskOperator(GoogleCloudBaseOperator):
|
|
430
447
|
self.gcp_conn_id = gcp_conn_id
|
431
448
|
self.impersonation_chain = impersonation_chain
|
432
449
|
|
450
|
+
@property
|
451
|
+
def extra_links_params(self) -> dict[str, Any]:
|
452
|
+
return {
|
453
|
+
"lake_id": self.lake_id,
|
454
|
+
"task_id": self.dataplex_task_id,
|
455
|
+
"region": self.region,
|
456
|
+
"project_id": self.project_id,
|
457
|
+
}
|
458
|
+
|
433
459
|
def execute(self, context: Context) -> dict:
|
434
460
|
hook = DataplexHook(
|
435
461
|
gcp_conn_id=self.gcp_conn_id,
|
@@ -437,7 +463,7 @@ class DataplexGetTaskOperator(GoogleCloudBaseOperator):
|
|
437
463
|
impersonation_chain=self.impersonation_chain,
|
438
464
|
)
|
439
465
|
self.log.info("Retrieving Dataplex task %s", self.dataplex_task_id)
|
440
|
-
DataplexTaskLink.persist(context=context
|
466
|
+
DataplexTaskLink.persist(context=context)
|
441
467
|
|
442
468
|
task = hook.get_task(
|
443
469
|
project_id=self.project_id,
|
@@ -448,7 +474,7 @@ class DataplexGetTaskOperator(GoogleCloudBaseOperator):
|
|
448
474
|
timeout=self.timeout,
|
449
475
|
metadata=self.metadata,
|
450
476
|
)
|
451
|
-
DataplexTasksLink.persist(context=context
|
477
|
+
DataplexTasksLink.persist(context=context)
|
452
478
|
return Task.to_dict(task)
|
453
479
|
|
454
480
|
|
@@ -522,6 +548,14 @@ class DataplexCreateLakeOperator(GoogleCloudBaseOperator):
|
|
522
548
|
self.impersonation_chain = impersonation_chain
|
523
549
|
self.asynchronous = asynchronous
|
524
550
|
|
551
|
+
@property
|
552
|
+
def extra_links_params(self) -> dict[str, Any]:
|
553
|
+
return {
|
554
|
+
"lake_id": self.lake_id,
|
555
|
+
"region": self.region,
|
556
|
+
"project_id": self.project_id,
|
557
|
+
}
|
558
|
+
|
525
559
|
def execute(self, context: Context) -> dict:
|
526
560
|
hook = DataplexHook(
|
527
561
|
gcp_conn_id=self.gcp_conn_id,
|
@@ -566,10 +600,7 @@ class DataplexCreateLakeOperator(GoogleCloudBaseOperator):
|
|
566
600
|
if lake["state"] != "CREATING":
|
567
601
|
break
|
568
602
|
time.sleep(time_to_wait)
|
569
|
-
DataplexLakeLink.persist(
|
570
|
-
context=context,
|
571
|
-
task_instance=self,
|
572
|
-
)
|
603
|
+
DataplexLakeLink.persist(context=context)
|
573
604
|
return Lake.to_dict(lake)
|
574
605
|
|
575
606
|
|
@@ -625,6 +656,14 @@ class DataplexDeleteLakeOperator(GoogleCloudBaseOperator):
|
|
625
656
|
self.gcp_conn_id = gcp_conn_id
|
626
657
|
self.impersonation_chain = impersonation_chain
|
627
658
|
|
659
|
+
@property
|
660
|
+
def extra_links_params(self) -> dict[str, Any]:
|
661
|
+
return {
|
662
|
+
"lake_id": self.lake_id,
|
663
|
+
"region": self.region,
|
664
|
+
"project_id": self.project_id,
|
665
|
+
}
|
666
|
+
|
628
667
|
def execute(self, context: Context) -> None:
|
629
668
|
hook = DataplexHook(
|
630
669
|
gcp_conn_id=self.gcp_conn_id,
|
@@ -642,7 +681,7 @@ class DataplexDeleteLakeOperator(GoogleCloudBaseOperator):
|
|
642
681
|
timeout=self.timeout,
|
643
682
|
metadata=self.metadata,
|
644
683
|
)
|
645
|
-
DataplexLakeLink.persist(context=context
|
684
|
+
DataplexLakeLink.persist(context=context)
|
646
685
|
hook.wait_for_operation(timeout=self.timeout, operation=operation)
|
647
686
|
self.log.info("Dataplex lake %s deleted successfully!", self.lake_id)
|
648
687
|
|
@@ -2179,6 +2218,13 @@ class DataplexCatalogBaseOperator(GoogleCloudBaseOperator):
|
|
2179
2218
|
impersonation_chain=self.impersonation_chain,
|
2180
2219
|
)
|
2181
2220
|
|
2221
|
+
@property
|
2222
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2223
|
+
return {
|
2224
|
+
"location": self.location,
|
2225
|
+
"project_id": self.project_id,
|
2226
|
+
}
|
2227
|
+
|
2182
2228
|
|
2183
2229
|
class DataplexCatalogCreateEntryGroupOperator(DataplexCatalogBaseOperator):
|
2184
2230
|
"""
|
@@ -2230,12 +2276,15 @@ class DataplexCatalogCreateEntryGroupOperator(DataplexCatalogBaseOperator):
|
|
2230
2276
|
self.entry_group_configuration = entry_group_configuration
|
2231
2277
|
self.validate_request = validate_request
|
2232
2278
|
|
2233
|
-
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2237
|
-
|
2279
|
+
@property
|
2280
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2281
|
+
return {
|
2282
|
+
**super().extra_links_params,
|
2283
|
+
"entry_group_id": self.entry_group_id,
|
2284
|
+
}
|
2238
2285
|
|
2286
|
+
def execute(self, context: Context):
|
2287
|
+
DataplexCatalogEntryGroupLink.persist(context=context)
|
2239
2288
|
if self.validate_request:
|
2240
2289
|
self.log.info("Validating a Create Dataplex Catalog EntryGroup request.")
|
2241
2290
|
else:
|
@@ -2316,11 +2365,15 @@ class DataplexCatalogGetEntryGroupOperator(DataplexCatalogBaseOperator):
|
|
2316
2365
|
super().__init__(*args, **kwargs)
|
2317
2366
|
self.entry_group_id = entry_group_id
|
2318
2367
|
|
2368
|
+
@property
|
2369
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2370
|
+
return {
|
2371
|
+
**super().extra_links_params,
|
2372
|
+
"entry_group_id": self.entry_group_id,
|
2373
|
+
}
|
2374
|
+
|
2319
2375
|
def execute(self, context: Context):
|
2320
|
-
DataplexCatalogEntryGroupLink.persist(
|
2321
|
-
context=context,
|
2322
|
-
task_instance=self,
|
2323
|
-
)
|
2376
|
+
DataplexCatalogEntryGroupLink.persist(context=context)
|
2324
2377
|
self.log.info(
|
2325
2378
|
"Retrieving Dataplex Catalog EntryGroup %s.",
|
2326
2379
|
self.entry_group_id,
|
@@ -2462,10 +2515,7 @@ class DataplexCatalogListEntryGroupsOperator(DataplexCatalogBaseOperator):
|
|
2462
2515
|
self.order_by = order_by
|
2463
2516
|
|
2464
2517
|
def execute(self, context: Context):
|
2465
|
-
DataplexCatalogEntryGroupsLink.persist(
|
2466
|
-
context=context,
|
2467
|
-
task_instance=self,
|
2468
|
-
)
|
2518
|
+
DataplexCatalogEntryGroupsLink.persist(context=context)
|
2469
2519
|
self.log.info(
|
2470
2520
|
"Listing Dataplex Catalog EntryGroup from location %s.",
|
2471
2521
|
self.location,
|
@@ -2483,8 +2533,7 @@ class DataplexCatalogListEntryGroupsOperator(DataplexCatalogBaseOperator):
|
|
2483
2533
|
metadata=self.metadata,
|
2484
2534
|
)
|
2485
2535
|
self.log.info("EntryGroup on page: %s", entry_group_on_page)
|
2486
|
-
|
2487
|
-
context=context,
|
2536
|
+
context["ti"].xcom_push(
|
2488
2537
|
key="entry_group_page",
|
2489
2538
|
value=ListEntryGroupsResponse.to_dict(entry_group_on_page._response),
|
2490
2539
|
)
|
@@ -2554,12 +2603,15 @@ class DataplexCatalogUpdateEntryGroupOperator(DataplexCatalogBaseOperator):
|
|
2554
2603
|
self.update_mask = update_mask
|
2555
2604
|
self.validate_request = validate_request
|
2556
2605
|
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2561
|
-
|
2606
|
+
@property
|
2607
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2608
|
+
return {
|
2609
|
+
**super().extra_links_params,
|
2610
|
+
"entry_group_id": self.entry_group_id,
|
2611
|
+
}
|
2562
2612
|
|
2613
|
+
def execute(self, context: Context):
|
2614
|
+
DataplexCatalogEntryGroupLink.persist(context=context)
|
2563
2615
|
if self.validate_request:
|
2564
2616
|
self.log.info("Validating an Update Dataplex Catalog EntryGroup request.")
|
2565
2617
|
else:
|
@@ -2644,12 +2696,15 @@ class DataplexCatalogCreateEntryTypeOperator(DataplexCatalogBaseOperator):
|
|
2644
2696
|
self.entry_type_configuration = entry_type_configuration
|
2645
2697
|
self.validate_request = validate_request
|
2646
2698
|
|
2647
|
-
|
2648
|
-
|
2649
|
-
|
2650
|
-
|
2651
|
-
|
2699
|
+
@property
|
2700
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2701
|
+
return {
|
2702
|
+
**super().extra_links_params,
|
2703
|
+
"entry_type_id": self.entry_type_id,
|
2704
|
+
}
|
2652
2705
|
|
2706
|
+
def execute(self, context: Context):
|
2707
|
+
DataplexCatalogEntryTypeLink.persist(context=context)
|
2653
2708
|
if self.validate_request:
|
2654
2709
|
self.log.info("Validating a Create Dataplex Catalog EntryType request.")
|
2655
2710
|
else:
|
@@ -2730,11 +2785,15 @@ class DataplexCatalogGetEntryTypeOperator(DataplexCatalogBaseOperator):
|
|
2730
2785
|
super().__init__(*args, **kwargs)
|
2731
2786
|
self.entry_type_id = entry_type_id
|
2732
2787
|
|
2788
|
+
@property
|
2789
|
+
def extra_links_params(self) -> dict[str, Any]:
|
2790
|
+
return {
|
2791
|
+
**super().extra_links_params,
|
2792
|
+
"entry_type_id": self.entry_type_id,
|
2793
|
+
}
|
2794
|
+
|
2733
2795
|
def execute(self, context: Context):
|
2734
|
-
DataplexCatalogEntryTypeLink.persist(
|
2735
|
-
context=context,
|
2736
|
-
task_instance=self,
|
2737
|
-
)
|
2796
|
+
DataplexCatalogEntryTypeLink.persist(context=context)
|
2738
2797
|
self.log.info(
|
2739
2798
|
"Retrieving Dataplex Catalog EntryType %s.",
|
2740
2799
|
self.entry_type_id,
|
@@ -2876,10 +2935,7 @@ class DataplexCatalogListEntryTypesOperator(DataplexCatalogBaseOperator):
|
|
2876
2935
|
self.order_by = order_by
|
2877
2936
|
|
2878
2937
|
def execute(self, context: Context):
|
2879
|
-
DataplexCatalogEntryTypesLink.persist(
|
2880
|
-
context=context,
|
2881
|
-
task_instance=self,
|
2882
|
-
)
|
2938
|
+
DataplexCatalogEntryTypesLink.persist(context=context)
|
2883
2939
|
self.log.info(
|
2884
2940
|
"Listing Dataplex Catalog EntryType from location %s.",
|
2885
2941
|
self.location,
|
@@ -2897,8 +2953,7 @@ class DataplexCatalogListEntryTypesOperator(DataplexCatalogBaseOperator):
|
|
2897
2953
|
metadata=self.metadata,
|
2898
2954
|
)
|
2899
2955
|
self.log.info("EntryType on page: %s", entry_type_on_page)
|
2900
|
-
|
2901
|
-
context=context,
|
2956
|
+
context["ti"].xcom_push(
|
2902
2957
|
key="entry_type_page",
|
2903
2958
|
value=ListEntryTypesResponse.to_dict(entry_type_on_page._response),
|
2904
2959
|
)
|
@@ -2968,12 +3023,15 @@ class DataplexCatalogUpdateEntryTypeOperator(DataplexCatalogBaseOperator):
|
|
2968
3023
|
self.update_mask = update_mask
|
2969
3024
|
self.validate_request = validate_request
|
2970
3025
|
|
2971
|
-
|
2972
|
-
|
2973
|
-
|
2974
|
-
|
2975
|
-
|
3026
|
+
@property
|
3027
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3028
|
+
return {
|
3029
|
+
**super().extra_links_params,
|
3030
|
+
"entry_type_id": self.entry_type_id,
|
3031
|
+
}
|
2976
3032
|
|
3033
|
+
def execute(self, context: Context):
|
3034
|
+
DataplexCatalogEntryTypeLink.persist(context=context)
|
2977
3035
|
if self.validate_request:
|
2978
3036
|
self.log.info("Validating an Update Dataplex Catalog EntryType request.")
|
2979
3037
|
else:
|
@@ -3058,12 +3116,15 @@ class DataplexCatalogCreateAspectTypeOperator(DataplexCatalogBaseOperator):
|
|
3058
3116
|
self.aspect_type_configuration = aspect_type_configuration
|
3059
3117
|
self.validate_request = validate_request
|
3060
3118
|
|
3061
|
-
|
3062
|
-
|
3063
|
-
|
3064
|
-
|
3065
|
-
|
3119
|
+
@property
|
3120
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3121
|
+
return {
|
3122
|
+
**super().extra_links_params,
|
3123
|
+
"aspect_type_id": self.aspect_type_id,
|
3124
|
+
}
|
3066
3125
|
|
3126
|
+
def execute(self, context: Context):
|
3127
|
+
DataplexCatalogAspectTypeLink.persist(context=context)
|
3067
3128
|
if self.validate_request:
|
3068
3129
|
self.log.info("Validating a Create Dataplex Catalog AspectType request.")
|
3069
3130
|
else:
|
@@ -3144,11 +3205,15 @@ class DataplexCatalogGetAspectTypeOperator(DataplexCatalogBaseOperator):
|
|
3144
3205
|
super().__init__(*args, **kwargs)
|
3145
3206
|
self.aspect_type_id = aspect_type_id
|
3146
3207
|
|
3208
|
+
@property
|
3209
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3210
|
+
return {
|
3211
|
+
**super().extra_links_params,
|
3212
|
+
"aspect_type_id": self.aspect_type_id,
|
3213
|
+
}
|
3214
|
+
|
3147
3215
|
def execute(self, context: Context):
|
3148
|
-
DataplexCatalogAspectTypeLink.persist(
|
3149
|
-
context=context,
|
3150
|
-
task_instance=self,
|
3151
|
-
)
|
3216
|
+
DataplexCatalogAspectTypeLink.persist(context=context)
|
3152
3217
|
self.log.info(
|
3153
3218
|
"Retrieving Dataplex Catalog AspectType %s.",
|
3154
3219
|
self.aspect_type_id,
|
@@ -3223,10 +3288,7 @@ class DataplexCatalogListAspectTypesOperator(DataplexCatalogBaseOperator):
|
|
3223
3288
|
self.order_by = order_by
|
3224
3289
|
|
3225
3290
|
def execute(self, context: Context):
|
3226
|
-
DataplexCatalogAspectTypesLink.persist(
|
3227
|
-
context=context,
|
3228
|
-
task_instance=self,
|
3229
|
-
)
|
3291
|
+
DataplexCatalogAspectTypesLink.persist(context=context)
|
3230
3292
|
self.log.info(
|
3231
3293
|
"Listing Dataplex Catalog AspectType from location %s.",
|
3232
3294
|
self.location,
|
@@ -3244,8 +3306,7 @@ class DataplexCatalogListAspectTypesOperator(DataplexCatalogBaseOperator):
|
|
3244
3306
|
metadata=self.metadata,
|
3245
3307
|
)
|
3246
3308
|
self.log.info("AspectType on page: %s", aspect_type_on_page)
|
3247
|
-
|
3248
|
-
context=context,
|
3309
|
+
context["ti"].xcom_push(
|
3249
3310
|
key="aspect_type_page",
|
3250
3311
|
value=ListAspectTypesResponse.to_dict(aspect_type_on_page._response),
|
3251
3312
|
)
|
@@ -3315,12 +3376,15 @@ class DataplexCatalogUpdateAspectTypeOperator(DataplexCatalogBaseOperator):
|
|
3315
3376
|
self.update_mask = update_mask
|
3316
3377
|
self.validate_request = validate_request
|
3317
3378
|
|
3318
|
-
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3322
|
-
|
3379
|
+
@property
|
3380
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3381
|
+
return {
|
3382
|
+
**super().extra_links_params,
|
3383
|
+
"aspect_type_id": self.aspect_type_id,
|
3384
|
+
}
|
3323
3385
|
|
3386
|
+
def execute(self, context: Context):
|
3387
|
+
DataplexCatalogAspectTypeLink.persist(context=context)
|
3324
3388
|
if self.validate_request:
|
3325
3389
|
self.log.info("Validating an Update Dataplex Catalog AspectType request.")
|
3326
3390
|
else:
|
@@ -3493,12 +3557,16 @@ class DataplexCatalogCreateEntryOperator(DataplexCatalogBaseOperator):
|
|
3493
3557
|
f"Missing required fields in Entry configuration: {', '.join(missing_fields)}. "
|
3494
3558
|
)
|
3495
3559
|
|
3496
|
-
|
3497
|
-
|
3498
|
-
|
3499
|
-
|
3500
|
-
|
3560
|
+
@property
|
3561
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3562
|
+
return {
|
3563
|
+
**super().extra_links_params,
|
3564
|
+
"entry_id": self.entry_id,
|
3565
|
+
"entry_group_id": self.entry_group_id,
|
3566
|
+
}
|
3501
3567
|
|
3568
|
+
def execute(self, context: Context):
|
3569
|
+
DataplexCatalogEntryLink.persist(context=context)
|
3502
3570
|
self._validate_fields(self.entry_configuration)
|
3503
3571
|
try:
|
3504
3572
|
entry = self.hook.create_entry(
|
@@ -3599,11 +3667,16 @@ class DataplexCatalogGetEntryOperator(DataplexCatalogBaseOperator):
|
|
3599
3667
|
self.aspect_types = aspect_types
|
3600
3668
|
self.paths = paths
|
3601
3669
|
|
3670
|
+
@property
|
3671
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3672
|
+
return {
|
3673
|
+
**super().extra_links_params,
|
3674
|
+
"entry_id": self.entry_id,
|
3675
|
+
"entry_group_id": self.entry_group_id,
|
3676
|
+
}
|
3677
|
+
|
3602
3678
|
def execute(self, context: Context):
|
3603
|
-
DataplexCatalogEntryLink.persist(
|
3604
|
-
context=context,
|
3605
|
-
task_instance=self,
|
3606
|
-
)
|
3679
|
+
DataplexCatalogEntryLink.persist(context=context)
|
3607
3680
|
self.log.info(
|
3608
3681
|
"Retrieving Dataplex Catalog Entry %s.",
|
3609
3682
|
self.entry_id,
|
@@ -3701,11 +3774,15 @@ class DataplexCatalogListEntriesOperator(DataplexCatalogBaseOperator):
|
|
3701
3774
|
self.page_token = page_token
|
3702
3775
|
self.filter_by = filter_by
|
3703
3776
|
|
3777
|
+
@property
|
3778
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3779
|
+
return {
|
3780
|
+
**super().extra_links_params,
|
3781
|
+
"entry_group_id": self.entry_group_id,
|
3782
|
+
}
|
3783
|
+
|
3704
3784
|
def execute(self, context: Context):
|
3705
|
-
DataplexCatalogEntryGroupLink.persist(
|
3706
|
-
context=context,
|
3707
|
-
task_instance=self,
|
3708
|
-
)
|
3785
|
+
DataplexCatalogEntryGroupLink.persist(context=context)
|
3709
3786
|
self.log.info(
|
3710
3787
|
"Listing Dataplex Catalog Entry from location %s.",
|
3711
3788
|
self.location,
|
@@ -3723,8 +3800,7 @@ class DataplexCatalogListEntriesOperator(DataplexCatalogBaseOperator):
|
|
3723
3800
|
metadata=self.metadata,
|
3724
3801
|
)
|
3725
3802
|
self.log.info("Entries on page: %s", entries_on_page)
|
3726
|
-
|
3727
|
-
context=context,
|
3803
|
+
context["ti"].xcom_push(
|
3728
3804
|
key="entry_page",
|
3729
3805
|
value=ListEntriesResponse.to_dict(entries_on_page._response),
|
3730
3806
|
)
|
@@ -3821,8 +3897,7 @@ class DataplexCatalogSearchEntriesOperator(DataplexCatalogBaseOperator):
|
|
3821
3897
|
metadata=self.metadata,
|
3822
3898
|
)
|
3823
3899
|
self.log.info("Entries on page: %s", entries_on_page)
|
3824
|
-
|
3825
|
-
context=context,
|
3900
|
+
context["ti"].xcom_push(
|
3826
3901
|
key="entry_page",
|
3827
3902
|
value=SearchEntriesResponse.to_dict(entries_on_page._response),
|
3828
3903
|
)
|
@@ -3903,11 +3978,16 @@ class DataplexCatalogLookupEntryOperator(DataplexCatalogBaseOperator):
|
|
3903
3978
|
self.aspect_types = aspect_types
|
3904
3979
|
self.paths = paths
|
3905
3980
|
|
3981
|
+
@property
|
3982
|
+
def extra_links_params(self) -> dict[str, Any]:
|
3983
|
+
return {
|
3984
|
+
**super().extra_links_params,
|
3985
|
+
"entry_id": self.entry_id,
|
3986
|
+
"entry_group_id": self.entry_group_id,
|
3987
|
+
}
|
3988
|
+
|
3906
3989
|
def execute(self, context: Context):
|
3907
|
-
DataplexCatalogEntryLink.persist(
|
3908
|
-
context=context,
|
3909
|
-
task_instance=self,
|
3910
|
-
)
|
3990
|
+
DataplexCatalogEntryLink.persist(context=context)
|
3911
3991
|
self.log.info(
|
3912
3992
|
"Looking for Dataplex Catalog Entry %s.",
|
3913
3993
|
self.entry_id,
|
@@ -3963,7 +4043,7 @@ class DataplexCatalogUpdateEntryOperator(DataplexCatalogBaseOperator):
|
|
3963
4043
|
:param entry_configuration: Required. The updated configuration body of the Entry.
|
3964
4044
|
:param allow_missing: Optional. If set to true and entry doesn't exist, the service will create it.
|
3965
4045
|
:param delete_missing_aspects: Optional. If set to true and the aspect_keys specify aspect
|
3966
|
-
ranges, the service deletes any existing aspects from that range that
|
4046
|
+
ranges, the service deletes any existing aspects from that range that were not provided
|
3967
4047
|
in the request.
|
3968
4048
|
:param aspect_keys: Optional. The map keys of the Aspects which the service should modify.
|
3969
4049
|
It supports the following syntax:
|
@@ -4022,12 +4102,16 @@ class DataplexCatalogUpdateEntryOperator(DataplexCatalogBaseOperator):
|
|
4022
4102
|
self.delete_missing_aspects = delete_missing_aspects
|
4023
4103
|
self.aspect_keys = aspect_keys
|
4024
4104
|
|
4025
|
-
|
4026
|
-
|
4027
|
-
|
4028
|
-
|
4029
|
-
|
4105
|
+
@property
|
4106
|
+
def extra_links_params(self) -> dict[str, Any]:
|
4107
|
+
return {
|
4108
|
+
**super().extra_links_params,
|
4109
|
+
"entry_id": self.entry_id,
|
4110
|
+
"entry_group_id": self.entry_group_id,
|
4111
|
+
}
|
4030
4112
|
|
4113
|
+
def execute(self, context: Context):
|
4114
|
+
DataplexCatalogEntryLink.persist(context=context)
|
4031
4115
|
try:
|
4032
4116
|
entry = self.hook.update_entry(
|
4033
4117
|
location=self.location,
|
@@ -113,7 +113,6 @@ class DataprepGetJobGroupOperator(GoogleCloudBaseOperator):
|
|
113
113
|
if self.project_id:
|
114
114
|
DataprepJobGroupLink.persist(
|
115
115
|
context=context,
|
116
|
-
task_instance=self,
|
117
116
|
project_id=self.project_id,
|
118
117
|
job_group_id=int(self.job_group_id),
|
119
118
|
)
|
@@ -170,7 +169,6 @@ class DataprepRunJobGroupOperator(GoogleCloudBaseOperator):
|
|
170
169
|
if self.project_id and job_group_id:
|
171
170
|
DataprepJobGroupLink.persist(
|
172
171
|
context=context,
|
173
|
-
task_instance=self,
|
174
172
|
project_id=self.project_id,
|
175
173
|
job_group_id=int(job_group_id),
|
176
174
|
)
|
@@ -230,7 +228,6 @@ class DataprepCopyFlowOperator(GoogleCloudBaseOperator):
|
|
230
228
|
if self.project_id and copied_flow_id:
|
231
229
|
DataprepFlowLink.persist(
|
232
230
|
context=context,
|
233
|
-
task_instance=self,
|
234
231
|
project_id=self.project_id,
|
235
232
|
flow_id=int(copied_flow_id),
|
236
233
|
)
|
@@ -303,7 +300,6 @@ class DataprepRunFlowOperator(GoogleCloudBaseOperator):
|
|
303
300
|
job_group_id = response["data"][0]["id"]
|
304
301
|
DataprepJobGroupLink.persist(
|
305
302
|
context=context,
|
306
|
-
task_instance=self,
|
307
303
|
project_id=self.project_id,
|
308
304
|
job_group_id=int(job_group_id),
|
309
305
|
)
|