from invirt.config import structs as config
from invirt.database import Machine, Disk, Type, NIC, CDROM, session, meta
from invirt.config import structs as config
from invirt.database import Machine, Disk, Type, NIC, CDROM, session, meta
+def remctl(*args, **kwargs):
+ return gen_remctl(config.remote.hostname,
+ principal='daemon/'+config.web.hostname,
+ *args, **kwargs)
+
def lvcreate(machine, disk):
"""Create a single disk for a machine"""
remctl('web', 'lvcreate', machine.name,
def lvcreate(machine, disk):
"""Create a single disk for a machine"""
remctl('web', 'lvcreate', machine.name,
remctl('control', machine.name, 'install',
'dist=%s' % autoinstall.distribution,
'mirror=%s' % autoinstall.mirror,
remctl('control', machine.name, 'install',
'dist=%s' % autoinstall.distribution,
'mirror=%s' % autoinstall.mirror,
'imagesize=%s' % imagesize)
def lvcopy(machine_orig_name, machine, rootpw):
'imagesize=%s' % imagesize)
def lvcopy(machine_orig_name, machine, rootpw):
machine.contact = contact
machine.uuid = uuidToString(randomUUID())
machine.boot_off_cd = True
machine.contact = contact
machine.uuid = uuidToString(randomUUID())
machine.boot_off_cd = True
- if autoinstall:
- lvinstall(machine, autoinstall)
- else:
- # tell it to boot with cdrom
- bootMachine(machine, cdrom)
+ try:
+ if autoinstall:
+ lvinstall(machine, autoinstall)
+ else:
+ # tell it to boot with cdrom
+ bootMachine(machine, cdrom)
+ except CodeError, e:
+ deleteVM(machine)
+ raise
def deleteVM(machine):
"""Delete a VM."""
remctl('control', machine.name, 'destroy', err=True)
def deleteVM(machine):
"""Delete a VM."""
remctl('control', machine.name, 'destroy', err=True)