- cmd = '{0} {1} {2} {3} {4} -hda {5} {6} {7} {8} {9}'.format(
- self.__QEMU_BIN, self._qemu_opt.get('smp'), mem, ssh_fwd,
- self._qemu_opt.get('options'),
- self._qemu_opt.get('disk_image'), qmp, serial, qga, graphic)
- (ret_code, _, stderr) = self._ssh.exec_command_sudo(cmd, timeout=300)
- if int(ret_code) != 0:
- logger.debug('QEMU start failed {0}'.format(stderr))
- raise RuntimeError('QEMU start failed on {0}'.format(
- self._node['host']))
- logger.trace('QEMU running')
- # Wait until VM boot
- self._wait_until_vm_boot()
+ cmd = '{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}'.format(
+ bin_path, self._qemu_opt.get('smp'), mem, ssh_fwd,
+ self._qemu_opt.get('options'), drive, qmp, serial, qga, graphic,
+ pid)
+ try:
+ (ret_code, _, _) = self._ssh.exec_command_sudo(cmd, timeout=300)
+ if int(ret_code) != 0:
+ raise RuntimeError('QEMU start failed on {0}'.format(
+ self._node['host']))
+ # Wait until VM boot
+ self._wait_until_vm_boot()
+ except (RuntimeError, SSHTimeout):
+ self.qemu_kill_all()
+ self.qemu_clear_socks()
+ raise
+ logger.trace('QEMU started successfully.')