apache-airflow-providers-fab 1.5.3rc1__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/fab/LICENSE +0 -52
- airflow/providers/fab/__init__.py +3 -3
- airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +4 -5
- airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +5 -5
- airflow/providers/fab/auth_manager/api/auth/backend/session.py +2 -2
- airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +15 -15
- airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +13 -14
- airflow/providers/fab/auth_manager/api_fastapi/__init__.py +16 -0
- airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +16 -0
- airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +32 -0
- airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +16 -0
- airflow/providers/fab/auth_manager/api_fastapi/openapi/v1-generated.yaml +153 -0
- airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +16 -0
- airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +51 -0
- airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +16 -0
- airflow/providers/fab/auth_manager/api_fastapi/services/login.py +58 -0
- airflow/providers/fab/auth_manager/cli_commands/db_command.py +1 -3
- airflow/providers/fab/auth_manager/cli_commands/user_command.py +2 -2
- airflow/providers/fab/auth_manager/cli_commands/utils.py +12 -11
- airflow/providers/fab/auth_manager/fab_auth_manager.py +238 -126
- airflow/providers/fab/auth_manager/models/__init__.py +1 -1
- airflow/providers/fab/auth_manager/models/anonymous_user.py +1 -1
- airflow/providers/fab/auth_manager/models/db.py +22 -5
- airflow/providers/fab/auth_manager/openapi/v1.yaml +9 -0
- airflow/providers/fab/auth_manager/schemas/user_schema.py +1 -1
- airflow/providers/fab/auth_manager/security_manager/override.py +186 -655
- airflow/providers/fab/auth_manager/views/permissions.py +1 -1
- airflow/providers/fab/auth_manager/views/roles_list.py +1 -1
- airflow/providers/fab/auth_manager/views/user.py +1 -1
- airflow/providers/fab/auth_manager/views/user_edit.py +1 -1
- airflow/providers/fab/auth_manager/views/user_stats.py +1 -1
- airflow/providers/fab/get_provider_info.py +29 -34
- airflow/providers/fab/www/airflow_flask_app.py +31 -0
- airflow/providers/fab/www/api_connexion/__init__.py +17 -0
- airflow/providers/fab/www/api_connexion/exceptions.py +197 -0
- airflow/providers/fab/www/api_connexion/parameters.py +131 -0
- airflow/providers/fab/www/api_connexion/security.py +84 -0
- airflow/providers/fab/www/api_connexion/types.py +30 -0
- airflow/providers/fab/www/app.py +120 -0
- airflow/providers/fab/www/auth.py +350 -0
- airflow/providers/fab/www/constants.py +28 -0
- airflow/providers/fab/www/extensions/__init__.py +16 -0
- airflow/providers/fab/www/extensions/init_appbuilder.py +606 -0
- airflow/providers/fab/www/extensions/init_jinja_globals.py +82 -0
- airflow/providers/fab/www/extensions/init_manifest_files.py +61 -0
- airflow/providers/fab/www/extensions/init_security.py +61 -0
- airflow/providers/fab/www/extensions/init_session.py +64 -0
- airflow/providers/fab/www/extensions/init_views.py +177 -0
- airflow/providers/fab/www/package-lock.json +8939 -0
- airflow/providers/fab/www/package.json +77 -0
- airflow/providers/fab/www/security/__init__.py +17 -0
- airflow/providers/fab/www/security/permissions.py +126 -0
- airflow/providers/fab/www/security_appless.py +44 -0
- airflow/providers/fab/www/security_manager.py +122 -0
- airflow/providers/fab/www/session.py +41 -0
- airflow/providers/fab/www/static/css/bootstrap-theme.css +6215 -0
- airflow/providers/fab/www/static/css/flash.css +57 -0
- airflow/providers/fab/www/static/css/loading-dots.css +60 -0
- airflow/providers/fab/www/static/css/main.css +676 -0
- airflow/providers/fab/www/static/css/material-icons.css +84 -0
- airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +1 -0
- airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +1 -0
- airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.css +33 -0
- airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.js +1 -0
- airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +1 -0
- airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.css +18 -0
- airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.js +1 -0
- airflow/providers/fab/www/static/dist/jquery-ui.min.css +5 -0
- airflow/providers/fab/www/static/dist/jquery-ui.min.js +2 -0
- airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +4 -0
- airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.css +18 -0
- airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.js +1 -0
- airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.css +18 -0
- airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js +2 -0
- airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js.LICENSE.txt +18 -0
- airflow/providers/fab/www/static/dist/manifest.json +20 -0
- airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.css +18 -0
- airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.js +1 -0
- airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js +2 -0
- airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js.LICENSE.txt +11 -0
- airflow/providers/fab/www/static/dist/oss-licenses.json +20 -0
- airflow/providers/fab/www/static/js/datetime_utils.js +134 -0
- airflow/providers/fab/www/static/js/main.js +324 -0
- airflow/providers/fab/www/static/sort_asc.png +0 -0
- airflow/providers/fab/www/static/sort_both.png +0 -0
- airflow/providers/fab/www/static/sort_desc.png +0 -0
- airflow/providers/fab/www/templates/airflow/_messages.html +30 -0
- airflow/providers/fab/www/templates/airflow/error.html +35 -0
- airflow/providers/fab/www/templates/airflow/main.html +78 -0
- airflow/providers/fab/www/templates/airflow/traceback.html +53 -0
- airflow/providers/fab/www/templates/appbuilder/flash.html +34 -0
- airflow/providers/fab/www/templates/appbuilder/index.html +20 -0
- airflow/providers/fab/www/templates/appbuilder/navbar.html +60 -0
- airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +60 -0
- airflow/providers/fab/www/templates/appbuilder/navbar_right.html +64 -0
- airflow/providers/fab/www/utils.py +288 -0
- airflow/providers/fab/www/views.py +129 -0
- airflow/providers/fab/www/webpack.config.js +213 -0
- {apache_airflow_providers_fab-1.5.3rc1.dist-info → apache_airflow_providers_fab-2.0.0.dist-info}/METADATA +30 -38
- apache_airflow_providers_fab-2.0.0.dist-info/RECORD +125 -0
- {apache_airflow_providers_fab-1.5.3rc1.dist-info → apache_airflow_providers_fab-2.0.0.dist-info}/WHEEL +1 -1
- airflow/providers/fab/auth_manager/decorators/auth.py +0 -126
- apache_airflow_providers_fab-1.5.3rc1.dist-info/RECORD +0 -51
- /airflow/providers/fab/{auth_manager/decorators → www}/__init__.py +0 -0
- {apache_airflow_providers_fab-1.5.3rc1.dist-info → apache_airflow_providers_fab-2.0.0.dist-info}/entry_points.txt +0 -0
@@ -31,6 +31,20 @@ _REVISION_HEADS_MAP: dict[str, str] = {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
|
34
|
+
def _get_flask_db(sql_database_uri):
|
35
|
+
from flask import Flask
|
36
|
+
from flask_sqlalchemy import SQLAlchemy
|
37
|
+
|
38
|
+
from airflow.providers.fab.www.session import AirflowDatabaseSessionInterface
|
39
|
+
|
40
|
+
flask_app = Flask(__name__)
|
41
|
+
flask_app.config["SQLALCHEMY_DATABASE_URI"] = sql_database_uri
|
42
|
+
flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
|
43
|
+
db = SQLAlchemy(flask_app)
|
44
|
+
AirflowDatabaseSessionInterface(app=flask_app, db=db, table="session", key_prefix="")
|
45
|
+
return db
|
46
|
+
|
47
|
+
|
34
48
|
class FABDBManager(BaseDBManager):
|
35
49
|
"""Manages FAB database."""
|
36
50
|
|
@@ -40,6 +54,10 @@ class FABDBManager(BaseDBManager):
|
|
40
54
|
alembic_file = (PACKAGE_DIR / "alembic.ini").as_posix()
|
41
55
|
supports_table_dropping = True
|
42
56
|
|
57
|
+
def create_db_from_orm(self):
|
58
|
+
super().create_db_from_orm()
|
59
|
+
_get_flask_db(settings.SQL_ALCHEMY_CONN).create_all()
|
60
|
+
|
43
61
|
def upgradedb(self, to_revision=None, from_revision=None, show_sql_only=False):
|
44
62
|
"""Upgrade the database."""
|
45
63
|
if from_revision and not show_sql_only:
|
@@ -68,11 +86,6 @@ class FABDBManager(BaseDBManager):
|
|
68
86
|
_offline_migration(command.upgrade, config, f"{from_revision}:{to_revision}")
|
69
87
|
return # only running sql; our job is done
|
70
88
|
|
71
|
-
if not self.get_current_revision():
|
72
|
-
# New DB; initialize and exit
|
73
|
-
self.initdb()
|
74
|
-
return
|
75
|
-
|
76
89
|
command.upgrade(config, revision=to_revision or "heads")
|
77
90
|
|
78
91
|
def downgrade(self, to_revision, from_revision=None, show_sql_only=False):
|
@@ -104,3 +117,7 @@ class FABDBManager(BaseDBManager):
|
|
104
117
|
else:
|
105
118
|
self.log.info("Applying FAB downgrade migrations.")
|
106
119
|
command.downgrade(config, revision=to_revision, sql=show_sql_only)
|
120
|
+
|
121
|
+
def drop_tables(self, connection):
|
122
|
+
super().drop_tables(connection)
|
123
|
+
_get_flask_db(settings.SQL_ALCHEMY_CONN).drop_all()
|
@@ -687,12 +687,21 @@ components:
|
|
687
687
|
Basic:
|
688
688
|
type: http
|
689
689
|
scheme: basic
|
690
|
+
description: To authenticate FAB auth manager API requests, clients have the option to use basic
|
691
|
+
authentication. To learn more about FAB auth manager API authentication, please read
|
692
|
+
https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/api-authentication.html#basic-authentication.
|
690
693
|
GoogleOpenId:
|
691
694
|
type: openIdConnect
|
692
695
|
openIdConnectUrl: https://accounts.google.com/.well-known/openid-configuration
|
696
|
+
description: To authenticate FAB auth manager API requests, clients have the option to use Google OpenID.
|
697
|
+
To learn more about Google OpenID authentication, please read
|
698
|
+
https://airflow.apache.org/docs/apache-airflow-providers-google/stable/api-auth-backend/google-openid.html.
|
693
699
|
Kerberos:
|
694
700
|
type: http
|
695
701
|
scheme: negotiate
|
702
|
+
description: To authenticate FAB auth manager API requests, clients have the option to use Kerberos
|
703
|
+
authentication. To learn more about FAB auth manager API authentication, please read
|
704
|
+
https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/api-authentication.html#kerberos-authentication.
|
696
705
|
|
697
706
|
tags:
|
698
707
|
- name: Role
|
@@ -21,9 +21,9 @@ from typing import NamedTuple
|
|
21
21
|
from marshmallow import Schema, fields
|
22
22
|
from marshmallow_sqlalchemy import SQLAlchemySchema, auto_field
|
23
23
|
|
24
|
-
from airflow.api_connexion.parameters import validate_istimezone
|
25
24
|
from airflow.providers.fab.auth_manager.models import User
|
26
25
|
from airflow.providers.fab.auth_manager.schemas.role_and_permission_schema import RoleSchema
|
26
|
+
from airflow.providers.fab.www.api_connexion.parameters import validate_istimezone
|
27
27
|
|
28
28
|
|
29
29
|
class UserCollectionItemSchema(SQLAlchemySchema):
|