Crowiant commented on code in PR #45931: URL: https://github.com/apache/airflow/pull/45931#discussion_r2333365528
########## airflow-core/src/airflow/configuration.py: ########## @@ -2194,28 +2192,73 @@ def get_custom_secret_backend(worker_mode: bool = False) -> BaseSecretsBackend | return secrets_backend_cls(**backend_kwargs) +def get_importable_secret_backend(class_name: str | None) -> BaseSecretsBackend | None: + """Get secret backend defined in the given class name.""" + if class_name is not None: + secrets_backend_cls = import_string(class_name) + return secrets_backend_cls() + return None + + def initialize_secrets_backends( - default_backends: list[str] = DEFAULT_SECRETS_SEARCH_PATH, + default_backends: list[str] | None = None, ) -> list[BaseSecretsBackend]: """ Initialize secrets backend. * import secrets backend classes * instantiate them and return them in a list """ - backend_list = [] worker_mode = False - if default_backends != DEFAULT_SECRETS_SEARCH_PATH: + environment_variable_args: str | None = ( + "airflow.secrets.environment_variables.EnvironmentVariablesBackend" + ) + metastore_args: str | None = "airflow.secrets.metastore.MetastoreBackend" + if default_backends is not None: worker_mode = True + environment_variable_args = ( + environment_variable_args if environment_variable_args in default_backends else None + ) + metastore_args = metastore_args if metastore_args in default_backends else None + backends_map: dict[str, dict[str, Any]] = { + "environment_variable": { + "callback": get_importable_secret_backend, + "args": (environment_variable_args,), + }, + "metastore": { + "callback": get_importable_secret_backend, + "args": (metastore_args,), + }, + "custom": { + "callback": get_custom_secret_backend, + "args": (worker_mode,), + }, + } - custom_secret_backend = get_custom_secret_backend(worker_mode) + backends_order = conf.getlist("secrets", "backends_order", delimiter=",") - if custom_secret_backend is not None: - backend_list.append(custom_secret_backend) + required_backends = ["metastore", "environment_variable"] + if missing_backends := [b for b in required_backends if b not in backends_order]: + raise AirflowConfigException( + "The configuration option [secrets]backends_order is misconfigured. " + "The following backend types are missing: %s", + missing_backends, + ) Review Comment: Thank you for your attention to details! I will add changes to the PR. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org