import sys
import time
import re
+import cache_acls
# ... and stolen from xend/uuid.py
def randomUUID():
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))
def registerMachine(machine):
"""Register a machine to be controlled by the web interface"""
nic.hostname = name
ctx.current.save(nic)
ctx.current.save(disk)
+ cache_acls.refreshMachine(machine)
transaction.commit()
except:
transaction.rollback()
ctx.current.save(nic)
for disk in machine.disks:
ctx.current.delete(disk)
+ for access in machine.acl:
+ ctx.current.delete(access)
ctx.current.delete(machine)
transaction.commit()
except:
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,