import os import yaml import logging log = logging.getLogger(__name__) class Config(object): """ 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 = os.path.join(os.environ['HOME'], '.teuthology.yaml') defaults = { 'archive_base': '/var/lib/teuthworker/archive', 'automated_scheduling': False, 'ceph_git_base_url': 'https://github.com/ceph/', 'lock_server': 'http://teuthology.front.sepia.ceph.com/locker/lock', 'max_job_time': 259200, # 3 days 'results_server': 'http://paddles.front.sepia.ceph.com/', 'verify_host_keys': True, 'watchdog_interval': 600, } def __init__(self): self.load_files() def load_files(self): if os.path.exists(self.teuthology_yaml): self.__conf = yaml.safe_load(file(self.teuthology_yaml)) else: log.debug("%s not found", self.teuthology_yaml) self.__conf = {} def __getattr__(self, name): return self.__conf.get(name, self.defaults.get(name)) def __setattribute__(self, name, value): if name.endswith('__conf'): setattr(self, name, value) else: self.__conf[name] = value config = Config()