def cleanup(): print("Stopping processes..") for f in os.listdir(config.run_dir): if re.search(".pid$", f): check_pidfile(os.path.join(config.run_dir, f)) create_dir(config.run_dir, True) # create_dir(env.cmd, True) print("Reseting NAT..") cmd = """ iptables -t nat -D POSTROUTING -s {0} -o {1} -j MASQUERADE echo 0 > /proc/sys/net/ipv4/ip_forward iptables -D INPUT -i {2} -j ACCEPT iptables -D FORWARD -i {2} -j ACCEPT iptables -D OUTPUT -o {2} -j ACCEPT """.format(config.subnet, get_default_route()[1], config.bridge) runcmd(cmd) print("Deleting bridge %s.." % config.bridge) cmd = """ ip link show {0} && ip addr del {1}/{2} dev {0} sleep 1 ip link set {0} down sleep 1 brctl delbr {0} """.format(config.bridge, config.gateway, config.net.prefixlen) runcmd(cmd)
def cleanup(args, env): print("Cleaning up bridge, NAT, resolv.conf...") for f in os.listdir(env.run): if re.search(".pid$", f): check_pidfile(os.path.join(env.run, f)) create_dir(env.run, True) # create_dir(env.cmd, True) cmd = """ iptables -t nat -D POSTROUTING -s {0} -o {1} -j MASQUERADE echo 0 > /proc/sys/net/ipv4/ip_forward iptables -D INPUT -i {2} -j ACCEPT iptables -D FORWARD -i {2} -j ACCEPT iptables -D OUTPUT -o {2} -j ACCEPT """.format(env.subnet, get_default_route()[1], env.bridge) os.system(cmd) cmd = """ ip link show {0} && ip addr del {1}/{2} dev {0} sleep 1 ip link set {0} down sleep 1 brctl delbr {0} """.format(env.bridge, env.gateway, env.net.prefixlen) os.system(cmd)
def _launch_vm(name, mac): check_pidfile("%s/%s.pid" % (config.run_dir, name)) disk0 = os.path.join(config.vcluster_dir, "disk0") disk1 = os.path.join(config.vcluster_dir, "disk1") print("Launching cluster node {0}..".format(name)) os.environ["BRIDGE"] = config.bridge if config.vnc: random_vnc_port = random.randint(1, 1000) graphics = "-vnc :{0}".format(random_vnc_port) else: random_vnc_port = None graphics = "-nographic" disks = """ \ -drive file={0},format=raw,if=none,id=drive0,snapshot=on \ -device virtio-blk-pci,drive=drive0,id=virtio-blk-pci.0 \ -drive file={1},format=raw,if=none,id=drive1,snapshot=on \ -device virtio-blk-pci,drive=drive1,id=virtio-blk-pci.1 \ """.format(disk0, disk1) ifup = os.path.join(config.lib_dir, "ifup") nics = """ \ -netdev tap,id=netdev0,script={0},downscript=no \ -device virtio-net-pci,mac={1},netdev=netdev0,id=virtio-net-pci.0 \ -netdev tap,id=netdev1,script={0},downscript=no \ -device virtio-net-pci,mac={2},netdev=netdev1,id=virtio-net-pci.1 \ -netdev tap,id=netdev2,script={0},downscript=no \ -device virtio-net-pci,mac={3},netdev=netdev2,id=virtio-net-pci.2 \ """.format(ifup, mac, random_mac(), random_mac()) kernel = """ \ --kernel /boot/vmlinuz-3.2.0-4-amd64 \ --initrd /boot/initrd.img-3.2.0-4-amd64 \ --append "root=/dev/vda1 ro console=ttyS0,38400" \ """ cmd = """ /usr/bin/kvm -name {0} -pidfile {1}/{0}.pid -balloon virtio -daemonize \ -monitor unix:{1}/{0}.monitor,server,nowait -usbdevice tablet -boot c \ {2} \ {3} \ -m {4} -smp {5} {6} {7} \ """.format(name, config.run_dir, disks, nics, config.mem, config.smp, graphics, kernel) runcmd(cmd) return random_vnc_port
def launch_vm(args, env, hostname, mac): check_pidfile("%s/%s.pid" % (env.run, hostname)) print("Launching cluster node {0}..".format(hostname)) os.environ["BRIDGE"] = env.bridge if args.vnc: graphics = "-vnc :{0}".format(random.randint(1, 1000)) else: graphics = "-nographic" disks = """ \ -drive file={0}/{1}.disk0,format=raw,if=none,id=drive0,snapshot=on \ -device virtio-blk-pci,drive=drive0,id=virtio-blk-pci.0 \ """.format(env.images, env.os) if ast.literal_eval(env.create_extra_disk): disks += """ \ -drive file={0}/{1}.disk1,format=raw,if=none,id=drive1,snapshot=on \ -device virtio-blk-pci,drive=drive1,id=virtio-blk-pci.1 \ """.format(env.images, env.os) ifup = env.lib + "/ifup" nics = """ \ -netdev tap,id=netdev0,script={0},downscript=no \ -device virtio-net-pci,mac={1},netdev=netdev0,id=virtio-net-pci.0 \ -netdev tap,id=netdev1,script={0},downscript=no \ -device virtio-net-pci,mac={2},netdev=netdev1,id=virtio-net-pci.1 \ -netdev tap,id=netdev2,script={0},downscript=no \ -device virtio-net-pci,mac={3},netdev=netdev2,id=virtio-net-pci.2 \ """.format(ifup, mac, random_mac(), random_mac()) cmd = """ /usr/bin/kvm -name {0} -pidfile {1}/{0}.pid -balloon virtio -daemonize \ -monitor unix:{1}/{0}.monitor,server,nowait -usbdevice tablet -boot c \ {2} \ {3} \ -m {4} -smp {5} {6} \ """.format(hostname, env.run, disks, nics, args.mem, args.smp, graphics) print cmd os.system(cmd)
def dnsmasq(): check_pidfile(config.run_dir + "/dnsmasq.pid") cmd = "dnsmasq --pid-file={0}/dnsmasq.pid --conf-file={1}/conf-file"\ .format(config.run_dir, config.dns_dir) runcmd(cmd)
def dnsmasq(args, env): check_pidfile(env.run + "/dnsmasq.pid") cmd = "dnsmasq --pid-file={0}/dnsmasq.pid --conf-file={1}/conf-file"\ .format(env.run, env.dns) os.system(cmd)