]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
qemu.py: improve message on negative exit code
authorAmador Pahim <apahim@redhat.com>
Fri, 1 Sep 2017 11:28:20 +0000 (13:28 +0200)
committerEduardo Habkost <ehabkost@redhat.com>
Fri, 15 Sep 2017 23:12:00 +0000 (20:12 -0300)
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>
scripts/qemu.py

index c9bcaafe41851a2582e312b6af974b8584800025..9440261ac34fd9eb645ca70bde03953a7d902b38 100644 (file)
@@ -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()