Example #1
0
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)
Example #2
0
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
Example #3
0
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
Example #4
0
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)