You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by je...@apache.org on 2022/09/26 15:09:15 UTC
[airflow] 06/13: Log warning when secret backend kwargs is invalid (#26580)
This is an automated email from the ASF dual-hosted git repository.
jedcunningham pushed a commit to branch v2-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 0308b177fc4911cd1a01af62e2b620ffeaf9ab64
Author: Tzu-ping Chung <ur...@gmail.com>
AuthorDate: Thu Sep 22 15:20:47 2022 +0800
Log warning when secret backend kwargs is invalid (#26580)
This should help debugging a bit.
(cherry picked from commit 2060ed43955e09792cb9888deea0da239b7eee09)
---
airflow/configuration.py | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/airflow/configuration.py b/airflow/configuration.py
index 77164ab904..905564ac8d 100644
--- a/airflow/configuration.py
+++ b/airflow/configuration.py
@@ -1542,15 +1542,23 @@ def get_custom_secret_backend() -> BaseSecretsBackend | None:
"""Get Secret Backend if defined in airflow.cfg"""
secrets_backend_cls = conf.getimport(section='secrets', key='backend')
- if secrets_backend_cls:
- try:
- backends: Any = conf.get(section='secrets', key='backend_kwargs', fallback='{}')
- alternative_secrets_config_dict = json.loads(backends)
- except JSONDecodeError:
- alternative_secrets_config_dict = {}
+ if not secrets_backend_cls:
+ return None
- return secrets_backend_cls(**alternative_secrets_config_dict)
- return None
+ try:
+ backend_kwargs = conf.getjson(section='secrets', key='backend_kwargs')
+ if not backend_kwargs:
+ backend_kwargs = {}
+ elif not isinstance(backend_kwargs, dict):
+ raise ValueError("not a dict")
+ except AirflowConfigException:
+ log.warning("Failed to parse [secrets] backend_kwargs as JSON, defaulting to no kwargs.")
+ backend_kwargs = {}
+ except ValueError:
+ log.warning("Failed to parse [secrets] backend_kwargs into a dict, defaulting to no kwargs.")
+ backend_kwargs = {}
+
+ return secrets_backend_cls(**backend_kwargs)
def initialize_secrets_backends() -> list[BaseSecretsBackend]: