コード例 #1
0
def makedhcpd(dbconn):
    myips = getmyips()

    networks = []
    for [ip, netmask] in myips:
        networks.append(IP(ip).make_net(netmask))

    provnet = None

    installer = get_installer_ip(dbconn)
    domain = get_domain_name(dbconn)
    dns = get_dnsserver(dbconn)

    provip = installer

    for network in networks:
        if network.overlaps(provip):
            provnet = network
            break

    dbnet = dbconn.query(Network).filter_by(network=str(provnet.net())).first()
    print dbnet
    print domain

    dhcptmpl = Template(file=CONF_TMPL_DHCPD, searchList={"dns": dns, "domain": domain, "networks": [dbnet]})

    print str(dhcptmpl)
コード例 #2
0
ファイル: dbman.py プロジェクト: coldbloodx/leo-power-toy
    def __init_record(self):
        
        #make a session
        Session = sessionmaker(bind=self.engine)
        session = Session()

        
        myips = getmyips()

        pubnetwork  = IP(myips[0][0]).make_net(myips[0][1])
        provnetwork = IP(myips[1][0]).make_net(myips[1][1])

        provippool = []
        for ip in provnetwork:
            if ip == provnetwork.net() or ip == provnetwork.broadcast():
                continue
            provippool.append(ip)

        #print provippool[0]
        #print provippool[-1]
        
        #if len(myips) == 1:
        #    installer_provnetwork = myips[0][0]
        #elif len(myips) == 2:
        #    print "Please select installer provision ip:"
        #    for index, [ip, netmask] in enumerate(myips):
        #        print "%s) %s/%s" %(index, ip, netmask)

        #elif len(myips) > 2:
        #    print "print select installer provision ip:"

        #else:
        #    print "installer ip must has at lease one nic"
        #    sys.exit(1)

        #1. global table

        installer_pubnetwork = "192.168.2.188"
        installer_provnetwork = "192.168.9.188"

        #key, value, extra
        session.add_all([Global("installer", installer_provnetwork),
            Global("dnsserver", installer_provnetwork), Global("tftpserver", installer_provnetwork),
            Global("gateway", installer_provnetwork), Global("ntpserver", installer_provnetwork),
            Global("domain", "laworks.com")])
        session.commit();

        #2. os table
        #osname, major, minor, isoname
        ubuntu1204_alt = OS("ubuntu_alternate", "1204", "3", "filename")
        ubuntu1204_srv = OS("ubuntu_server", "1204", "3", "filename")
        rhel6u3 = OS("rhel6.3", "6", "3", "filename")
        winxp = OS("Winxp", "5","3", "filename")
        win7 = OS("Win7", "7","1", "filename")
        session.add_all([ubuntu1204_alt, ubuntu1204_srv, rhel6u3, winxp, win7])
        session.commit();

        #3. script table
        #scriptname
        installer_init = Script("script1")
        disked_init = Script("script2")
        diskless_init = Script("script3")
        dualboot_init = Script("script4")
        winxp_init = Script("script5")
        session.add_all([installer_init, disked_init, 
            disked_init, diskless_init, winxp_init])
        session.commit();

        #4. network table
        #network, netmask, nwtype, gateway, dns

        provnet = Network("192.168.9.0", "255.255.255.0", "192.168.9.255",
                NETTYPE_PROV, installer_provnetwork, installer_provnetwork, 
                provippool[0], provippool[-1], installer_provnetwork, "provnet")

        pubnet  = Network("192.168.2.0", "255.255.255.0", "192.168.2.255",
                NETTYPE_PUB,  installer_pubnetwork, installer_pubnetwork, "", "", "", "pubnet")

        session.add_all([provnet, pubnet])
        session.commit();

        #5. partschema table
        #schemaname
        disked_schema = PartSchema("disked")
        diskless_schema = PartSchema("diskless")
        dualboot_schema = PartSchema("dualboot")
        winxp_schema = PartSchema("winxp")
        session.add_all([disked_schema, diskless_schema, dualboot_schema, winxp_schema])
        session.commit();
        
        #6. nodegroup table
        #ngname, osid, typeid, partid
        installerng = NodeGroup("Installer", ubuntu1204_alt.osid, NGTYPE_INSTALLER,
                disked_schema.schemaid, "installer-###")
        installerng.networks.extend([provnet,pubnet])
        installerng.scripts.append(installer_init)

        diskedng = NodeGroup("Disked-CLI", ubuntu1204_alt.osid, NGTYPE_DISKED,
                disked_schema.schemaid, "uacli-###")
        diskedng.networks.extend([provnet])

        diskedng = NodeGroup("Disked-GUI", ubuntu1204_alt.osid, NGTYPE_DISKED,
                disked_schema.schemaid, "uagui-###")
        diskedng.networks.extend([provnet])

        disklessng = NodeGroup("Diskless-CLI", ubuntu1204_alt.osid, NGTYPE_DISKLESS,
                diskless_schema.schemaid, "uamemcli-###")
        disklessng.networks.extend([provnet])

        disklessng = NodeGroup("Diskless-GUI", ubuntu1204_alt.osid, NGTYPE_DISKLESS,
                diskless_schema.schemaid, "uamemgui-###")
        disklessng.networks.extend([provnet])

        dualbootng = NodeGroup("DualBoot-GUI", ubuntu1204_alt.osid, NGTYPE_DUALBOOT,
                dualboot_schema.schemaid, "dualboot-###")
        dualbootng.networks.extend([provnet])

        winxpng = NodeGroup("Winxp", winxp.osid, NGTYPE_WINXP,
                winxp_schema.schemaid, "winxp-###")
        winxpng.networks.extend([provnet])

        session.add_all([installerng, diskedng, disklessng, dualbootng, winxpng])
        session.commit();

        #7. node table
        #nodename, ngid, statusid 
        installernode = Node("installer-000", installerng.ngid, STATUS_READY)
        session.add_all([installernode])
        session.commit();

        #8. nic table
        #nicname, mac, ip, nodeid, netid
        installer_pub_nic = Nic("eth0", "11:22:33:44:55:66", installer_pubnetwork, 
                installernode.nid, pubnet.netid, NICTYPE_OTHER)
        installer_prov_nic =  Nic("eth1", "22:22:33:44:55:66", installer_provnetwork, 
                installernode.nid, provnet.netid, NICTYPE_BOOT)

        session.add_all([installer_pub_nic, installer_prov_nic])
        
        session.commit();