This is an automated email from the ASF dual-hosted git repository. ephraimanierobi pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 55c1ab1c12e74a982ebbecf76478d173bd58a633 Author: Jarek Potiuk <[email protected]> AuthorDate: Tue Dec 9 11:46:37 2025 +0100 [v3-1-test] Create additional users in breeze for testing (#58126) (#59233) * feat: added --create-all-roles flag to breeze. creates test users with each role by default for SimpleAuthManager * update command config * ci: ran prek --all-files * remove dev modecreate roles error * remove --dev-mode requirement for breeze start-airflow --create-all-roles * docs: remove documentation (cherry picked from commit e615354e34fff66cdd64e8aa7ab63f3258f4a248) Co-authored-by: Aaron Wolmutt <[email protected]> --- dev/breeze/doc/03_developer_tasks.rst | 38 +++++++++++++++++++++- .../files/simple_auth_manager_passwords.json | 2 +- .../src/airflow_breeze/params/shell_params.py | 6 +++- scripts/in_container/check_environment.sh | 12 ++++++- 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/dev/breeze/doc/03_developer_tasks.rst b/dev/breeze/doc/03_developer_tasks.rst index f4968602889..1578d6dea2b 100644 --- a/dev/breeze/doc/03_developer_tasks.rst +++ b/dev/breeze/doc/03_developer_tasks.rst @@ -132,12 +132,48 @@ You can connect to these ports/databases using: If you do not use ``start-airflow`` command. You can use ``tmux`` to multiply terminals. You may need to create a user prior to running the API server in order to log in. -This can be done with the following command: + +**Authentication and User Management** + +The authentication method depends on which auth manager is configured: + +**SimpleAuthManager (Default in Airflow 3.x)** + +SimpleAuthManager is the default authentication manager and comes pre-configured with test username and passwords for development: + +.. code-block:: + + * admin:admin (Admin role) + * viewer:viewer (Viewer role) + * user:user (User role) + * op:op (Operator role) + +These users are automatically available when using SimpleAuthManager and require no additional setup. + +**FabAuthManager** + +When using FabAuthManager, you can create users manually: .. code-block:: bash airflow users create --role Admin --username admin --password admin --email [email protected] --firstname foo --lastname bar +Or use the ``--create-all-roles`` flag with ``start-airflow`` in dev mode to automatically create test users: + +.. code-block:: bash + + breeze start-airflow --dev-mode --create-all-roles --auth-manager FabAuthManager + +This will create the following test users: + +.. code-block:: + + * admin:admin (Admin role) + * viewer:viewer (Viewer role) + * user:user (User role) + * op:op (Op role) + * testadmin:testadmin (Admin role) + .. note:: ``airflow users`` command is only available when `FAB auth manager <https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/index.html>`_ is enabled. diff --git a/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json b/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json index 8f297bdae3d..1f74a7b6616 100644 --- a/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json +++ b/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json @@ -1 +1 @@ -{"admin": "admin", "viewer": "viewer"} +{"admin": "admin", "viewer": "viewer", "user": "user", "op": "op"} diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py index 393f5ef9918..3f60a5cd6f1 100644 --- a/dev/breeze/src/airflow_breeze/params/shell_params.py +++ b/dev/breeze/src/airflow_breeze/params/shell_params.py @@ -171,6 +171,7 @@ class ShellParams: celery_flower: bool = False clean_airflow_installation: bool = False collect_only: bool = False + create_all_roles: bool = False debug_components: tuple[str, ...] = () debugger: str = "debugpy" db_reset: bool = False @@ -561,7 +562,9 @@ class ShellParams: _set_var(_env, "AIRFLOW__CORE__AUTH_MANAGER", self.auth_manager_path) _set_var(_env, "AIRFLOW__CORE__EXECUTOR", self.executor) if self.auth_manager == SIMPLE_AUTH_MANAGER: - _set_var(_env, "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_USERS", "admin:admin,viewer:viewer") + _set_var( + _env, "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_USERS", "admin:admin,viewer:viewer,user:user,op:op" + ) _set_var( _env, "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_PASSWORDS_FILE", @@ -607,6 +610,7 @@ class ShellParams: _set_var(_env, "CI_TARGET_BRANCH", self.airflow_branch) _set_var(_env, "CI_TARGET_REPO", self.github_repository) _set_var(_env, "COLLECT_ONLY", self.collect_only) + _set_var(_env, "CREATE_ALL_ROLES", self.create_all_roles) _set_var(_env, "COMMIT_SHA", None, commit_sha()) _set_var(_env, "COMPOSE_FILE", self.compose_file) _set_var(_env, "DB_RESET", self.db_reset) diff --git a/scripts/in_container/check_environment.sh b/scripts/in_container/check_environment.sh index 6c385f98173..77dcb636283 100755 --- a/scripts/in_container/check_environment.sh +++ b/scripts/in_container/check_environment.sh @@ -114,8 +114,18 @@ function startairflow_if_requested() { if airflow config get-value core auth_manager | grep -q "FabAuthManager"; then airflow users create -u admin -p admin -f Thor -l Adminstra -r Admin -e [email protected] || true + + # Create all roles for testing if CREATE_ALL_ROLES is set + if [[ "${CREATE_ALL_ROLES}" == "true" ]]; then + echo "Creating all test roles for FabAuthManager..." + airflow users create -u viewer -p viewer -f Test -l Viewer -r Viewer -e [email protected] || true + airflow users create -u user -p user -f Test -l User -r User -e [email protected] || true + airflow users create -u op -p op -f Test -l Op -r Op -e [email protected] || true + airflow users create -u testadmin -p testadmin -f Test -l TestAdmin -r Admin -e [email protected] || true + echo "All test roles created successfully for FabAuthManager." + fi else - echo "Skipping user creation as auth manager different from Fab is used" + echo "SimpleAuthManager detected. All roles (admin, viewer, user, op) are always available via configuration in .dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json" fi fi return $?
