- try:
- if cdtype is not None:
- out = remctl('control', machine.name, 'create',
- cdtype)
- else:
- out = remctl('control', machine.name, 'create')
- except CodeError, e:
- if 'already running' in e.message:
- raise InvalidInput('action', 'create',
- 'VM %s is already on' % machine.name)
- else:
+ if cdtype is not None:
+ out, err = remctl('control', machine.name, 'create',
+ cdtype, err=True)
+ else:
+ out, err = remctl('control', machine.name, 'create',
+ err=True)
+ if 'already running' in err:
+ raise InvalidInput('action', 'create',
+ 'VM %s is already on' % machine.name)
+ elif 'I need' in err and 'but dom0_min_mem is' in err:
+ raise InvalidInput('action', 'create',
+ "We're really sorry, but our servers don't have enough capacity to create your VM right now. Try creating a VM with less RAM, or shutting down another VM of yours. Feel free to ask %s if you would like to know when we plan to have more resources." % (config.contact))
+ elif ('Booting VMs is temporarily disabled for maintenance, sorry' in err or
+ 'LVM operations are temporarily disabled for maintenance, sorry' in err):
+ raise InvalidInput('action', 'create',
+ err)
+ elif "Boot loader didn't return any data!" in err:
+ raise InvalidInput('action', 'create',
+ "The ParaVM bootloader was unable to find an operating system to boot. Do you have GRUB configured correctly?")
+ elif 'xc_dom_find_loader: no loader found' in err:
+ raise InvalidInput('action', 'create',
+ "The ParaVM bootloader was unable to boot the kernel you have configured. Are you sure this kernel is capable of running as a Xen ParaVM guest?")
+ elif err: