id of the CD (e.g. 'gutsy_i386')
"""
if cdtype is not None:
- remctl('control', machine.name, 'create',
- cdtype)
+ out, err = remctl('control', machine.name, 'create',
+ cdtype, err=True)
else:
- remctl('control', machine.name, 'create')
+ out, err = remctl('control', machine.name, 'create',
+ err=True)
+ if 'already exists' in out:
+ raise InvalidInput('action', 'create',
+ 'VM %s is already on' % machine.name)
+ elif err:
+ raise CodeError('"%s" on "control %s create %s'
+ % (err, machine.name, cdtype))
+ else:
+ raise CodeError('"%s" on "control %s create %s'
+ % (err, machine.name, cdtype))
def registerMachine(machine):
"""Register a machine to be controlled by the web interface"""
def commandResult(user, fields):
start_time = 0
- print >> sys.stderr, time.time()-start_time
machine = validation.testMachineId(user, fields.getfirst('machine_id'))
action = fields.getfirst('action')
cdrom = fields.getfirst('cdrom')
- print >> sys.stderr, time.time()-start_time
if cdrom is not None and not CDROM.get(cdrom):
raise CodeError("Invalid cdrom type '%s'" % cdrom)
if action not in ('Reboot', 'Power on', 'Power off', 'Shutdown',
raise CodeError('ERROR on remctl')
elif action == 'Delete VM':
deleteVM(machine)
- print >> sys.stderr, time.time()-start_time
d = dict(user=user,
command=action,