27
def dict_merge(onto, source):
28
target = deepcopy(onto)
29
for (key, value) in source.items():
30
if key in target and isinstance(target[key], dict) and isinstance(value, dict):
31
target[key] = dict_merge(target[key], value)
26
37
def init_logging(filename, debug):
27
38
"""Set up logging handlers to write messages to stdout and a file"""
28
39
log.setLevel(logging.DEBUG)
452
463
def load_deployment(config, deployment):
457
464
if deployment not in config.keys():
458
465
log.error("deployment %s not found.", deployment)
459
466
display_deploys(config)
462
if 'series' in config[deployment]:
463
series = config[deployment]['series']
465
if 'inherits' in config[deployment]:
469
deploy_config = config[deployment]
470
if 'inherits' in deploy_config:
466
471
cur = config[deployment]
480
485
configs.insert(0, base)
481
486
configs.append(config[deployment])
483
for config in configs:
484
if 'series' in config:
485
series = config['series']
486
if 'overrides' in config:
487
for k, v in config['overrides'].iteritems():
489
if 'services' in config:
490
for k, v in config['services'].iteritems():
495
charms[k]['branch'] = v['branch']
497
for opt, value in v['options'].iteritems():
498
charms[k]['options'][opt] = value
499
if 'relations' in config:
500
rels = relations_json_to_tuples(config['relations'])
501
for w, rs in rels.iteritems():
503
[relations[w].append(r) for r in rs]
488
deploy_config = reduce(dict_merge, configs)
490
series = deploy_config.get('series')
491
charms = deploy_config.get('services',{})
492
overrides = deploy_config.get('overrides',{})
493
if 'relations' in deploy_config:
494
relations = relations_json_to_tuples(deploy_config["relations"])
507
series = config[deployment]['series']
508
charms = config[deployment]['services']
509
if 'relations' in config[deployment]:
510
relations = relations_json_to_tuples(config[deployment]["relations"])
512
498
return (series, charms, relations, overrides)