def test_render_vhost(self):
        vhost = Vhost(
                user=User(name="dev3.piquadro.local", password="******"),
                name="dev3.piquadro.local"
                )

        print vhost.render("templates\\vhost.tpl")
        assert vhost.render("templates\\vhost.tpl") == """
 def test_render_logrotate(self):
     vhost = Vhost(
             user=User(name="dev3.piquadro.local", password="******"),
             name="dev3.piquadro.local"
             )
     #path = os.path.abspath(__file__)
     # works only if pytest is launched from the project root
     assert vhost.render("templates\\logrotate.tpl") == "/var/www/vhosts/dev3.piquadro.local/logs/*log"
 def test_render_user(self):
     vhost = Vhost(
             user=User(name="dev3.piquadro.local", password="******"),
             name="dev3.piquadro.local"
             )
     #path = os.path.abspath(__file__)
     # works only if pytest is launched from the project root
     assert vhost.render("templates\\user.tpl") == "create:dev3.piquadro.local:test::48::/var/www/vhosts/dev3.piquadro.local:/sbin/nologin:::::"
 def test_render_samba(self):
     vhost = Vhost(
             user=User(
                 name="dev3.piquadro.local",
                 password="******",
                 samba="dev3_piquadro"),
             name="dev3.piquadro.local"
             )
     #path = os.path.abspath(__file__)
     # works only if pytest is launched from the project root
     assert vhost.render("templates\\samba.tpl") == """
    def test_render_castore(self):
        vhost = Vhost(
                user=User(
                    name="dev3.piquadro.local",
                    password="******",
                    samba="dev3_piquadro"),
                name="dev3.piquadro.local"
                )

        # works only if pytest is launched from the project root
        assert vhost.render("templates\\dns-castore.tpl") == \
"""dnscmd /zoneadd piquadro.local /secondary 192.168.2.100 piquadro.local.dns"""
    def test_render_giasone(self):
        vhost = Vhost(
                user=User(
                    name="dev3.piquadro.local",
                    password="******",
                    samba="dev3_piquadro"),
                name="dev3.piquadro.local"
                )

        # works only if pytest is launched from the project root
        assert vhost.render("templates\\dns-giasone.tpl") == \
"""dnscmd /ZoneAdd piquadro.local /Primary /file piquadro.local.dns
    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
예제 #8
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])