-
Notifications
You must be signed in to change notification settings - Fork 16.3k
Description
This issue is part of #8765
Rule
Create CutomOperatorUsesMetaclassRule which corresponds to
BaseOperator uses metaclass
entry in UPDATING.md. This rule should allow users to check if their current configuration needs any adjusting
before migration to Airflow 2.0.
How to guide
To implement a new rule, create a class that inherits from airflow.upgrade.rules.base_rule.BaseRule.
It will be auto-registered and used by airflow upgrade-check command. The custom rule class has to have title,
description properties and should implement check method which returns a list of error messages in case of
incompatibility.
For example:
airflow/airflow/upgrade/rules/conn_type_is_not_nullable.py
Lines 25 to 42 in ea36166
| class ConnTypeIsNotNullableRule(BaseRule): | |
| title = "Connection.conn_type is not nullable" | |
| description = """\ | |
| The `conn_type` column in the `connection` table must contain content. Previously, this rule was \ | |
| enforced by application logic, but was not enforced by the database schema. | |
| If you made any modifications to the table directly, make sure you don't have null in the conn_type column.\ | |
| """ | |
| @provide_session | |
| def check(self, session=None): | |
| invalid_connections = session.query(Connection).filter(Connection.conn_type.is_(None)) | |
| return ( | |
| 'Connection<id={}", conn_id={}> have empty conn_type field.'.format(conn.id, conn.conn_id) | |
| for conn in invalid_connections | |
| ) |
Remember to open the PR against v1-10-test branch.