Skip to main content

Automate migration from Airflow 1 to Airflow 2

Project description

Astronomer Nova

(Formerly Airflow V2 Upgrader)

This project aims to automate common tasks when upgrading DAGs from Airflow 1 to Airflow 2, making use of RedBaron to parse and manipulate the Python syntax tree.

Features

  • Automatically upgrade DAG source code from Airflow 1 to Airflow 2
  • Scan Dags and report changes (Coming Soon)

Installation

You can install the Astronomer Nova CLI through Pip

pip install astronomer-nova

The simplest way to get started with Astronomer Nova is by using the astro cli. Simply add astronomer-nova to your list of dependencies in requirements.txt. Then you can run it with the following commands:

astro dev start
astro dev bash
nova

Installation from sources

To install astronomer-nova in development mode:

pip install --editable .[lint,test]

To build from sources:

python -m build

OR

python -m pip wheel .

Running tests:

python -m pytest

How to Use

nova dags/ dags/upgraded/

For more information, you can access the help menu with:

nova --help

How it works

Astronomer Nova performs the upgrade by:

  1. Building an import map for classes in airflow.hooks, airflow.operators, airflow.sensors, and airflow.providers, which maps the classes to the current Airflow version import path.
  2. Modifying Python files in a DAG directory to update
    • Imports
    • DAG access controls
    • XCOM push
    • XCOM pull
  3. Writing updated DAG to either the same DAG directory or a parameter output directory with _upgraded added to the filename.

The script is configured to run against ./dags and to write output to ./dags/upgraded by default.

Caveats

In order to load the Airflow import map, Airflow provider packages must be installed. There are often cross-dependencies within Airflow providers (eg airflow.operators.s3_to_hive_operator required the Hive provider), so make sure the requirements.txt file includes all necessary .

The script currently tries to correct imports that do not need to be changed going from Airflow 1 to 2, and logging does not include which files are currently being acted against.

The code uses Astronomer-centric opinions, like removing DAG-level RBAC. In the future, I'd rather have these decisions configurable at runtime, as well as generating per-DAG reports on the DAGs that can be used for further remediation, as well as understanding of DAG requirements, like the use of Connections and Variables.

Contribute

Contact

cabella@astronomer.io

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astronomer-nova-0.1.3.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

astronomer_nova-0.1.3-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file astronomer-nova-0.1.3.tar.gz.

File metadata

  • Download URL: astronomer-nova-0.1.3.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for astronomer-nova-0.1.3.tar.gz
Algorithm Hash digest
SHA256 9cccc325e4908c120e6c31be5665dcfbf428d1cf23aff42eb1c8312251bcf731
MD5 ba6548c39e7391f488c08801db516e79
BLAKE2b-256 5ff3347fd147db739f9da1769d4f5d0e4c10e40cee1dad598a6960c5dccd2161

See more details on using hashes here.

File details

Details for the file astronomer_nova-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for astronomer_nova-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1cb8f2cdd7db4df3962f25c868c61a649ea3cdeaaf7351ef193a81a3f804a135
MD5 201aa0967d19922bb9da36e4ea4f9a22
BLAKE2b-256 bf3a8f85b63abf63c917f10780bf03a02ae738d7fa1171dabadfbfd143d28f8e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page