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 Oct 22, 2024
1 parent 1d957a3 commit 2fd6215
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 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,19 @@ 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
raise ValueError(f"no teuthology config found, looked for: {paths}")


config = TeuthologyConfig(yaml_path=_get_config_path())

0 comments on commit 2fd6215

Please sign in to comment.