X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/2dee827ad9edd2f7521ac10f62c72956df918e7d..1da92cb8c769d7e9cdad595ffebe0ffa80b545d6:/templates/main.py diff --git a/templates/main.py b/templates/main.py index e5dae26..8e4c303 100755 --- a/templates/main.py +++ b/templates/main.py @@ -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])