Skip to main content

Apache Airflow Upgrade Check

PyPI version License PyPI - Python Version PyPI - Downloads Twitter Follow Slack Status

This package aims to easy the upgrade journey from Apache Airflow 1.10 to 2.0.

While we have put a lot of effort in to making this upgrade as painless as possible, with many changes providing upgrade path (where the old code continues to work and prints out a deprecation warning) there were unfortunately some breaking changes where we couldn't provide a compatibility shim.

The recommended upgrade path to get to Airflow 2.0.0 is to first upgrade to the latest release in the 1.10 series (at the time of writing: 1.10.14) and to then run this script.

pip install apache-airflow-upgrade-check
airflow upgrade_check

This will then print out a number of action items that you should follow before upgrading to 2.0.0 or above.

The exit code of the command will be 0 (success) if no problems are reported, or 1 otherwise.

For example:

============================================= STATUS =============================================

Check for latest versions of apache-airflow and checker.................................SUCCESS
Legacy UI is deprecated by default......................................................SUCCESS
Users must set a kubernetes.pod_template_file value.....................................FAIL
Changes in import paths of hooks, operators, sensors and others.........................FAIL
Remove airflow.AirflowMacroPlugin class.................................................SUCCESS
Check versions of PostgreSQL, MySQL, and SQLite to ease upgrade to Airflow 2.0..........SUCCESS
Fernet is enabled by default............................................................FAIL
Logging configuration has been moved to new section.....................................SUCCESS
Connection.conn_id is not unique........................................................SUCCESS
GCP service account key deprecation.....................................................SUCCESS
Users must delete deprecated configs for KubernetesExecutor.............................FAIL
Changes in import path of remote task handlers..........................................SUCCESS
Chain between DAG and operator not allowed..............................................SUCCESS
SendGrid email uses old airflow.contrib module..........................................SUCCESS
Connection.conn_type is not nullable....................................................SUCCESS
Found 16 problems.

======================================== RECOMMENDATIONS =========================================

Users must set a kubernetes.pod_template_file value
---------------------------------------------------
In Airflow 2.0, KubernetesExecutor Users need to set a pod_template_file as a base
value for all pods launched by the KubernetesExecutor


Problems:

  1.  Please create a pod_template_file by running `airflow generate_pod_template`.
This will generate a pod using your aiflow.cfg settings

...

Additionally you can use "upgrade config" to:

  • specify rules you would like to ignore
  • extend the check using custom rules

For example:

airflow upgrade_check --config=/files/upgrade.yaml

the configuration file should be a proper yaml file similar to this one:

ignored_rules:
  - LegacyUIDeprecated
  - ConnTypeIsNotNullableRule
  - PodTemplateFileRule

custom_rules:
  - path.to.upgrade_module.VeryCustomCheckClass
  - path.to.upgrade_module.VeryCustomCheckClass2

Changelog

1.3.0

  • Fix wrong warning about class that was not used in a dag file (#14700)
  • Fill DagBag from dag_folder setting for upgrade rules (#14588)
  • Bugfix: False positives for Custom Executors via Plugins check (#14680)
  • Bugfix: Fix False alarm in import changes rule (#14493)
  • Use CustomSQLAInterface instead of SQLAInterface (#14475)
  • Fix comparing airflow version to work with older versions of packaging library (#14435)
  • Fix Incorrect warning in upgrade check and error in reading file (#14344)
  • Handle possible suffix in MySQL version + avoid hard-coding (#14274)

1.2.0

  • Add upgrade check option to list checks (#13392)
  • Add clearer exception for read failures in macro plugin upgrade (#13371)
  • Treat default value in HostnameCallable rule as good one (#13670)
  • Created CustomExecutorsRequireFullPathRule class (#13678)
  • Remove UndefinedJinjaVariableRule
  • Created rule for SparkJDBCOperator class conn_id (#13798)
  • Created DatabaseVersionCheckRule class (#13955)
  • Add Version command for Upgrade Check (#12929)
  • Use Tabular Format for the List of Upgrade Check Rules (#14139)
  • Fix broken airflow upgrade_check command (#14137)

Metadata

Release files for apache-airflow-upgrade-check 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apache-airflow-upgrade-check 1.3.0
File Size Uploaded
apache-airflow-upgrade-check-1.3.0.tar.gz 38.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apache-airflow-upgrade-check 1.3.0
File Interpreter ABI Platform
apache_airflow_upgrade_check-1.3.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 94.0 kB

Release files / apache-airflow-upgrade-check-1.3.0.tar.gz

Download URL apache-airflow-upgrade-check-1.3.0.tar.gz
Size 38.6 kB
Tags Source
SHA-256 checksum
How to use checksums
48fe31c908394589ad39fd41b1efcc4f822ac501229aa0e5cd4c738b33eb84d9
BLAKE2b-256 checksum
How to use checksums
cb33f520e848862461ff592b73818449681fef6fe388b18629475feb24f33b24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / apache_airflow_upgrade_check-1.3.0-py2.py3-none-any.whl

Download URL apache_airflow_upgrade_check-1.3.0-py2.py3-none-any.whl
Size 55.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
a8f8cb2519edb20b1a7ceebede84ba5b790da73fcbb2bfcc80938b2645f32fef
BLAKE2b-256 checksum
How to use checksums
6b84c827f8556e8855077e14312dbad680ac5a866644401bb536a884e9b43c25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page