This is an automated email from the ASF dual-hosted git repository.
shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new d984e0c7795 Update Composer naming and add ManagedAirflow aliases
(#66001)
d984e0c7795 is described below
commit d984e0c77956556e66910371c5c37d2226793df2
Author: Ulada Zakharava <[email protected]>
AuthorDate: Tue May 5 16:17:49 2026 +0000
Update Composer naming and add ManagedAirflow aliases (#66001)
---
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 2 +-
.../google/docs/operators/cloud/cloud_composer.rst | 144 +++++++++++++--------
providers/google/provider.yaml | 11 +-
.../google/cloud/operators/managed_airflow.py | 40 ++++++
.../airflow/providers/google/get_provider_info.py | 15 ++-
.../cloud/composer/example_cloud_composer.py | 44 +++----
.../google/cloud/operators/test_managed_airflow.py | 50 +++++++
7 files changed, 220 insertions(+), 86 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml
b/.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml
index 633ef433f4b..a9c89787403 100644
--- a/.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml
@@ -99,7 +99,7 @@ body:
- "Other Docker-based deployment"
- "Virtualenv installation"
- "Astronomer"
- - "Google Cloud Composer"
+ - "Google Managed Service for Apache Airflow"
- "Amazon (AWS) MWAA"
- "Microsoft ADF Managed Airflow"
- "Other"
diff --git a/providers/google/docs/operators/cloud/cloud_composer.rst
b/providers/google/docs/operators/cloud/cloud_composer.rst
index d02e19b26df..e666bbe35e1 100644
--- a/providers/google/docs/operators/cloud/cloud_composer.rst
+++ b/providers/google/docs/operators/cloud/cloud_composer.rst
@@ -18,35 +18,44 @@
Managed Service for Apache Airflow (formerly Cloud Composer) Operators
======================================================================
-Managed Service for Apache Airflow (formerly Cloud Composer) is a fully
managed workflow orchestration service, enabling you to create, schedule,
monitor,
-and manage workflows that span across clouds and on-premises data centers.
+Managed Service for Apache Airflow (formerly Cloud Composer) is a fully
managed workflow
+orchestration service, enabling you to create, schedule, monitor, and manage
workflows that span
+across clouds and on-premises data centers.
-Managed Service for Apache Airflow (formerly Cloud Composer) is built on the
popular Apache Airflow open source project and operates using the
-Python programming language.
+Managed Service for Apache Airflow (formerly Cloud Composer) is built on the
popular Apache Airflow
+open source project and operates using the Python programming language.
-By using Managed Service for Apache Airflow (formerly Cloud Composer) instead
of a local instance of Apache Airflow, you can benefit from the best of
-Airflow with no installation or management overhead. Managed Service for
Apache Airflow (formerly Cloud Composer) helps you create Airflow
+By using Managed Service for Apache Airflow (formerly Cloud Composer) instead
of a local instance
+of Apache Airflow, you can benefit from the best of Airflow with no
installation or management
+overhead. Managed Service for Apache Airflow (formerly Cloud Composer) helps
you create Airflow
environments quickly and use Airflow-native tools, such as the powerful
Airflow web interface and
command-line tools, so you can focus on your workflows and not your
infrastructure.
-For more information about the service visit `Cloud Composer production
documentation <Product documentation
<https://cloud.google.com/composer/docs/concepts/overview>`__
+For more information about the service visit the `product documentation
+<https://cloud.google.com/composer/docs/concepts/overview>`__.
Create an environment
---------------------
-Before you create a cloud composer environment you need to define it.
-For more information about the available fields to pass when creating an
environment, visit `Cloud Composer create environment API.
<https://cloud.google.com/composer/docs/reference/rest/v1/projects.locations.environments#Environment>`__
+Before you create a Managed Service for Apache Airflow environment you need to
define it.
+For more information about the available fields to pass when creating an
environment, visit the
+`Managed Service for Apache Airflow create environment API
+<https://cloud.google.com/composer/docs/reference/rest/v1/projects.locations.environments#Environment>`__.
A simple environment configuration can look as followed:
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 0
- :start-after: [START howto_operator_composer_simple_environment]
- :end-before: [END howto_operator_composer_simple_environment]
+ :start-after: [START howto_operator_managed_airflow_simple_environment]
+ :end-before: [END howto_operator_managed_airflow_simple_environment]
With this configuration we can create the environment:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerCreateEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowCreateEnvironmentOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerCreateEnvironmentOperator``. The preferred alias for new code is
+``ManagedAirflowCreateEnvironmentOperator``.
The create operator only succeeds after the Composer environment reaches the
``RUNNING`` state.
If the long-running create operation finishes but the environment remains in
another state such as
@@ -55,17 +64,17 @@ If the long-running create operation finishes but the
environment remains in ano
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_create_composer_environment]
- :end-before: [END howto_operator_create_composer_environment]
+ :start-after: [START howto_operator_create_managed_airflow_environment]
+ :end-before: [END howto_operator_create_managed_airflow_environment]
or you can define the same operator in the deferrable mode:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerCreateEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowCreateEnvironmentOperator`
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START
howto_operator_create_composer_environment_deferrable_mode]
- :end-before: [END
howto_operator_create_composer_environment_deferrable_mode]
+ :start-after: [START
howto_operator_create_managed_airflow_environment_deferrable_mode]
+ :end-before: [END
howto_operator_create_managed_airflow_environment_deferrable_mode]
For retry-heavy system tests, you can clean up a failed environment before
retrying the create task.
The example below only deletes environments that are already in the ``ERROR``
state and leaves other
@@ -82,101 +91,127 @@ Get an environment
To get an environment you can use:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerGetEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowGetEnvironmentOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerGetEnvironmentOperator``. The preferred alias for new code is
+``ManagedAirflowGetEnvironmentOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_get_composer_environment]
- :end-before: [END howto_operator_get_composer_environment]
+ :start-after: [START howto_operator_get_managed_airflow_environment]
+ :end-before: [END howto_operator_get_managed_airflow_environment]
List environments
--------------------
-To get an environment you can use:
+To list environments you can use:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerListEnvironmentsOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowListEnvironmentsOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerListEnvironmentsOperator``. The preferred alias for new code is
+``ManagedAirflowListEnvironmentsOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_list_composer_environments]
- :end-before: [END howto_operator_list_composer_environments]
+ :start-after: [START howto_operator_list_managed_airflow_environments]
+ :end-before: [END howto_operator_list_managed_airflow_environments]
Update environments
----------------------
You can update the environments by providing an environment config and an
updateMask.
In the updateMask argument you specify the path, relative to the environment,
of the field to update.
-For more information on updateMask and other parameters take a look at `Cloud
Composer update environment API.
<https://cloud.google.com/composer/docs/reference/rest/v1/projects.locations.environments/patch>`__
+For more information on updateMask and other parameters take a look at the
+`Managed Service for Apache Airflow update environment API
+<https://cloud.google.com/composer/docs/reference/rest/v1/projects.locations.environments/patch>`__.
An example of a new service config and the updateMask:
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 0
- :start-after: [START howto_operator_composer_update_environment]
- :end-before: [END howto_operator_composer_update_environment]
+ :start-after: [START howto_operator_managed_airflow_update_environment]
+ :end-before: [END howto_operator_managed_airflow_update_environment]
To update a service you can use:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerUpdateEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowUpdateEnvironmentOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerUpdateEnvironmentOperator``. The preferred alias for new code is
+``ManagedAirflowUpdateEnvironmentOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_update_composer_environment]
- :end-before: [END howto_operator_update_composer_environment]
+ :start-after: [START howto_operator_update_managed_airflow_environment]
+ :end-before: [END howto_operator_update_managed_airflow_environment]
or you can define the same operator in the deferrable mode:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerCreateEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowUpdateEnvironmentOperator`
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START
howto_operator_update_composer_environment_deferrable_mode]
- :end-before: [END
howto_operator_update_composer_environment_deferrable_mode]
+ :start-after: [START
howto_operator_update_managed_airflow_environment_deferrable_mode]
+ :end-before: [END
howto_operator_update_managed_airflow_environment_deferrable_mode]
-Delete a service
------------------
+Delete an environment
+---------------------
+
+To delete an environment you can use:
-To delete a service you can use:
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowDeleteEnvironmentOperator`
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerDeleteEnvironmentOperator`
+The executable example below still imports the compatibility name
+``CloudComposerDeleteEnvironmentOperator``. The preferred alias for new code is
+``ManagedAirflowDeleteEnvironmentOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_delete_composer_environment]
- :end-before: [END howto_operator_delete_composer_environment]
+ :start-after: [START howto_operator_delete_managed_airflow_environment]
+ :end-before: [END howto_operator_delete_managed_airflow_environment]
or you can define the same operator in the deferrable mode:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerDeleteEnvironmentOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowDeleteEnvironmentOperator`
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START
howto_operator_delete_composer_environment_deferrable_mode]
- :end-before: [END
howto_operator_delete_composer_environment_deferrable_mode]
+ :start-after: [START
howto_operator_delete_managed_airflow_environment_deferrable_mode]
+ :end-before: [END
howto_operator_delete_managed_airflow_environment_deferrable_mode]
-List of Composer Images
-------------------------
+List of Managed Airflow Images
+------------------------------
-You can also list all supported Cloud Composer images:
+You can also list all supported Managed Service for Apache Airflow images:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerListImageVersionsOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowListImageVersionsOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerListImageVersionsOperator``. The preferred alias for new code is
+``ManagedAirflowListImageVersionsOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
:dedent: 4
- :start-after: [START howto_operator_composer_image_list]
- :end-before: [END howto_operator_composer_image_list]
+ :start-after: [START howto_operator_managed_airflow_image_list]
+ :end-before: [END howto_operator_managed_airflow_image_list]
Run Airflow CLI commands
------------------------
You can run Airflow CLI commands in your environments, use:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerRunAirflowCLICommandOperator`
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowRunAirflowCLICommandOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerRunAirflowCLICommandOperator``. The preferred alias for new
code is
+``ManagedAirflowRunAirflowCLICommandOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
@@ -215,8 +250,12 @@ or you can define the same sensor in the deferrable mode:
Trigger a Dag run
-----------------
-You can trigger a Dag in another Composer environment, use:
-:class:`~airflow.providers.google.cloud.operators.cloud_composer.CloudComposerTriggerDAGRunOperator`
+You can trigger a DAG in another Managed Service for Apache Airflow
environment, use:
+:class:`~airflow.providers.google.cloud.operators.managed_airflow.ManagedAirflowTriggerDAGRunOperator`
+
+The executable example below still imports the compatibility name
+``CloudComposerTriggerDAGRunOperator``. The preferred alias for new code is
+``ManagedAirflowTriggerDAGRunOperator``.
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
:language: python
@@ -227,7 +266,8 @@ You can trigger a Dag in another Composer environment, use:
Waits for a different Dag, task group, or task to complete
----------------------------------------------------------
-You can use sensor that waits for a different Dag, task group, or task to
complete for a specific composer environment, use:
+You can use sensor that waits for a different DAG, task group, or task to
complete for a specific
+Managed Service for Apache Airflow environment, use:
:class:`~airflow.providers.google.cloud.sensors.cloud_composer.CloudComposerExternalTaskSensor`
.. exampleinclude::
/../../google/tests/system/google/cloud/composer/example_cloud_composer.py
diff --git a/providers/google/provider.yaml b/providers/google/provider.yaml
index 51f25207d5f..3f48764a8d2 100644
--- a/providers/google/provider.yaml
+++ b/providers/google/provider.yaml
@@ -171,7 +171,7 @@ integrations:
external-doc-url: https://cloud.google.com/
tags: [gcp]
logo: /docs/integration-logos/Google.png
- - integration-name: Google Cloud Composer
+ - integration-name: Managed Service for Apache Airflow
external-doc-url: https://cloud.google.com/composer
how-to-guide:
-
/docs/apache-airflow-providers-google/operators/cloud/cloud_composer.rst
@@ -495,9 +495,10 @@ operators:
- integration-name: Google Cloud Build
python-modules:
- airflow.providers.google.cloud.operators.cloud_build
- - integration-name: Google Cloud Composer
+ - integration-name: Managed Service for Apache Airflow
python-modules:
- airflow.providers.google.cloud.operators.cloud_composer
+ - airflow.providers.google.cloud.operators.managed_airflow
- integration-name: Google Cloud Run
python-modules:
- airflow.providers.google.cloud.operators.cloud_run
@@ -651,7 +652,7 @@ sensors:
- integration-name: Google Bigtable
python-modules:
- airflow.providers.google.cloud.sensors.bigtable
- - integration-name: Google Cloud Composer
+ - integration-name: Managed Service for Apache Airflow
python-modules:
- airflow.providers.google.cloud.sensors.cloud_composer
- integration-name: Google Cloud Storage Transfer Service
@@ -757,7 +758,7 @@ hooks:
- integration-name: Google Cloud Build
python-modules:
- airflow.providers.google.cloud.hooks.cloud_build
- - integration-name: Google Cloud Composer
+ - integration-name: Managed Service for Apache Airflow
python-modules:
- airflow.providers.google.cloud.hooks.cloud_composer
- integration-name: Google Cloud Run
@@ -946,7 +947,7 @@ triggers:
- integration-name: Google Cloud Build
python-modules:
- airflow.providers.google.cloud.triggers.cloud_build
- - integration-name: Google Cloud Composer
+ - integration-name: Managed Service for Apache Airflow
python-modules:
- airflow.providers.google.cloud.triggers.cloud_composer
- integration-name: Google Cloud Run
diff --git
a/providers/google/src/airflow/providers/google/cloud/operators/managed_airflow.py
b/providers/google/src/airflow/providers/google/cloud/operators/managed_airflow.py
new file mode 100644
index 00000000000..377db691a4c
--- /dev/null
+++
b/providers/google/src/airflow/providers/google/cloud/operators/managed_airflow.py
@@ -0,0 +1,40 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from typing import TypeAlias
+
+from airflow.providers.google.cloud.operators.cloud_composer import (
+ CloudComposerCreateEnvironmentOperator,
+ CloudComposerDeleteEnvironmentOperator,
+ CloudComposerGetEnvironmentOperator,
+ CloudComposerListEnvironmentsOperator,
+ CloudComposerListImageVersionsOperator,
+ CloudComposerRunAirflowCLICommandOperator,
+ CloudComposerTriggerDAGRunOperator,
+ CloudComposerUpdateEnvironmentOperator,
+)
+
+ManagedAirflowCreateEnvironmentOperator: TypeAlias =
CloudComposerCreateEnvironmentOperator
+ManagedAirflowDeleteEnvironmentOperator: TypeAlias =
CloudComposerDeleteEnvironmentOperator
+ManagedAirflowGetEnvironmentOperator: TypeAlias =
CloudComposerGetEnvironmentOperator
+ManagedAirflowListEnvironmentsOperator: TypeAlias =
CloudComposerListEnvironmentsOperator
+ManagedAirflowUpdateEnvironmentOperator: TypeAlias =
CloudComposerUpdateEnvironmentOperator
+ManagedAirflowListImageVersionsOperator: TypeAlias =
CloudComposerListImageVersionsOperator
+ManagedAirflowRunAirflowCLICommandOperator: TypeAlias =
CloudComposerRunAirflowCLICommandOperator
+ManagedAirflowTriggerDAGRunOperator: TypeAlias =
CloudComposerTriggerDAGRunOperator
diff --git a/providers/google/src/airflow/providers/google/get_provider_info.py
b/providers/google/src/airflow/providers/google/get_provider_info.py
index 271026bc353..5fa1e538c74 100644
--- a/providers/google/src/airflow/providers/google/get_provider_info.py
+++ b/providers/google/src/airflow/providers/google/get_provider_info.py
@@ -84,7 +84,7 @@ def get_provider_info():
"logo": "/docs/integration-logos/Google.png",
},
{
- "integration-name": "Google Cloud Composer",
+ "integration-name": "Managed Service for Apache Airflow",
"external-doc-url": "https://cloud.google.com/composer",
"how-to-guide":
["/docs/apache-airflow-providers-google/operators/cloud/cloud_composer.rst"],
"tags": ["google"],
@@ -513,8 +513,11 @@ def get_provider_info():
"python-modules":
["airflow.providers.google.cloud.operators.cloud_build"],
},
{
- "integration-name": "Google Cloud Composer",
- "python-modules":
["airflow.providers.google.cloud.operators.cloud_composer"],
+ "integration-name": "Managed Service for Apache Airflow",
+ "python-modules": [
+ "airflow.providers.google.cloud.operators.cloud_composer",
+ "airflow.providers.google.cloud.operators.managed_airflow",
+ ],
},
{
"integration-name": "Google Cloud Run",
@@ -722,7 +725,7 @@ def get_provider_info():
"python-modules":
["airflow.providers.google.cloud.sensors.bigtable"],
},
{
- "integration-name": "Google Cloud Composer",
+ "integration-name": "Managed Service for Apache Airflow",
"python-modules":
["airflow.providers.google.cloud.sensors.cloud_composer"],
},
{
@@ -852,7 +855,7 @@ def get_provider_info():
"python-modules":
["airflow.providers.google.cloud.hooks.cloud_build"],
},
{
- "integration-name": "Google Cloud Composer",
+ "integration-name": "Managed Service for Apache Airflow",
"python-modules":
["airflow.providers.google.cloud.hooks.cloud_composer"],
},
{
@@ -1104,7 +1107,7 @@ def get_provider_info():
"python-modules":
["airflow.providers.google.cloud.triggers.cloud_build"],
},
{
- "integration-name": "Google Cloud Composer",
+ "integration-name": "Managed Service for Apache Airflow",
"python-modules":
["airflow.providers.google.cloud.triggers.cloud_composer"],
},
{
diff --git
a/providers/google/tests/system/google/cloud/composer/example_cloud_composer.py
b/providers/google/tests/system/google/cloud/composer/example_cloud_composer.py
index 31d455ef1bf..5077d5fb311 100644
---
a/providers/google/tests/system/google/cloud/composer/example_cloud_composer.py
+++
b/providers/google/tests/system/google/cloud/composer/example_cloud_composer.py
@@ -66,7 +66,7 @@ PROJECT_NUMBER = "{{
task_instance.xcom_pull('get_project_number') }}"
DAG_ID = "composer"
REGION = "us-central1"
-# [START howto_operator_composer_simple_environment]
+# [START howto_operator_managed_airflow_simple_environment]
ENVIRONMENT_ID = f"test-{DAG_ID}-{ENV_ID}".replace("_", "-")
ENVIRONMENT_ID_ASYNC = f"test-deferrable-{DAG_ID}-{ENV_ID}".replace("_", "-")
@@ -79,16 +79,16 @@ ENVIRONMENT = {
},
},
}
-# [END howto_operator_composer_simple_environment]
+# [END howto_operator_managed_airflow_simple_environment]
-# [START howto_operator_composer_update_environment]
+# [START howto_operator_managed_airflow_update_environment]
UPDATED_ENVIRONMENT = {
"labels": {
"label": "testing",
}
}
UPDATE_MASK = {"paths": ["labels.label"]}
-# [END howto_operator_composer_update_environment]
+# [END howto_operator_managed_airflow_update_environment]
COMMAND = "dags list -o json --verbose"
log = logging.getLogger(__name__)
@@ -174,15 +174,15 @@ with DAG(
catchup=False,
tags=["example", "composer"],
) as dag:
- # [START howto_operator_composer_image_list]
+ # [START howto_operator_managed_airflow_image_list]
image_versions = CloudComposerListImageVersionsOperator(
task_id="image_versions",
project_id=PROJECT_ID,
region=REGION,
)
- # [END howto_operator_composer_image_list]
+ # [END howto_operator_managed_airflow_image_list]
- # [START howto_operator_create_composer_environment]
+ # [START howto_operator_create_managed_airflow_environment]
create_env = CloudComposerCreateEnvironmentOperator(
task_id="create_env",
project_id=PROJECT_ID,
@@ -193,9 +193,9 @@ with DAG(
retry_delay=timedelta(minutes=1),
on_retry_callback=cleanup_failed_environment_before_retry,
)
- # [END howto_operator_create_composer_environment]
+ # [END howto_operator_create_managed_airflow_environment]
- # [START howto_operator_create_composer_environment_deferrable_mode]
+ # [START howto_operator_create_managed_airflow_environment_deferrable_mode]
defer_create_env = CloudComposerCreateEnvironmentOperator(
task_id="defer_create_env",
project_id=PROJECT_ID,
@@ -207,24 +207,24 @@ with DAG(
retry_delay=timedelta(minutes=1),
on_retry_callback=cleanup_failed_environment_before_retry,
)
- # [END howto_operator_create_composer_environment_deferrable_mode]
+ # [END howto_operator_create_managed_airflow_environment_deferrable_mode]
- # [START howto_operator_list_composer_environments]
+ # [START howto_operator_list_managed_airflow_environments]
list_envs = CloudComposerListEnvironmentsOperator(
task_id="list_envs", project_id=PROJECT_ID, region=REGION
)
- # [END howto_operator_list_composer_environments]
+ # [END howto_operator_list_managed_airflow_environments]
- # [START howto_operator_get_composer_environment]
+ # [START howto_operator_get_managed_airflow_environment]
get_env = CloudComposerGetEnvironmentOperator(
task_id="get_env",
project_id=PROJECT_ID,
region=REGION,
environment_id=ENVIRONMENT_ID,
)
- # [END howto_operator_get_composer_environment]
+ # [END howto_operator_get_managed_airflow_environment]
- # [START howto_operator_update_composer_environment]
+ # [START howto_operator_update_managed_airflow_environment]
update_env = CloudComposerUpdateEnvironmentOperator(
task_id="update_env",
project_id=PROJECT_ID,
@@ -233,9 +233,9 @@ with DAG(
update_mask=UPDATE_MASK,
environment=UPDATED_ENVIRONMENT,
)
- # [END howto_operator_update_composer_environment]
+ # [END howto_operator_update_managed_airflow_environment]
- # [START howto_operator_update_composer_environment_deferrable_mode]
+ # [START howto_operator_update_managed_airflow_environment_deferrable_mode]
defer_update_env = CloudComposerUpdateEnvironmentOperator(
task_id="defer_update_env",
project_id=PROJECT_ID,
@@ -245,7 +245,7 @@ with DAG(
environment=UPDATED_ENVIRONMENT,
deferrable=True,
)
- # [END howto_operator_update_composer_environment_deferrable_mode]
+ # [END howto_operator_update_managed_airflow_environment_deferrable_mode]
# [START howto_operator_run_airflow_cli_command]
run_airflow_cli_cmd = CloudComposerRunAirflowCLICommandOperator(
@@ -328,17 +328,17 @@ with DAG(
)
# [END howto_sensor_external_task_deferrable_mode]
- # [START howto_operator_delete_composer_environment]
+ # [START howto_operator_delete_managed_airflow_environment]
delete_env = CloudComposerDeleteEnvironmentOperator(
task_id="delete_env",
project_id=PROJECT_ID,
region=REGION,
environment_id=ENVIRONMENT_ID,
)
- # [END howto_operator_delete_composer_environment]
+ # [END howto_operator_delete_managed_airflow_environment]
delete_env.trigger_rule = TriggerRule.ALL_DONE
- # [START howto_operator_delete_composer_environment_deferrable_mode]
+ # [START howto_operator_delete_managed_airflow_environment_deferrable_mode]
defer_delete_env = CloudComposerDeleteEnvironmentOperator(
task_id="defer_delete_env",
project_id=PROJECT_ID,
@@ -346,7 +346,7 @@ with DAG(
environment_id=ENVIRONMENT_ID_ASYNC,
deferrable=True,
)
- # [END howto_operator_delete_composer_environment_deferrable_mode]
+ # [END howto_operator_delete_managed_airflow_environment_deferrable_mode]
defer_delete_env.trigger_rule = TriggerRule.ALL_DONE
chain(
diff --git
a/providers/google/tests/unit/google/cloud/operators/test_managed_airflow.py
b/providers/google/tests/unit/google/cloud/operators/test_managed_airflow.py
new file mode 100644
index 00000000000..80942928b79
--- /dev/null
+++ b/providers/google/tests/unit/google/cloud/operators/test_managed_airflow.py
@@ -0,0 +1,50 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from airflow.providers.google.cloud.operators.cloud_composer import (
+ CloudComposerCreateEnvironmentOperator,
+ CloudComposerDeleteEnvironmentOperator,
+ CloudComposerGetEnvironmentOperator,
+ CloudComposerListEnvironmentsOperator,
+ CloudComposerListImageVersionsOperator,
+ CloudComposerRunAirflowCLICommandOperator,
+ CloudComposerTriggerDAGRunOperator,
+ CloudComposerUpdateEnvironmentOperator,
+)
+from airflow.providers.google.cloud.operators.managed_airflow import (
+ ManagedAirflowCreateEnvironmentOperator,
+ ManagedAirflowDeleteEnvironmentOperator,
+ ManagedAirflowGetEnvironmentOperator,
+ ManagedAirflowListEnvironmentsOperator,
+ ManagedAirflowListImageVersionsOperator,
+ ManagedAirflowRunAirflowCLICommandOperator,
+ ManagedAirflowTriggerDAGRunOperator,
+ ManagedAirflowUpdateEnvironmentOperator,
+)
+
+
+def test_managed_airflow_aliases() -> None:
+ assert ManagedAirflowCreateEnvironmentOperator is
CloudComposerCreateEnvironmentOperator
+ assert ManagedAirflowDeleteEnvironmentOperator is
CloudComposerDeleteEnvironmentOperator
+ assert ManagedAirflowGetEnvironmentOperator is
CloudComposerGetEnvironmentOperator
+ assert ManagedAirflowListEnvironmentsOperator is
CloudComposerListEnvironmentsOperator
+ assert ManagedAirflowUpdateEnvironmentOperator is
CloudComposerUpdateEnvironmentOperator
+ assert ManagedAirflowListImageVersionsOperator is
CloudComposerListImageVersionsOperator
+ assert ManagedAirflowRunAirflowCLICommandOperator is
CloudComposerRunAirflowCLICommandOperator
+ assert ManagedAirflowTriggerDAGRunOperator is
CloudComposerTriggerDAGRunOperator