diff --git a/airflow-core/src/airflow/cli/commands/config_command.py b/airflow-core/src/airflow/cli/commands/config_command.py index 843adcd87dbb3..bedf7681e0db2 100644 --- a/airflow-core/src/airflow/cli/commands/config_command.py +++ b/airflow-core/src/airflow/cli/commands/config_command.py @@ -383,6 +383,10 @@ def message(self) -> str | None: config=ConfigParameter("webserver", "access_denied_message"), renamed_to=ConfigParameter("fab", "access_denied_message"), ), + ConfigChange( + config=ConfigParameter("webserver", "expose_hostname"), + renamed_to=ConfigParameter("fab", "expose_hostname"), + ), ConfigChange( config=ConfigParameter("webserver", "base_url"), renamed_to=ConfigParameter("api", "base_url"), diff --git a/airflow-core/src/airflow/config_templates/config.yml b/airflow-core/src/airflow/config_templates/config.yml index d2bd4aa605d44..fa8684ed92541 100644 --- a/airflow-core/src/airflow/config_templates/config.yml +++ b/airflow-core/src/airflow/config_templates/config.yml @@ -1707,13 +1707,6 @@ webserver: sensitive: true example: ~ default: "{SECRET_KEY}" - expose_hostname: - description: | - Expose hostname in the web server - version_added: 1.10.8 - type: string - example: ~ - default: "False" grid_view_sorting_order: description: | Sorting order in grid view. Valid values are: ``topological``, ``hierarchical_alphabetical`` diff --git a/airflow-core/src/airflow/configuration.py b/airflow-core/src/airflow/configuration.py index 385b87e5f9268..592a060307def 100644 --- a/airflow-core/src/airflow/configuration.py +++ b/airflow-core/src/airflow/configuration.py @@ -357,6 +357,7 @@ def sensitive_config_values(self) -> set[tuple[str, str]]: ("triggerer", "capacity"): ("triggerer", "default_capacity", "3.0"), ("api", "expose_config"): ("webserver", "expose_config", "3.0.1"), ("fab", "access_denied_message"): ("webserver", "access_denied_message", "3.0.2"), + ("fab", "expose_hostname"): ("webserver", "expose_hostname", "3.0.2"), } # A mapping of new section -> (old section, since_version). diff --git a/providers/fab/provider.yaml b/providers/fab/provider.yaml index 3647b8714464f..9ad74f8ab22f4 100644 --- a/providers/fab/provider.yaml +++ b/providers/fab/provider.yaml @@ -63,10 +63,17 @@ config: access_denied_message: description: | The message displayed when a user attempts to execute actions beyond their authorised privileges. - version_added: 2.0.2 + version_added: 2.0.3 type: string example: ~ default: "Access is Denied" + expose_hostname: + description: | + Expose hostname in the web server + version_added: 2.0.3 + type: string + example: ~ + default: "False" auth_rate_limited: description: | Boolean for enabling rate limiting on authentication endpoints. diff --git a/providers/fab/src/airflow/providers/fab/get_provider_info.py b/providers/fab/src/airflow/providers/fab/get_provider_info.py index acbcd35d21013..67742b4242792 100644 --- a/providers/fab/src/airflow/providers/fab/get_provider_info.py +++ b/providers/fab/src/airflow/providers/fab/get_provider_info.py @@ -32,11 +32,18 @@ def get_provider_info(): "options": { "access_denied_message": { "description": "The message displayed when a user attempts to execute actions beyond their authorised privileges.\n", - "version_added": "2.0.2", + "version_added": "2.0.3", "type": "string", "example": None, "default": "Access is Denied", }, + "expose_hostname": { + "description": "Expose hostname in the web server\n", + "version_added": "2.0.3", + "type": "string", + "example": None, + "default": "False", + }, "auth_rate_limited": { "description": "Boolean for enabling rate limiting on authentication endpoints.\n", "version_added": "1.0.2", diff --git a/providers/fab/src/airflow/providers/fab/www/auth.py b/providers/fab/src/airflow/providers/fab/www/auth.py index 204bab480403f..a01ab8c9e1f9b 100644 --- a/providers/fab/src/airflow/providers/fab/www/auth.py +++ b/providers/fab/src/airflow/providers/fab/www/auth.py @@ -145,7 +145,7 @@ def _has_access(*, is_authorized: bool, func: Callable, args, kwargs): return ( render_template( "airflow/no_roles_permissions.html", - hostname=get_hostname() if conf.getboolean("webserver", "EXPOSE_HOSTNAME") else "", + hostname=get_hostname() if conf.getboolean("fab", "EXPOSE_HOSTNAME") else "", logout_url=get_fab_auth_manager().get_url_logout(), ), 403, @@ -217,7 +217,7 @@ def decorated(*args, **kwargs): return ( render_template( "airflow/no_roles_permissions.html", - hostname=get_hostname() if conf.getboolean("webserver", "EXPOSE_HOSTNAME") else "", + hostname=get_hostname() if conf.getboolean("fab", "EXPOSE_HOSTNAME") else "", logout_url=get_auth_manager().get_url_logout(), ), 403, diff --git a/providers/fab/src/airflow/providers/fab/www/extensions/init_jinja_globals.py b/providers/fab/src/airflow/providers/fab/www/extensions/init_jinja_globals.py index 5929a40d8f576..35aa5c71413b9 100644 --- a/providers/fab/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +++ b/providers/fab/src/airflow/providers/fab/www/extensions/init_jinja_globals.py @@ -37,7 +37,7 @@ def init_jinja_globals(app, enable_plugins: bool): elif server_timezone == "utc": server_timezone = "UTC" - expose_hostname = conf.getboolean("webserver", "EXPOSE_HOSTNAME") + expose_hostname = conf.getboolean("fab", "EXPOSE_HOSTNAME") hostname = get_hostname() if expose_hostname else "redact" try: