Commit dab91d9a authored by Amador Pahim's avatar Amador Pahim Committed by Eduardo Habkost

qemu.py: improve message on negative exit code

The current message shows 'self._args', which contains only part of the
options used in the Qemu command line.

This patch makes the qemu full args list an instance variable and then
uses it in the negative exit code message.

Message was moved outside the 'if is_running' block to make sure it will
be logged if the VM finishes before the call to shutdown().
Signed-off-by: 's avatarAmador Pahim <apahim@redhat.com>
Message-Id: <20170901112829.2571-5-apahim@redhat.com>
[ehabkost: removed superfluous parenthesis]
Reviewed-by: 's avatarFam Zheng <famz@redhat.com>
Signed-off-by: 's avatarEduardo Habkost <ehabkost@redhat.com>
parent 63e0ba55
......@@ -87,6 +87,7 @@ class QEMUMachine(object):
self._socket_scm_helper = socket_scm_helper
self._debug = debug
self._qmp = None
self._qemu_full_args = None
def __enter__(self):
return self
......@@ -186,13 +187,16 @@ class QEMUMachine(object):
def launch(self):
'''Launch the VM and establish a QMP connection'''
self._qemu_full_args = None
devnull = open(os.path.devnull, 'rb')
qemulog = open(self._qemu_log_path, 'wb')
try:
self._pre_launch()
args = (self._wrapper + [self._binary] + self._base_args() +
self._args)
self._popen = subprocess.Popen(args, stdin=devnull, stdout=qemulog,
self._qemu_full_args = self._wrapper + [self._binary] +
self._base_args() + self._args
self._popen = subprocess.Popen(self._qemu_full_args,
stdin=devnull,
stdout=qemulog,
stderr=subprocess.STDOUT,
shell=False)
self._post_launch()
......@@ -212,14 +216,20 @@ class QEMUMachine(object):
self._qmp.close()
except:
self._popen.kill()
self._popen.wait()
exitcode = self._popen.wait()
if exitcode < 0:
LOG.warn('qemu received signal %i: %s', -exitcode,
' '.join(self._args))
self._load_io_log()
self._post_shutdown()
exitcode = self.exitcode()
if exitcode is not None and exitcode < 0:
msg = 'qemu received signal %i: %s'
if self._qemu_full_args:
command = ' '.join(self._qemu_full_args)
else:
command = ''
LOG.warn(msg, exitcode, command)
def qmp(self, cmd, conv_keys=True, **args):
'''Invoke a QMP command and return the response dict'''
qmp_args = dict()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment