Support setting paravm/hvm for off, but already created, VMs.
[invirt/packages/invirt-web.git] / code / main.py
index 9caf7c4..f1ff5ac 100755 (executable)
@@ -36,7 +36,8 @@ sys.path.append('/home/ecprice/.local/lib/python2.5/site-packages')
 
 import templates
 from Cheetah.Template import Template
-from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess
+import sipb_xen_database
+from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type
 import validation
 from webcommon import InvalidInput, CodeError, g
 import controls
@@ -71,6 +72,7 @@ def makeErrorPre(old, addition):
     else:
         return '<p>STDERR:</p><pre>' + str(addition) + '</pre>'
 
+Template.sipb_xen_database = sipb_xen_database
 Template.helppopup = staticmethod(helppopup)
 Template.err = None
 
@@ -97,8 +99,8 @@ class Defaults:
     disk = 4.0
     cdrom = ''
     name = ''
-    vmtype = 'hvm'
     def __init__(self, max_memory=None, max_disk=None, **kws):
+        self.type = Type.get('linux-hvm')
         if max_memory is not None:
             self.memory = min(self.memory, max_memory)
         if max_disk is not None:
@@ -379,6 +381,10 @@ def modifyDict(user, fields):
             memory = validation.validMemory(user, memory, machine, on=False)
             machine.memory = memory
 
+        vm_type = validation.validVmType(fields.getfirst('vmtype'))
+        if vm_type is not None:
+            machine.type = vm_type
+
         disksize = validation.testDisk(user, fields.getfirst('disk'))
         if disksize is not None:
             disksize = validation.validDisk(user, disksize, machine)
@@ -560,7 +566,7 @@ def infoDict(user, machine):
     checkpoint.checkpoint('Got mem')
     max_disk = validation.maxDisk(user, machine)
     defaults = Defaults()
-    for name in 'machine_id name administrator owner memory contact'.split():
+    for name in 'machine_id name administrator owner memory contact type'.split():
         setattr(defaults, name, getattr(machine, name))
     defaults.disk = "%0.2f" % (machine.disks[0].size/1024.)
     checkpoint.checkpoint('Got defaults')