From 216eae05ddcce0bd9842aae4a534b9adbf3df30b Mon Sep 17 00:00:00 2001 From: Peter Dahlberg Date: Fri, 5 Apr 2013 02:55:01 +0200 Subject: [PATCH] add VMHelper.py --- mc-vm-manager/VMHelper.py | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 mc-vm-manager/VMHelper.py diff --git a/mc-vm-manager/VMHelper.py b/mc-vm-manager/VMHelper.py new file mode 100644 index 0000000..3c86e6d --- /dev/null +++ b/mc-vm-manager/VMHelper.py @@ -0,0 +1,61 @@ +class VMHelper: + + def createArguments(self, config): + args = "" + if ('cpu' in config): + args += " -cpu " + config['cpu'] + if ('smp' in config): + args += " -smp " + str(config['smp']) + if ('memory' in config): + args += " -m " + str(config['memory']) + if ('disk' in config): + disk = config['disk'] + if ('file' in disk): + args += " -drive file=" + disk['file'] + if ('hw' in disk): + args += ",if=" + disk['hw'] + if ('cdrom' in config): + args += " -cdrom " + config['cdrom'] + if ('network' in config): + net = config['network'] + args += " -net nic,vlan=1" + if ('mac' in net): + args += ",macaddr=" + net['mac'] + if ('hw' in net): + args += ",model=" + net['hw'] + args += " -net tap,vlan=1" + if ('dev' in net): + args += ",ifname=" + net['dev'] + args += ",script=no" + if ('vnc' in config): + vnc = config['vnc'] + if ('display' in vnc): + args += " -vnc 127.0.0.1:" + str(vnc['display']) + if ('keyboard' in config): + args += " -k " + config['keyboard'] + if ('kernel' in config): + args += " -kernel " + config['kernel'] + if ('append' in config): + args += " -append \"" + config['append'] + "\"" + return args + + def setupNetwork(self, config): + foo = "" + if ('network' in config): + net = config['network'] + if ('dev' in net): + foo += "tunctl -d " + net['dev'] + "\n" + foo += "ip link set dev " + net['dev'] +" up\n" + foo += "ip addr add dev " + net['dev'] +" 0.0.0.0\n" + if ('ip' in net): + for ip in net['ip']: + foo += "ip route add " + ip + " dev " + net['dev'] + "\n" + # TODO create extra chain + foo += "iptables -A FORWARD -i " + net['dev'] + " -s " + ip + " -j ACCEPT\n" + foo += "iptables -A FORWARD -i " + net['dev'] + " -j REJECT --reject-with icmp-admin-prohibited\n" + if ('ipv6' in net): + for ipv6 in net['ipv6']: + foo += "ip -6 route add " + ipv6 + " dev " + net['dev'] + "\n" + foo += "ip6tables -A FORWARD -i " + net['dev'] + " -s " + ipv6 + " -j ACCEPT\n" + foo += "iptables -A FORWARD -i " + net['dev'] + " -j REJECT --reject-with icmp6-adm-prohibited\n" + return foo