/airflow-user-management-plugin

A plugin for Apache Airflow that allows you to manage the users that can login

Primary LanguagePythonApache License 2.0Apache-2.0

airflow-user-management-plugin

Description

A plugin to Apache Airflow (Documentation: https://airflow.apache.org/, Source Code: https://github.com/apache/airflow) to provide an interface where you can add a PasswordUser to Airflow and manage

How do Deploy

  1. Copy the user_management_plugin.py file into the Airflow Plugins directory

  2. Restart the Airflow Services

  3. Your done!

How to Use

Once you've restarted the Web Application, you should now see a new Tab: Admin -> User Management. From here, you can create new users and update or delete existing ones.

Configuration

Note: superuser flag in the create/edit user form will be effective only from version >= 2.0

####Known issues

  • Issue: When you run the plugin with SQLAlchemy versions >= 1.2.x on Airflow versions < 1.10.x then you might run into the following AttributeError issue

      [2019-03-19 11:07:52,979] {user_management_plugin.py:71} INFO - UserManagementModelView.create_model(form=<flask_admin.contrib.sqla.form.PasswordUserForm object at 0x7fbf3362af90>)
      [2019-03-19 11:07:52,979] {user_management_plugin.py:82} ERROR - Failed to create record.
      Traceback (most recent call last):
       File "/home/dillip/airflow/plugins/user_management_plugin.py", line 75, in create_model
         form.populate_obj(model)
       File "/home/dillip/.local/lib/python2.7/site-packages/wtforms/form.py", line 96, in populate_obj
         field.populate_obj(obj, name)
       File "/home/dillip/.local/lib/python2.7/site-packages/wtforms/fields/core.py", line 330, in populate_obj
         setattr(obj, name, self.data)
       File "/home/dillip/.local/lib/python2.7/site-packages/sqlalchemy/ext/hybrid.py", line 899, in __set__
         raise AttributeError("can't set attribute")
      AttributeError: can't set attribute 
    

    Resolution: Please use SQLAlchemy versions <= 1.1.18 to resolve the issue.