def test_yaml_defaults(self): yaml_test = """ --- # config defaults: ip: "192.168.2.111" user: name: "webtests" samba: 'Greendemo_WebTest' shell: /bin/bash group: name: 'nginx' id: 45 options: write_in_netposition: 0 vhosts: - name: 'webtest.greendemo.local' root: "/var/www/vhost/webtests/webtest.greendemo.local" ip: "192.168.2.106" """ yaml_result = yaml.load(yaml_test) vhosts = [] yaml_defaults = yaml_result.get('defaults', {}) if type(yaml_result.get('defaults', {})) is dict else {} for yaml_vhost in yaml_result['vhosts']: pprint.pprint(yaml_defaults) pprint.pprint(yaml_vhost) # da testare il merge dei dizionari #pprint.pprint(yaml_defaults) #pprint.pprint(dict(yaml_defaults, **yaml_vhost)) #pprint.pprint(dict(yaml_defaults.items() + yaml_vhost.items())) #pprint.pprint(dict(yaml_vhost.items() + yaml_defaults.items())) #yaml_defaults.update(yaml_vhost) #pprint.pprint(yaml_defaults.update(yaml_defaults)) vhosts.append(Vhost.yaml( dict(yaml_defaults.items() + yaml_vhost.items()) ) ) vhost = vhosts.pop() assert vhost.name == 'webtest.greendemo.local' assert vhost.root == "/var/www/vhost/webtests/webtest.greendemo.local" assert vhost.document_root == "/var/www/vhost/webtests/webtest.greendemo.local/htdocs" assert vhost.user.name == 'webtests' assert vhost.user.home == '/var/www/vhosts/webtests' assert vhost.user.samba == "Greendemo_WebTest" assert vhost.user.shell == "/bin/bash" assert vhost.user.group.name == "nginx" assert vhost.user.group.id == 45
os.makedirs(output_dir) try: stream = file(args.config_file, "r") # 'document.yaml' contains a single YAML document. except IOError as e: print "IO error, %s: %s " % (e.strerror, e.filename) exit() yaml_result = yaml.load(stream) vhosts = [] yaml_defaults = yaml_result.get("defaults", {}) if type(yaml_result.get("defaults", {})) is dict else {} for yaml_vhost in yaml_result["vhosts"]: vhosts.append(Vhost.yaml(dict(yaml_defaults.items() + yaml_vhost.items()))) # altre operazioni necessarie for vhost in vhosts: vhost.generate_strings(resource_path) print "PARSED: " for index, vhost in enumerate(vhosts): print "#" + unicode(index) + ":" + repr(vhost) # user print "Writing configurations..." config_filename = os.path.basename(os.path.splitext(args.config_file)[0])