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

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.2.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

astronomer_nova-0.1.2-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: astronomer-nova-0.1.2.tar.gz
  • Upload date:
  • Size: 6.4 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.2.tar.gz
Algorithm Hash digest
SHA256 3300d301c96784b80c9dda6e6c1f8705405938195b32761936681d2007393711
MD5 03d08e3e6e4d6bb89f9fc0a2b15edaf8
BLAKE2b-256 b680367639b153dd15a58280b5a98aa0101e6241e4b63396015af1f5a8248033

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for astronomer_nova-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b100d8faa57fc649227b74cba78e165d4ac202359dbc3cd6f85559e974859892
MD5 338f2628c88597d28ba69eeeb6bb1d24
BLAKE2b-256 07c4a31c60add03d9678ee8e09d746641f08a8d8b6dbf63ceee8f799e8746250

See more details on using hashes here.

Supported by

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