X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/eabe84bd3f3ea514893ec700d598a06c2418f37e..b9e068a6e15e1726faa7c688244642b2dfebff09:/code/controls.py diff --git a/code/controls.py b/code/controls.py index 09367e2..c9193cb 100644 --- a/code/controls.py +++ b/code/controls.py @@ -110,7 +110,7 @@ def createVm(username, state, owner, contact, name, description, memory, disksiz machine.uuid = uuidToString(randomUUID()) machine.boot_off_cd = True machine.type = machine_type - session.save_or_update(machine) + session.add(machine) disk = Disk(machine=machine, guest_device_name='hda', size=disksize) nic = NIC.query.filter_by(machine_id=None).filter_by(reusable=True).first() @@ -119,8 +119,8 @@ def createVm(username, state, owner, contact, name, description, memory, disksiz "Contact %s." % config.contact) nic.machine = machine nic.hostname = name - session.save_or_update(nic) - session.save_or_update(disk) + session.add(nic) + session.add(disk) cache_acls.refreshMachine(machine) makeDisks(machine) session.commit() @@ -212,7 +212,7 @@ def deleteVM(machine): for nic in machine.nics: nic.machine_id = None nic.hostname = None - session.save_or_update(nic) + session.add(nic) for disk in machine.disks: session.delete(disk) session.delete(machine) @@ -223,12 +223,13 @@ def deleteVM(machine): def commandResult(username, state, command_name, machine_id, fields): start_time = 0 + result = None machine = validation.Validate(username, state, machine_id=machine_id).machine action = command_name cdrom = fields.get('cdrom') or None if cdrom is not None and not CDROM.query.filter_by(cdrom_id=cdrom).one(): raise CodeError("Invalid cdrom type '%s'" % cdrom) - if action not in "reboot create destroy shutdown delete".split(" "): + if action not in "reboot create destroy shutdown delete renumber".split(" "): raise CodeError("Invalid action '%s'" % action) if action == 'reboot': if cdrom is not None: @@ -274,10 +275,14 @@ def commandResult(username, state, command_name, machine_id, fields): raise CodeError('ERROR on remctl') elif action == 'delete': deleteVM(machine) + elif action == 'renumber': + result = remctl('control', machine.name, 'renumber') d = dict(user=username, command=action, machine=machine) + if result: + d['result'] = result return d def resizeDisk(machine_name, disk_name, new_size):