def _wait_until_vm_boot(self, timeout=60):
"""Wait until QEMU VM is booted.
def _wait_until_vm_boot(self, timeout=60):
"""Wait until QEMU VM is booted.
+ out = self._qemu_qga_flush()
+ except ValueError:
+ logger.trace('QGA qga flush unexpected output {}'.format(out))
+ # Empty output - VM not booted yet
+ if not out:
+ sleep(5)
+ else:
+ break
+ while True:
+ if time() - start > timeout:
+ raise RuntimeError('timeout, VM {0} not booted on {1}'.format(
+ self._qemu_opt['disk_image'], self._node['host']))
+ out = None
+ try:
out = self._qemu_qga_exec('guest-ping')
except ValueError:
logger.trace('QGA guest-ping unexpected output {}'.format(out))
out = self._qemu_qga_exec('guest-ping')
except ValueError:
logger.trace('QGA guest-ping unexpected output {}'.format(out))
self._qemu_bin, self._qemu_opt.get('smp'), mem, ssh_fwd,
self._qemu_opt.get('options'),
drive, qmp, serial, qga, graphic, pid)
self._qemu_bin, self._qemu_opt.get('smp'), mem, ssh_fwd,
self._qemu_opt.get('options'),
drive, qmp, serial, qga, graphic, pid)
- (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()
except (RuntimeError, SSHTimeout):
self.qemu_kill_all()
self.qemu_clear_socks()
raise
self._wait_until_vm_boot()
except (RuntimeError, SSHTimeout):
self.qemu_kill_all()
self.qemu_clear_socks()
raise