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
예제 #2
0
    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])