def parse(f): config = SafeConfigParser() config.read(f) parsed = {} sections = [ ("log", Log), ("state", State), ("uris", URIs), ("docker", Docker), ("docker.index", DockerIndex), ("containers.image", Image), ("hooks", Hooks), ("containers.options", Options), ] for key, cls in sections: try: parsed[key] = cls(**dict(config.items(key))) except: continue containers = {} if "containers.image" in parsed: containers["image"] = parsed["containers.image"] del parsed["containers.image"] if "containers.options" in parsed: containers["options"] = parsed["containers.options"] del parsed["containers.options"] if len(containers) > 0: parsed["containers"] = Containers(**containers) if "docker.index" in parsed: parsed["index"] = parsed["docker.index"] del parsed["docker.index"] return _Struct(**parsed)
def load_configuration(f=None, interactive=sys.stdout.isatty()): error = None defaults = _Struct(docker=Docker(), index=DockerIndex(), containers=Containers(), uris=URIs(), state=State(), log=Log( console=logging.DEBUG if interactive else None, syslog=logging.INFO if not interactive else None)) parsed = None try: f = f if f else path() if f: parsed = parse(f) except Exception as e: error = e finally: confs = defaults.merge(parsed) if parsed else defaults deimos.logger.initialize(**dict(confs.log.items())) if error: log.exception((("Error loading %s: " % f) if f else "") + str(error)) sys.exit(16) if parsed: log.info("Loaded configuration from %s" % f) for _, conf in parsed.items(): log.debug("Found: %r", conf) return confs
def load_configuration(f=None, interactive=sys.stdout.isatty()): error = None defaults = _Struct( docker=Docker(), index=DockerIndex(), containers=Containers(), uris=URIs(), state=State(), hooks=Hooks(), log=Log(console=(logging.DEBUG if interactive else None), syslog=(logging.INFO if not interactive else None)), ) parsed = None try: f = f if f else path() if f: parsed = parse(f) except Exception as e: error = e finally: confs = defaults.merge(parsed) if parsed else defaults deimos.logger.initialize(**dict(confs.log.items())) if error: pre = ("Error loading %s: " % f) if f else "" log.exception(pre + str(error)) sys.exit(16) if parsed: log.info("Loaded configuration from %s" % f) for _, conf in parsed.items(): log.debug("Found: %r", conf) return confs
def parse(f): config = SafeConfigParser() config.read(f) parsed = {} sections = [("log", Log), ("state", State), ("uris", URIs), ("docker", Docker), ("docker.index", DockerIndex), ("containers.image", Image), ("hooks", Hooks), ("containers.options", Options)] for key, cls in sections: try: parsed[key] = cls(**dict(config.items(key))) except: continue containers = {} if "containers.image" in parsed: containers["image"] = parsed["containers.image"] del parsed["containers.image"] if "containers.options" in parsed: containers["options"] = parsed["containers.options"] del parsed["containers.options"] if len(containers) > 0: parsed["containers"] = Containers(**containers) if "docker.index" in parsed: parsed["index"] = parsed["docker.index"] del parsed["docker.index"] return _Struct(**parsed)