Skip to content

Commit

Permalink
config: allow reading teuthology config from env var location
Browse files Browse the repository at this point in the history
Allow changing the default "user" location of the teuthology
configuration yaml using the (optional) TEUTHOLOGY_CONFIG environment
variable. This change aids my effort to run a customized local
teuthology environment.

Signed-off-by: John Mulligan <[email protected]>
  • Loading branch information
phlogistonjohn committed Dec 17, 2024
1 parent 1d957a3 commit d9274fc
Showing 1 changed file with 23 additions and 7 deletions.
30 changes: 23 additions & 7 deletions teuthology/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
from collections import MutableMapping


# Configuration constants
_SYSTEM_CONFIG_PATH = '/etc/teuthology.yaml'
_USER_CONFIG_PATH = '~/.teuthology.yaml'
_ALT_PATH_ENV_VAR = 'TEUTHOLOGY_CONFIG'


def init_logging():
log = logging.getLogger(__name__)
return log
Expand Down Expand Up @@ -135,9 +141,9 @@ class TeuthologyConfig(YamlConfig):
"""
This class is intended to unify teuthology's many configuration files and
objects. Currently it serves as a convenient interface to
~/.teuthology.yaml and nothing else.
~/.teuthology.yaml or equivalent.
"""
yaml_path = os.path.join(os.path.expanduser('~/.teuthology.yaml'))
yaml_path = _USER_CONFIG_PATH # yaml_path is updated in _get_config_path
_defaults = {
'archive_base': '/home/teuthworker/archive',
'archive_upload': None,
Expand Down Expand Up @@ -285,10 +291,20 @@ def set_config_attr(obj):


def _get_config_path():
system_config_path = '/etc/teuthology.yaml'
if not os.path.exists(TeuthologyConfig.yaml_path) and \
os.path.exists(system_config_path):
return system_config_path
return TeuthologyConfig.yaml_path
"""Look for a teuthology config yaml and return it's path.
Raises ValueError if no config yaml can be found.
"""
paths = [
os.path.join(os.path.expanduser(_USER_CONFIG_PATH)),
_SYSTEM_CONFIG_PATH,
]
if _ALT_PATH_ENV_VAR in os.environ:
paths.insert(0, os.path.expanduser(os.environ[_ALT_PATH_ENV_VAR]))
for path in paths:
if os.path.exists(path):
return path
log.warning(f"no teuthology config found, looked for: {paths}")
return None


config = TeuthologyConfig(yaml_path=_get_config_path())

0 comments on commit d9274fc

Please sign in to comment.