From b8d44dfa1a93664787b4b6fb23db02e4a2f3f229 Mon Sep 17 00:00:00 2001 From: Federico Ressi Date: Tue, 12 Mar 2019 16:05:00 +0100 Subject: [PATCH] Write to log undefined variables and options Change-Id: I3302ff44df7c2274620cd1e3862c2c793363c471 --- tobiko/config.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/tobiko/config.py b/tobiko/config.py index 0be60327e..2c106cd73 100644 --- a/tobiko/config.py +++ b/tobiko/config.py @@ -207,11 +207,11 @@ def init_environ_config(): class EnvironConfig(object): def __getattr__(self, name): - try: - return os.environ[name] - except KeyError: - msg = "Environment variable not found: {!r}".format(name) + value = get_env(name) + if value is None: + msg = "Environment variable not defined: {!r}".format(name) raise cfg.NoSuchOptError(msg) + return value class NoSuchConfigSource(AttributeError): @@ -227,13 +227,33 @@ def get_any_option(*sources, **kwargs): value = getattr(value, name) except (NoSuchConfigSource, cfg.NoSuchOptError, - cfg.NoSuchGroupError): + cfg.NoSuchGroupError) as ex: + LOG.debug("No such option value for %r: %s", source, ex) break - else: if value != default: return value return default +def get_env(name): + value = os.environ.get(name) + if value: + return value + else: + LOG.debug("Environment variable %r is not defined") + return None + + +def get_int_env(name): + value = get_env(name) + if value: + try: + return int(value) + except TypeError: + LOG.exception("Environment variable %r is not an integer: %r", + name, value) + return None + + init_config()