aboutsummaryrefslogtreecommitdiff
path: root/scripts/qemu.py
diff options
context:
space:
mode:
authorAmador Pahim <apahim@redhat.com>2017-09-01 13:28:20 +0200
committerEduardo Habkost <ehabkost@redhat.com>2017-09-15 20:12:00 -0300
commitdab91d9aa00e41ee680524e4f6e99a1e7fe12eb2 (patch)
treef772fd4392c191f02dbfc5fa2654470d6dd5d1ec /scripts/qemu.py
parent63e0ba55222476c8b96d8c45131c830e00a80eaa (diff)
downloadqemu-dab91d9aa00e41ee680524e4f6e99a1e7fe12eb2.zip
qemu-dab91d9aa00e41ee680524e4f6e99a1e7fe12eb2.tar.gz
qemu-dab91d9aa00e41ee680524e4f6e99a1e7fe12eb2.tar.bz2
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>
Diffstat (limited to 'scripts/qemu.py')
-rw-r--r--scripts/qemu.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/scripts/qemu.py b/scripts/qemu.py
index c9bcaaf..9440261 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -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()