Mercurial > hg > Applications > virsh-wrapper
view newvm.py @ 21:13646e64d98b
fix indent
author | taiki <taiki@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 05 Apr 2014 04:15:57 +0900 |
parents | 07ef2fc111a2 |
children | daa7279b0d78 |
line wrap: on
line source
#!/usr/bin/python # Used to create a vm from template # By Curu Wong contact: prinbra(at)gmail(dot)com import sys,os from optparse import OptionParser from virtinst.util import * if sys.version_info < (2,5): import lxml.etree as ET else: import xml.etree.ElementTree as ET # vm_name should be # students/e10/e105730/01 # teachers/kono/01 # bad name returns 1 def ie_check_name(name): m=re.match('^students/e(\d\d)/e(\d\d)5\d\d\d/0[1-4]$',name) if m is not None: if m.group(1)==m.group(2): return 0 else: return 1 elif re.match('^teachers/[-a-z0-9]+/0[1-4]$',name): return 0 else: return 1 # make necessary sub directory # /etc/libvirt/qemu/teachers # /var/log/libvirt/qemu/teachers # /var/run/libvirt/qemu/teachers def ie_mkdir1(name): if not os.path.exists(name): os.makedirs(name); def ie_mkdir(name): m=re.match('^(students/e\d\d/e\d\d5\d\d\d)/0[1-4]$',name) if m is None: m=re.match('^(teachers/[-a-z0-9]+)/0[1-4]$',name) if m is not None: dir=m.group(1) ie_mkdir1('/media/fcs/'+dir) ie_mkdir1('/usr/local/etc/libvirt/qemu/'+dir) ie_mkdir1('/usr/local/var/log/libvirt/qemu/'+dir) ie_mkdir1('/usr/local/var/run/libvirt/qemu/'+dir) ie_mkdir1('/usr/local/var/lib/libvirt/qemu/'+dir) os.system("/bin/chown "+os.getlogin()+" /media/fcs/"+dir) parser = OptionParser(); parser.add_option("-n", "--name", dest="name", help="VM name"); parser.add_option("-c", "--config", dest="config", help="Template VM XML config file"); (options, args) = parser.parse_args(); if not options.name or not options.config: print "Usage %s -n name -c template_xml" % sys.argv[0] sys.exit(1) config = ET.parse(options.config) vm_name = options.name print(options.config) if ie_check_name(vm_name): print "Bad vmname %s. Try students/e11/e115711/01 or teachers/kono/02" % vm_name sys.exit(1) ie_mkdir(vm_name) name = config.find('name') name.text = vm_name uuid = config.find('uuid') uuid.text = uuidToString(randomUUID()) mac = config.find('devices/interface/mac') mac.attrib['address'] = randomMAC(type='qemu') disk = config.find('devices/disk/source') disk_old = disk.attrib['file'] disk_path = os.path.dirname(disk_old) disk_ext = os.path.splitext(disk_old)[1] disk_image = disk_path + '/' + vm_name + disk_ext disk.attrib['file'] = disk_image if os.path.exists(vm_name + '.xml'): print "File %s.xml exists, abort" % vm_name sys.exit(1) config.write('/usr/local/etc/libvirt/qemu/' + vm_name + '.xml') print "Created vm config file %s.xml" % vm_name print "Use disk image %s, you must create it from the template disk: %s" % (disk_image, disk_old) print "Done!"