Make not modifying the disks work.
[invirt/packages/invirt-web.git] / templates / main.py
index e5dae26..8e4c303 100755 (executable)
@@ -34,7 +34,7 @@ class InvalidInput(MyException):
     the select box).
     """
     def __init__(self, err_field, err_value, expl=None):
-        super(InvalidInput, self).__init__(expl)
+        MyException.__init__(self, expl)
         self.err_field = err_field
         self.err_value = err_value
 
@@ -353,7 +353,7 @@ def create(user, fields):
     name = fields.getfirst('name')
     if not validMachineName(name):
         raise InvalidInput('name', name)
-    name = user.username + '_' + name.lower()
+    name = name.lower()
 
     if Machine.get_by(name=name):
         raise InvalidInput('name', name,
@@ -583,7 +583,12 @@ def testDisk(user, disksize, machine=None):
     return disksize
 
 def testName(user, name, machine=None):
-    return name
+    if Machine.select_by(name=name) == []:
+        return name
+    if name == machine.name:
+        return name
+    raise InvalidInput('name', name,
+                       "Already taken")
 
 def testHostname(user, hostname, machine):
     for nic in machine.nics:
@@ -607,23 +612,27 @@ def modify(user, fields):
         contact = testContact(user, fields.getfirst('contact'))
         hostname = testHostname(owner, fields.getfirst('hostname'),
                             machine)
-        name = testName(user, fields.getfirst('name'))
+        name = testName(user, fields.getfirst('name'), machine)
         oldname = machine.name
+        command="modify"
         olddisk = {}
 
         memory = fields.getfirst('memory')
         if memory is not None:
             memory = validMemory(user, memory, machine)
+        else:
+            memory = machine.memory
         if memory != machine.memory:
             machine.memory = memory
 
         disksize = testDisk(user, fields.getfirst('disk'))
         if disksize is not None:
             disksize = validDisk(user, disksize, machine)
-        
+        else:
+            disksize = machine.disks[0].size
         for disk in machine.disks:
-            disk.size = disksize
             olddisk[disk.guest_device_name] = disk.size
+            disk.size = disksize
             ctx.current.save(disk)
         
         # XXX all NICs get same hostname on change?  Interface doesn't support more.
@@ -640,6 +649,7 @@ def modify(user, fields):
         transaction.commit()
     except:
         transaction.rollback()
+        raise
     remctl("web", "moveregister", oldname, name)
     for disk in machine.disks:
         # XXX all disks get the same size on change?  Interface doesn't support more.
@@ -648,7 +658,7 @@ def modify(user, fields):
         if oldname != name:
             remctl("web", "lvrename", oldname, disk.guest_device_name, name)
     d = dict(user=user,
-             command="modify",
+             command=command,
              machine=machine)
     return Template(file="command.tmpl", searchList=[d, global_dict])