Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions airflow-core/tests/unit/always/test_project_structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ def test_providers_modules_should_have_tests(self):
"providers/google/tests/unit/google/cloud/operators/vertex_ai/test_hyperparameter_tuning_job.py",
"providers/google/tests/unit/google/cloud/operators/vertex_ai/test_model_service.py",
"providers/google/tests/unit/google/cloud/operators/vertex_ai/test_pipeline_job.py",
"providers/google/tests/unit/google/cloud/operators/vertex_ai/test_ray.py",
"providers/google/tests/unit/google/cloud/sensors/vertex_ai/test_feature_store.py",
"providers/google/tests/unit/google/cloud/transfers/test_bigquery_to_sql.py",
"providers/google/tests/unit/google/cloud/transfers/test_presto_to_gcs.py",
Expand Down Expand Up @@ -476,6 +477,7 @@ class TestGoogleProviderProjectStructure(ExampleCoverageTest, AssetsCoverageTest
"airflow.providers.google.cloud.operators.dataplex.DataplexCatalogBaseOperator",
"airflow.providers.google.cloud.operators.managed_kafka.ManagedKafkaBaseOperator",
"airflow.providers.google.cloud.operators.vertex_ai.custom_job.CustomTrainingJobBaseOperator",
"airflow.providers.google.cloud.operators.vertex_ai.ray.RayBaseOperator",
"airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator",
"airflow.providers.google.marketing_platform.operators.search_ads._GoogleSearchAdsBaseOperator",
}
Expand Down
144 changes: 72 additions & 72 deletions providers/google/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,78 +57,78 @@ The package supports the following python versions: 3.9,3.10,3.11,3.12
Requirements
------------

========================================== ======================================
PIP package Version required
========================================== ======================================
``apache-airflow`` ``>=2.9.0``
``apache-airflow-providers-common-compat`` ``>=1.4.0``
``apache-airflow-providers-common-sql`` ``>=1.20.0``
``asgiref`` ``>=3.5.2``
``dill`` ``>=0.2.3``
``gcloud-aio-auth`` ``>=5.2.0``
``gcloud-aio-bigquery`` ``>=6.1.2``
``gcloud-aio-storage`` ``>=9.0.0``
``gcsfs`` ``>=2023.10.0``
``google-ads`` ``>=26.0.0``
``google-analytics-admin`` ``>=0.9.0``
``google-api-core`` ``>=2.11.0,!=2.16.0,!=2.18.0``
``google-api-python-client`` ``>=2.0.2``
``google-auth`` ``>=2.29.0``
``google-auth-httplib2`` ``>=0.0.1``
``google-cloud-aiplatform[evaluation]`` ``>=1.73.0``
``google-cloud-alloydb`` ``>=0.4.0``
``google-cloud-automl`` ``>=2.12.0``
``google-cloud-bigquery`` ``!=3.21.*,!=3.22.0,!=3.23.*,>=3.4.0``
``google-cloud-bigquery-datatransfer`` ``>=3.13.0``
``google-cloud-bigtable`` ``>=2.17.0``
``google-cloud-build`` ``>=3.31.0``
``google-cloud-compute`` ``>=1.10.0``
``google-cloud-container`` ``>=2.52.0``
``google-cloud-datacatalog`` ``>=3.23.0``
``google-cloud-dataflow-client`` ``>=0.8.6``
``google-cloud-dataform`` ``>=0.5.0``
``google-cloud-dataplex`` ``>=2.6.0``
``google-cloud-dataproc`` ``>=5.12.0``
``google-cloud-dataproc-metastore`` ``>=1.12.0``
``google-cloud-dlp`` ``>=3.12.0``
``google-cloud-kms`` ``>=2.15.0``
``google-cloud-language`` ``>=2.9.0``
``google-cloud-logging`` ``>=3.5.0``
``google-cloud-managedkafka`` ``>=0.1.6``
``google-cloud-memcache`` ``>=1.7.0``
``google-cloud-monitoring`` ``>=2.18.0``
``google-cloud-orchestration-airflow`` ``>=1.10.0``
``google-cloud-os-login`` ``>=2.9.1``
``google-cloud-pubsub`` ``>=2.21.3``
``google-cloud-redis`` ``>=2.12.0``
``google-cloud-secret-manager`` ``>=2.16.0``
``google-cloud-spanner`` ``>=3.11.1,!=3.49.0``
``google-cloud-speech`` ``>=2.18.0``
``google-cloud-storage`` ``>=2.7.0``
``google-cloud-storage-transfer`` ``>=1.4.1``
``google-cloud-tasks`` ``>=2.13.0``
``google-cloud-texttospeech`` ``>=2.14.1``
``google-cloud-translate`` ``>=3.16.0``
``google-cloud-videointelligence`` ``>=2.11.0``
``google-cloud-vision`` ``>=3.4.0``
``google-cloud-workflows`` ``>=1.10.0``
``google-cloud-run`` ``>=0.10.0``
``google-cloud-batch`` ``>=0.13.0``
``grpcio-gcp`` ``>=0.2.2``
``httpx`` ``>=0.25.0``
``looker-sdk`` ``>=22.4.0,!=24.18.0``
``pandas-gbq`` ``>=0.7.0``
``pandas`` ``>=2.1.2,<2.2``
``proto-plus`` ``>=1.19.6``
``pyarrow`` ``>=14.0.1``
``python-slugify`` ``>=7.0.0``
``PyOpenSSL`` ``>=23.0.0``
``sqlalchemy-bigquery`` ``>=1.2.1``
``sqlalchemy-spanner`` ``>=1.6.2``
``tenacity`` ``>=8.1.0``
``immutabledict`` ``>=4.2.0``
``types-protobuf`` ``!=5.29.1.20250402``
========================================== ======================================
=========================================== ======================================
PIP package Version required
=========================================== ======================================
``apache-airflow`` ``>=2.9.0``
``apache-airflow-providers-common-compat`` ``>=1.4.0``
``apache-airflow-providers-common-sql`` ``>=1.20.0``
``asgiref`` ``>=3.5.2``
``dill`` ``>=0.2.3``
``gcloud-aio-auth`` ``>=5.2.0``
``gcloud-aio-bigquery`` ``>=6.1.2``
``gcloud-aio-storage`` ``>=9.0.0``
``gcsfs`` ``>=2023.10.0``
``google-ads`` ``>=26.0.0``
``google-analytics-admin`` ``>=0.9.0``
``google-api-core`` ``>=2.11.0,!=2.16.0,!=2.18.0``
``google-api-python-client`` ``>=2.0.2``
``google-auth`` ``>=2.29.0``
``google-auth-httplib2`` ``>=0.0.1``
``google-cloud-aiplatform[evaluation,ray]`` ``>=1.73.0``
``google-cloud-alloydb`` ``>=0.4.0``
``google-cloud-automl`` ``>=2.12.0``
``google-cloud-bigquery`` ``!=3.21.*,!=3.22.0,!=3.23.*,>=3.4.0``
``google-cloud-bigquery-datatransfer`` ``>=3.13.0``
``google-cloud-bigtable`` ``>=2.17.0``
``google-cloud-build`` ``>=3.31.0``
``google-cloud-compute`` ``>=1.10.0``
``google-cloud-container`` ``>=2.52.0``
``google-cloud-datacatalog`` ``>=3.23.0``
``google-cloud-dataflow-client`` ``>=0.8.6``
``google-cloud-dataform`` ``>=0.5.0``
``google-cloud-dataplex`` ``>=2.6.0``
``google-cloud-dataproc`` ``>=5.12.0``
``google-cloud-dataproc-metastore`` ``>=1.12.0``
``google-cloud-dlp`` ``>=3.12.0``
``google-cloud-kms`` ``>=2.15.0``
``google-cloud-language`` ``>=2.9.0``
``google-cloud-logging`` ``>=3.5.0``
``google-cloud-managedkafka`` ``>=0.1.6``
``google-cloud-memcache`` ``>=1.7.0``
``google-cloud-monitoring`` ``>=2.18.0``
``google-cloud-orchestration-airflow`` ``>=1.10.0``
``google-cloud-os-login`` ``>=2.9.1``
``google-cloud-pubsub`` ``>=2.21.3``
``google-cloud-redis`` ``>=2.12.0``
``google-cloud-secret-manager`` ``>=2.16.0``
``google-cloud-spanner`` ``>=3.11.1,!=3.49.0``
``google-cloud-speech`` ``>=2.18.0``
``google-cloud-storage`` ``>=2.7.0``
``google-cloud-storage-transfer`` ``>=1.4.1``
``google-cloud-tasks`` ``>=2.13.0``
``google-cloud-texttospeech`` ``>=2.14.1``
``google-cloud-translate`` ``>=3.16.0``
``google-cloud-videointelligence`` ``>=2.11.0``
``google-cloud-vision`` ``>=3.4.0``
``google-cloud-workflows`` ``>=1.10.0``
``google-cloud-run`` ``>=0.10.0``
``google-cloud-batch`` ``>=0.13.0``
``grpcio-gcp`` ``>=0.2.2``
``httpx`` ``>=0.25.0``
``looker-sdk`` ``>=22.4.0,!=24.18.0``
``pandas-gbq`` ``>=0.7.0``
``pandas`` ``>=2.1.2,<2.2``
``proto-plus`` ``>=1.19.6``
``pyarrow`` ``>=14.0.1``
``python-slugify`` ``>=7.0.0``
``PyOpenSSL`` ``>=23.0.0``
``sqlalchemy-bigquery`` ``>=1.2.1``
``sqlalchemy-spanner`` ``>=1.6.2``
``tenacity`` ``>=8.1.0``
``immutabledict`` ``>=4.2.0``
``types-protobuf`` ``!=5.29.1.20250402``
=========================================== ======================================

Cross provider package dependencies
-----------------------------------
Expand Down
48 changes: 48 additions & 0 deletions providers/google/docs/operators/cloud/vertex_ai.rst
Original file line number Diff line number Diff line change
Expand Up @@ -693,6 +693,54 @@ To check if Feature View Sync succeeded you can use
:start-after: [START how_to_cloud_vertex_ai_feature_store_feature_view_sync_sensor]
:end-before: [END how_to_cloud_vertex_ai_feature_store_feature_view_sync_sensor]

Interacting with Ray on Vertex AI Cluster
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

To create a Ray cluster you can use
:class:`~airflow.providers.google.cloud.operators.vertex_ai.ray.CreateRayClusterOperator`.

.. exampleinclude:: /../../google/tests/system/google/cloud/vertex_ai/example_vertex_ai_ray.py
:language: python
:dedent: 4
:start-after: [START how_to_cloud_vertex_ai_create_ray_cluster_operator]
:end-before: [END how_to_cloud_vertex_ai_create_ray_cluster_operator]

To delete cluster you can use
:class:`~airflow.providers.google.cloud.operators.vertex_ai.ray.DeleteRayClusterOperator`.

.. exampleinclude:: /../../google/tests/system/google/cloud/vertex_ai/example_vertex_ai_ray.py
:language: python
:dedent: 4
:start-after: [START how_to_cloud_vertex_ai_delete_ray_cluster_operator]
:end-before: [END how_to_cloud_vertex_ai_delete_ray_cluster_operator]

To get cluster you can use
:class:`~airflow.providers.google.cloud.operators.vertex_ai.ray.GetRayClusterOperator`.

.. exampleinclude:: /../../google/tests/system/google/cloud/vertex_ai/example_vertex_ai_ray.py
:language: python
:dedent: 4
:start-after: [START how_to_cloud_vertex_ai_get_ray_cluster_operator]
:end-before: [END how_to_cloud_vertex_ai_get_ray_cluster_operator]

To get a list of clusters you can use
:class:`~airflow.providers.google.cloud.operators.vertex_ai.ray.ListRayClustersOperator`.

.. exampleinclude:: /../../google/tests/system/google/cloud/vertex_ai/example_vertex_ai_ray.py
:language: python
:dedent: 4
:start-after: [START how_to_cloud_vertex_ai_list_ray_clusters_operator]
:end-before: [END how_to_cloud_vertex_ai_list_ray_clusters_operator]

To update cluster you can use
:class:`~airflow.providers.google.cloud.operators.vertex_ai.ray.UpdateRayClusterOperator`.

.. exampleinclude:: /../../google/tests/system/google/cloud/vertex_ai/example_vertex_ai_ray.py
:language: python
:dedent: 4
:start-after: [START how_to_cloud_vertex_ai_update_ray_cluster_operator]
:end-before: [END how_to_cloud_vertex_ai_update_ray_cluster_operator]

Reference
^^^^^^^^^

Expand Down
4 changes: 4 additions & 0 deletions providers/google/provider.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,7 @@ operators:
- airflow.providers.google.cloud.operators.vertex_ai.pipeline_job
- airflow.providers.google.cloud.operators.vertex_ai.generative_model
- airflow.providers.google.cloud.operators.vertex_ai.feature_store
- airflow.providers.google.cloud.operators.vertex_ai.ray
- integration-name: Google Looker
python-modules:
- airflow.providers.google.cloud.operators.looker
Expand Down Expand Up @@ -882,6 +883,7 @@ hooks:
- airflow.providers.google.cloud.hooks.vertex_ai.generative_model
- airflow.providers.google.cloud.hooks.vertex_ai.prediction_service
- airflow.providers.google.cloud.hooks.vertex_ai.feature_store
- airflow.providers.google.cloud.hooks.vertex_ai.ray
- integration-name: Google Looker
python-modules:
- airflow.providers.google.cloud.hooks.looker
Expand Down Expand Up @@ -1161,6 +1163,8 @@ extra-links:
- airflow.providers.google.cloud.links.vertex_ai.VertexAIEndpointListLink
- airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobLink
- airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobListLink
- airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterLink
- airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterListLink
- airflow.providers.google.cloud.links.workflows.WorkflowsWorkflowDetailsLink
- airflow.providers.google.cloud.links.workflows.WorkflowsListOfWorkflowsLink
- airflow.providers.google.cloud.links.workflows.WorkflowsExecutionLink
Expand Down
2 changes: 1 addition & 1 deletion providers/google/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ dependencies = [
"google-api-python-client>=2.0.2",
"google-auth>=2.29.0",
"google-auth-httplib2>=0.0.1",
"google-cloud-aiplatform[evaluation]>=1.73.0",
"google-cloud-aiplatform[evaluation,ray]>=1.73.0",
"google-cloud-alloydb>=0.4.0",
"google-cloud-automl>=2.12.0",
# Excluded versions contain bug https://github.com/apache/airflow/issues/39541 which is resolved in 3.24.0
Expand Down
Loading