diff --git a/src/common/Settings.py b/src/common/Settings.py index ea161e55590a54f1defc53c3c833f5a4302af972..1efe80db72cc47ba26a32241cc0bf9c15e866176 100644 --- a/src/common/Settings.py +++ b/src/common/Settings.py @@ -37,16 +37,25 @@ ENVVAR_SUFIX_SERVICE_HOST = 'SERVICE_HOST' ENVVAR_SUFIX_SERVICE_PORT_GRPC = 'SERVICE_PORT_GRPC' ENVVAR_SUFIX_SERVICE_PORT_HTTP = 'SERVICE_PORT_HTTP' +def find_missing_environment_variables( + required_environment_variables : List[str] = [] +) -> List[str]: + if ENVVAR_KUBERNETES_PORT in os.environ: + missing_variables = set(required_environment_variables).difference(set(os.environ.keys())) + else: + # We're not running in Kubernetes, nothing to wait for + missing_variables = required_environment_variables + return missing_variables + def wait_for_environment_variables( required_environment_variables : List[str] = [], wait_delay_seconds : float = DEFAULT_RESTART_DELAY ): - if ENVVAR_KUBERNETES_PORT not in os.environ: return # We're not running in Kubernetes, nothing to wait for - missing_variables = set(required_environment_variables).difference(set(os.environ.keys())) + missing_variables = find_missing_environment_variables(required_environment_variables) if len(missing_variables) == 0: return # We have all environment variables defined msg = 'Variables({:s}) are missing in Environment({:s}), restarting in {:f} seconds...' LOGGER.error(msg.format(str(missing_variables), str(os.environ), wait_delay_seconds)) time.sleep(wait_delay_seconds) - raise Exception('Restarting...') + raise Exception('Restarting...') # pylint: disable=broad-exception-raised def get_setting(name, **kwargs): value = os.environ.get(name) @@ -54,6 +63,7 @@ def get_setting(name, **kwargs): value = kwargs['settings'].pop(name, value) if value is not None: return value if 'default' in kwargs: return kwargs['default'] + # pylint: disable=broad-exception-raised raise Exception('Setting({:s}) not specified in environment or configuration'.format(str(name))) def get_env_var_name(service_name : ServiceNameEnum, env_var_group):