From e23ed64e936212df8210c782b4c0cfa7305c4635 Mon Sep 17 00:00:00 2001 From: Chethan UK Date: Fri, 3 Jun 2022 01:00:13 +0100 Subject: [PATCH] Migrate MySQL example DAGs to new design #22453 --- .../providers/mysql/example_dags/__init__.py | 17 -------- docs/apache-airflow-providers-mysql/index.rst | 2 +- .../operators.rst | 4 +- .../system/providers/mysql}/example_mysql.py | 41 ++++++++++++------- 4 files changed, 29 insertions(+), 35 deletions(-) delete mode 100644 airflow/providers/mysql/example_dags/__init__.py rename {airflow/providers/mysql/example_dags => tests/system/providers/mysql}/example_mysql.py (58%) diff --git a/airflow/providers/mysql/example_dags/__init__.py b/airflow/providers/mysql/example_dags/__init__.py deleted file mode 100644 index 217e5db960782..0000000000000 --- a/airflow/providers/mysql/example_dags/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# -# 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. diff --git a/docs/apache-airflow-providers-mysql/index.rst b/docs/apache-airflow-providers-mysql/index.rst index 6fb518d7e9a5f..44c8aab12ff19 100644 --- a/docs/apache-airflow-providers-mysql/index.rst +++ b/docs/apache-airflow-providers-mysql/index.rst @@ -39,7 +39,7 @@ Content :maxdepth: 1 :caption: Resources - Example DAGs + Example DAGs PyPI Repository Installing from sources diff --git a/docs/apache-airflow-providers-mysql/operators.rst b/docs/apache-airflow-providers-mysql/operators.rst index 27166e503e6e4..605e38fb85a48 100644 --- a/docs/apache-airflow-providers-mysql/operators.rst +++ b/docs/apache-airflow-providers-mysql/operators.rst @@ -51,14 +51,14 @@ the connection metadata is structured as follows: An example usage of the MySqlOperator is as follows: -.. exampleinclude:: /../../airflow/providers/mysql/example_dags/example_mysql.py +.. exampleinclude:: /../../tests/system/providers/mysql/example_mysql.py :language: python :start-after: [START howto_operator_mysql] :end-before: [END howto_operator_mysql] You can also use an external file to execute the SQL commands. Script folder must be at the same level as DAG.py file. -.. exampleinclude:: /../../airflow/providers/mysql/example_dags/example_mysql.py +.. exampleinclude:: /../../tests/system/providers/mysql/example_mysql.py :language: python :start-after: [START howto_operator_mysql_external_file] :end-before: [END howto_operator_mysql_external_file] diff --git a/airflow/providers/mysql/example_dags/example_mysql.py b/tests/system/providers/mysql/example_mysql.py similarity index 58% rename from airflow/providers/mysql/example_dags/example_mysql.py rename to tests/system/providers/mysql/example_mysql.py index a41da05a24d89..b6988e66d3548 100644 --- a/airflow/providers/mysql/example_dags/example_mysql.py +++ b/tests/system/providers/mysql/example_mysql.py @@ -18,34 +18,45 @@ """ Example use of MySql related operators. """ - +import os from datetime import datetime from airflow import DAG from airflow.providers.mysql.operators.mysql import MySqlOperator -dag = DAG( - 'example_mysql', +ENV_ID = os.environ.get("SYSTEM_TESTS_ENV_ID") +DAG_ID = "example_mysql" + +with DAG( + DAG_ID, start_date=datetime(2021, 1, 1), default_args={'mysql_conn_id': 'mysql_conn_id'}, tags=['example'], catchup=False, -) +) as dag: + + # [START howto_operator_mysql] + + drop_table_mysql_task = MySqlOperator( + task_id='drop_table_mysql', sql=r"""DROP TABLE table_name;""", dag=dag + ) + + # [END howto_operator_mysql] -# [START howto_operator_mysql] + # [START howto_operator_mysql_external_file] -drop_table_mysql_task = MySqlOperator(task_id='drop_table_mysql', sql=r"""DROP TABLE table_name;""", dag=dag) + mysql_task = MySqlOperator( + task_id='drop_table_mysql_external_file', + sql='/scripts/drop_table.sql', + dag=dag, + ) -# [END howto_operator_mysql] + # [END howto_operator_mysql_external_file] -# [START howto_operator_mysql_external_file] + drop_table_mysql_task >> mysql_task -mysql_task = MySqlOperator( - task_id='drop_table_mysql_external_file', - sql='/scripts/drop_table.sql', - dag=dag, -) -# [END howto_operator_mysql_external_file] +from tests.system.utils import get_test_run # noqa: E402 -drop_table_mysql_task >> mysql_task +# Needed to run the example DAG with pytest (see: tests/system/README.md#run_via_pytest) +test_run = get_test_run(dag)