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)
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();