qemu.py: include debug information on launch error

When launching a VM, if an exception happens and the VM is not
initiated, it might be useful to see the qemu command line and
the qemu command output.

This patch creates that message. Notice that self._iolog needs to be
cleaned up in the beginning of the launch() to make sure we will not
expose the qemu log from a previous launch if the current one fails.

Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20170901112829.2571-6-apahim@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Amador Pahim 2017-09-01 13:28:21 +02:00 committed by Eduardo Habkost
parent dab91d9aa0
commit b92a0011b1

View File

@ -187,6 +187,7 @@ class QEMUMachine(object):
def launch(self): def launch(self):
'''Launch the VM and establish a QMP connection''' '''Launch the VM and establish a QMP connection'''
self._iolog = None
self._qemu_full_args = None self._qemu_full_args = None
devnull = open(os.path.devnull, 'rb') devnull = open(os.path.devnull, 'rb')
qemulog = open(self._qemu_log_path, 'wb') qemulog = open(self._qemu_log_path, 'wb')
@ -206,6 +207,12 @@ class QEMUMachine(object):
self._popen.wait() self._popen.wait()
self._load_io_log() self._load_io_log()
self._post_shutdown() self._post_shutdown()
LOG.debug('Error launching VM')
if self._qemu_full_args:
LOG.debug('Command: %r', ' '.join(self._qemu_full_args))
if self._iolog:
LOG.debug('Output: %r', self._iolog)
raise raise
def shutdown(self): def shutdown(self):