From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612025159957.6250021587773; Mon, 13 Nov 2017 14:27:05 -0800 (PST) Received: from localhost ([::1]:56557 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENBl-000425-83 for importer@patchew.org; Mon, 13 Nov 2017 17:26:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51634) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEN9t-0002rh-Te for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEN9s-0000D8-DW for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:49 -0500 Received: from mx1.redhat.com ([209.132.183.28]:15313) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEN9s-0000Ct-7U for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:48 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5B259C04AC4B for ; Mon, 13 Nov 2017 22:24:47 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id DE42F7BB4F; Mon, 13 Nov 2017 22:24:45 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:51 +0100 Message-Id: <20171113222358.30967-2-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 13 Nov 2017 22:24:47 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 1/8] qemu.py: remove unused import X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Removing 'import sys' as it's not used anywhere. Signed-off-by: Amador Pahim --- scripts/qemu.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 9bfdf6d37d..65d9ad688c 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -15,7 +15,6 @@ import errno import logging import os -import sys import subprocess import qmp.qmp =20 --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612021387957.2501509130384; Mon, 13 Nov 2017 14:27:01 -0800 (PST) Received: from localhost ([::1]:56558 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENBq-00045d-LJ for importer@patchew.org; Mon, 13 Nov 2017 17:26:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51662) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEN9v-0002s0-RJ for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEN9u-0000E6-IC for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:51 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34556) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEN9u-0000Dj-8w for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:50 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7FA06C053FD9 for ; Mon, 13 Nov 2017 22:24:49 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id D11D57BB4F; Mon, 13 Nov 2017 22:24:47 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:52 +0100 Message-Id: <20171113222358.30967-3-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 13 Nov 2017 22:24:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 2/8] qemu.py: better control of created files X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To launch a VM, we need to create basically two files: the monitor socket (if it's a UNIX socket) and the qemu log file. For the qemu log file, we currently just open the path, which will create the file if it does not exist or overwrite the file if it does exist. For the monitor socket, if it already exists, we are currently removing it, even if it's not created by us. This patch moves to pre_launch() the responsibility to create a temporary directory to host the files so we can remove the whole directory on post_shutdown(). Signed-off-by: Amador Pahim --- scripts/qemu.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 65d9ad688c..c14d6cc8d4 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -17,6 +17,8 @@ import logging import os import subprocess import qmp.qmp +import shutil +import tempfile =20 =20 LOG =3D logging.getLogger(__name__) @@ -72,10 +74,10 @@ class QEMUMachine(object): wrapper =3D [] if name is None: name =3D "qemu-%d" % os.getpid() - if monitor_address is None: - monitor_address =3D os.path.join(test_dir, name + "-monitor.so= ck") + self._name =3D name self._monitor_address =3D monitor_address - self._qemu_log_path =3D os.path.join(test_dir, name + ".log") + self._qemu_log_path =3D None + self._qemu_log_fd =3D None self._popen =3D None self._binary =3D binary self._args =3D list(args) # Force copy args in case we modify = them @@ -85,6 +87,8 @@ class QEMUMachine(object): self._socket_scm_helper =3D socket_scm_helper self._qmp =3D None self._qemu_full_args =3D None + self._test_dir =3D test_dir + self._temp_dir =3D None =20 # just in case logging wasn't configured by the main script: logging.basicConfig() @@ -136,13 +140,13 @@ class QEMUMachine(object): =20 @staticmethod def _remove_if_exists(path): - '''Remove file object at path if it exists''' + '''Remove file object at path if it exists''' try: os.remove(path) except OSError as exception: if exception.errno =3D=3D errno.ENOENT: return - raise + raise =20 def is_running(self): return self._popen is not None and self._popen.returncode is None @@ -173,6 +177,13 @@ class QEMUMachine(object): '-display', 'none', '-vga', 'none'] =20 def _pre_launch(self): + self._temp_dir =3D tempfile.mkdtemp(dir=3Dself._test_dir) + if not isinstance(self._monitor_address, tuple): + self._monitor_address =3D os.path.join(self._temp_dir, + self._name + "-monitor.so= ck") + self._qemu_log_path =3D os.path.join(self._temp_dir, self._name + = ".log") + self._qemu_log_fd =3D open(self._qemu_log_path, 'wb') + self._qmp =3D qmp.qmp.QEMUMonitorProtocol(self._monitor_address, server=3DTrue) =20 @@ -180,23 +191,28 @@ class QEMUMachine(object): self._qmp.accept() =20 def _post_shutdown(self): - if not isinstance(self._monitor_address, tuple): - self._remove_if_exists(self._monitor_address) - self._remove_if_exists(self._qemu_log_path) + if self._qemu_log_fd is not None: + self._qemu_log_fd.close() + self._qemu_log_fd =3D None + + self._qemu_log_path =3D None + + if self._temp_dir is not None: + shutil.rmtree(self._temp_dir) + self._temp_dir =3D None =20 def launch(self): '''Launch the VM and establish a QMP connection''' self._iolog =3D None self._qemu_full_args =3D None devnull =3D open(os.path.devnull, 'rb') - qemulog =3D open(self._qemu_log_path, 'wb') try: self._pre_launch() self._qemu_full_args =3D (self._wrapper + [self._binary] + self._base_args() + self._args) self._popen =3D subprocess.Popen(self._qemu_full_args, stdin=3Ddevnull, - stdout=3Dqemulog, + stdout=3Dself._qemu_log_fd, stderr=3Dsubprocess.STDOUT, shell=3DFalse) self._post_launch() --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612021328667.6047771703278; Mon, 13 Nov 2017 14:27:01 -0800 (PST) Received: from localhost ([::1]:56559 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENBq-00046u-UA for importer@patchew.org; Mon, 13 Nov 2017 17:26:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEN9x-0002tP-A1 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEN9w-0000FH-DB for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33318) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEN9w-0000Ei-7u for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:52 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7441F5D9F9 for ; Mon, 13 Nov 2017 22:24:51 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id DCB997BB4F; Mon, 13 Nov 2017 22:24:49 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:53 +0100 Message-Id: <20171113222358.30967-4-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 13 Nov 2017 22:24:51 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 3/8] qemu.py: refactor launch() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is just an refactor to separate the exception handler from the actual launch procedure, improving the readability and making future maintenances in this piece of code easier. Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index c14d6cc8d4..813930301c 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -202,20 +202,14 @@ class QEMUMachine(object): self._temp_dir =3D None =20 def launch(self): - '''Launch the VM and establish a QMP connection''' + """ + Launch the VM and make sure we cleanup and expose the + command line/output in case of exception + """ self._iolog =3D None self._qemu_full_args =3D None - devnull =3D open(os.path.devnull, 'rb') try: - self._pre_launch() - self._qemu_full_args =3D (self._wrapper + [self._binary] + - self._base_args() + self._args) - self._popen =3D subprocess.Popen(self._qemu_full_args, - stdin=3Ddevnull, - stdout=3Dself._qemu_log_fd, - stderr=3Dsubprocess.STDOUT, - shell=3DFalse) - self._post_launch() + self._launch() except: if self.is_running(): self._popen.kill() @@ -230,6 +224,19 @@ class QEMUMachine(object): LOG.debug('Output: %r', self._iolog) raise =20 + def _launch(self): + '''Launch the VM and establish a QMP connection''' + devnull =3D open(os.path.devnull, 'rb') + self._pre_launch() + self._qemu_full_args =3D (self._wrapper + [self._binary] + + self._base_args() + self._args) + self._popen =3D subprocess.Popen(self._qemu_full_args, + stdin=3Ddevnull, + stdout=3Dself._qemu_log_fd, + stderr=3Dsubprocess.STDOUT, + shell=3DFalse) + self._post_launch() + def wait(self): '''Wait for the VM to power off''' self._popen.wait() --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151061215205611.812604379415802; Mon, 13 Nov 2017 14:29:12 -0800 (PST) Received: from localhost ([::1]:56563 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENE2-0006qK-7s for importer@patchew.org; Mon, 13 Nov 2017 17:29:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51708) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEN9z-0002vD-3v for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEN9y-0000GB-9M for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46332) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEN9y-0000Fi-39 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:54 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4C483642 for ; Mon, 13 Nov 2017 22:24:53 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF8E67BB4F; Mon, 13 Nov 2017 22:24:51 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:54 +0100 Message-Id: <20171113222358.30967-5-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 13 Nov 2017 22:24:53 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 4/8] qemu.py: always cleanup on shutdown() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently we only cleanup on shutdown() if the VM is running. To make sure we will always cleanup, this patch makes the self._load_io_log() and the self._post_shutdown() to always be called on shutdown(), regardless the VM running state. Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 813930301c..93f08129ad 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -162,8 +162,9 @@ class QEMUMachine(object): return self._popen.pid =20 def _load_io_log(self): - with open(self._qemu_log_path, "r") as iolog: - self._iolog =3D iolog.read() + if self._qemu_log_path is not None: + with open(self._qemu_log_path, "r") as iolog: + self._iolog =3D iolog.read() =20 def _base_args(self): if isinstance(self._monitor_address, tuple): @@ -254,8 +255,8 @@ class QEMUMachine(object): self._popen.kill() self._popen.wait() =20 - self._load_io_log() - self._post_shutdown() + self._load_io_log() + self._post_shutdown() =20 exitcode =3D self.exitcode() if exitcode is not None and exitcode < 0: --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612240040258.457300549328; Mon, 13 Nov 2017 14:30:40 -0800 (PST) Received: from localhost ([::1]:56573 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENFR-00084k-9j for importer@patchew.org; Mon, 13 Nov 2017 17:30:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51728) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENA2-0002yH-Aq for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eENA0-0000HH-L3 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46354) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eENA0-0000H2-Fe for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:56 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A3D9137E6E for ; Mon, 13 Nov 2017 22:24:55 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id A94147BB4F; Mon, 13 Nov 2017 22:24:53 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:55 +0100 Message-Id: <20171113222358.30967-6-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 13 Nov 2017 22:24:55 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 5/8] qemu.py: use poll() instead of 'returncode' X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The 'returncode' Popen attribute is not guaranteed to be updated. It actually depends on a call to either poll(), wait() or communicate(). On the other hand, poll() will: "Check if child process has terminated. Set and return returncode attribute." Let's use the poll() to check whether the process is running and to get the updated process exit code, when the process is finished. Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 93f08129ad..7224f88526 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -149,12 +149,12 @@ class QEMUMachine(object): raise =20 def is_running(self): - return self._popen is not None and self._popen.returncode is None + return self._popen is not None and self._popen.poll() is None =20 def exitcode(self): if self._popen is None: return None - return self._popen.returncode + return self._popen.poll() =20 def get_pid(self): if not self.is_running(): --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612161392846.1403891325419; Mon, 13 Nov 2017 14:29:21 -0800 (PST) Received: from localhost ([::1]:56565 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENE5-0006sk-KD for importer@patchew.org; Mon, 13 Nov 2017 17:29:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51745) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENA3-0002zW-G1 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eENA2-0000Hz-KX for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:59 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60070) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eENA2-0000HY-Dd for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:58 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 988D168693 for ; Mon, 13 Nov 2017 22:24:57 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 118197BB4F; Mon, 13 Nov 2017 22:24:55 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:56 +0100 Message-Id: <20171113222358.30967-7-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 13 Nov 2017 22:24:57 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 6/8] qemu.py: cleanup redundant calls in launch() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that shutdown() is guaranteed to always execute self._load_io_log() and self._post_shutdown(), their calls in 'except' became redundant and we can safely replace it by a call to shutdown(). Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 7224f88526..df2fca9e71 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -212,11 +212,7 @@ class QEMUMachine(object): try: self._launch() except: - if self.is_running(): - self._popen.kill() - self._popen.wait() - self._load_io_log() - self._post_shutdown() + self.shutdown() =20 LOG.debug('Error launching VM') if self._qemu_full_args: --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612160999513.4942681964421; Mon, 13 Nov 2017 14:29:20 -0800 (PST) Received: from localhost ([::1]:56564 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENE5-0006sa-5X for importer@patchew.org; Mon, 13 Nov 2017 17:29:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51834) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENAS-0003NW-A1 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eENAP-0000Sq-5R for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:24 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43840) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eENAO-0000SW-PA for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:20 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0A3B3FEB4 for ; Mon, 13 Nov 2017 22:25:20 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 011027BB4F; Mon, 13 Nov 2017 22:24:57 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:57 +0100 Message-Id: <20171113222358.30967-8-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 13 Nov 2017 22:25:20 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 7/8] qemu.py: launch vm only if it's not running X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If we allow launching VM again we will loose track of the first launched VM. Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index df2fca9e71..ab172c3670 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -207,6 +207,9 @@ class QEMUMachine(object): Launch the VM and make sure we cleanup and expose the command line/output in case of exception """ + if self.is_running(): + raise QEMUMachineError('VM already running') + self._iolog =3D None self._qemu_full_args =3D None try: --=20 2.13.6 From nobody Wed Oct 29 22:55:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510612304167323.27616881947165; Mon, 13 Nov 2017 14:31:44 -0800 (PST) Received: from localhost ([::1]:56575 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENGX-0000BX-Dy for importer@patchew.org; Mon, 13 Nov 2017 17:31:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51871) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENAc-0003Un-G3 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eENAZ-0000Vz-Cn for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:34 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33580) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eENAZ-0000Vb-6p for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:25:31 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 156DA5D9F9 for ; Mon, 13 Nov 2017 22:25:30 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-25.brq.redhat.com [10.40.204.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 82DF788E14; Mon, 13 Nov 2017 22:25:20 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 23:23:58 +0100 Message-Id: <20171113222358.30967-9-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 13 Nov 2017 22:25:30 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v10 8/8] qemu.py: don't launch again before shutdown() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amador Pahim , famz@redhat.com, ehabkost@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If a VM is launched, files are created and a cleanup is required before a new launch. This cleanup is executed by shutdown(), so shutdown() must be called even if the VM is manually terminated (i.e. using kill). This patch creates a control to make sure launch() will not be executed again if shutdown() is not called after the previous launch(). Signed-off-by: Amador Pahim --- scripts/qemu.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index ab172c3670..c1b0895e94 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -89,6 +89,7 @@ class QEMUMachine(object): self._qemu_full_args =3D None self._test_dir =3D test_dir self._temp_dir =3D None + self._launched =3D False =20 # just in case logging wasn't configured by the main script: logging.basicConfig() @@ -210,10 +211,14 @@ class QEMUMachine(object): if self.is_running(): raise QEMUMachineError('VM already running') =20 + if self._launched: + raise QEMUMachineError('Shutdown pending after previous launch= ') + self._iolog =3D None self._qemu_full_args =3D None try: self._launch() + self._launched =3D True except: self.shutdown() =20 @@ -266,6 +271,8 @@ class QEMUMachine(object): command =3D '' LOG.warn(msg, exitcode, command) =20 + self._launched =3D False + def qmp(self, cmd, conv_keys=3DTrue, **args): '''Invoke a QMP command and return the response dict''' qmp_args =3D dict() --=20 2.13.6