mirror of https://gitee.com/openkylin/qemu.git
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: Amador Pahim <apahim@redhat.com> Message-Id: <20170901112829.2571-5-apahim@redhat.com> [ehabkost: removed superfluous parenthesis] Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
63e0ba5522
commit
dab91d9aa0
|
@ -87,6 +87,7 @@ def __init__(self, binary, args=None, wrapper=None, name=None,
|
|||
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 @@ def _post_shutdown(self):
|
|||
|
||||
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 @@ def shutdown(self):
|
|||
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()
|
||||
|
|
Loading…
Reference in New Issue