From nobody Wed Oct 29 22:39:44 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 1510609403198241.42649283411356; Mon, 13 Nov 2017 13:43:23 -0800 (PST) Received: from localhost ([::1]:56428 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMVY-0004b6-2s for importer@patchew.org; Mon, 13 Nov 2017 16:43:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33759) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMU3-00030G-IT for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMU0-00043w-1z for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58400) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMTz-00043k-Rz for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:31 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E2256C01A69F for ; Mon, 13 Nov 2017 21:41:30 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 18992649B3; Mon, 13 Nov 2017 21:41:28 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:38 +0100 Message-Id: <20171113213945.20049-2-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 13 Nov 2017 21:41: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 v9 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:39:44 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 1510609404369427.12777968024454; Mon, 13 Nov 2017 13:43:24 -0800 (PST) Received: from localhost ([::1]:56427 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMVY-0004b3-7R for importer@patchew.org; Mon, 13 Nov 2017 16:43:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33758) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMU3-00030F-IV for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMU2-00044j-Gm for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33041) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMU2-00044O-7g for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:34 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6004461B8F for ; Mon, 13 Nov 2017 21:41:33 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9019389F34; Mon, 13 Nov 2017 21:41:31 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:39 +0100 Message-Id: <20171113213945.20049-3-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 13 Nov 2017 21:41:33 +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 v9 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_0 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 | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 65d9ad688c..58f00bdd64 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() @@ -134,16 +138,6 @@ class QEMUMachine(object): =20 return proc.returncode =20 - @staticmethod - def _remove_if_exists(path): - '''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 - def is_running(self): return self._popen is not None and self._popen.returncode is None =20 @@ -173,6 +167,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 +181,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:39:44 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 1510609521163471.0993307960148; Mon, 13 Nov 2017 13:45:21 -0800 (PST) Received: from localhost ([::1]:56435 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMXg-0006ID-7W for importer@patchew.org; Mon, 13 Nov 2017 16:45:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33787) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMU5-00030n-S7 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMU5-000460-03 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:37 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55538) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMU4-00045d-Q5 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:36 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E40985D5E9 for ; Mon, 13 Nov 2017 21:41:35 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id E7284649B3; Mon, 13 Nov 2017 21:41:33 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:40 +0100 Message-Id: <20171113213945.20049-4-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 13 Nov 2017 21:41:35 +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 v9 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_0 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 58f00bdd64..8a1c97d964 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -192,20 +192,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() @@ -220,6 +214,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:39:44 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 1510609631563181.10036970386795; Mon, 13 Nov 2017 13:47:11 -0800 (PST) Received: from localhost ([::1]:56447 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMZQ-0007jd-Nu for importer@patchew.org; Mon, 13 Nov 2017 16:47:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33805) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMU8-00034N-GP for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMU7-00046s-P6 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58482) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMU7-00046a-IR for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:39 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A7038C049D66 for ; Mon, 13 Nov 2017 21:41:38 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7B67E649B3; Mon, 13 Nov 2017 21:41:36 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:41 +0100 Message-Id: <20171113213945.20049-5-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 13 Nov 2017 21:41:38 +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 v9 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 8a1c97d964..310522cf48 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -152,8 +152,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): @@ -244,8 +245,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:39:44 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 1510609631565187.65880388963922; Mon, 13 Nov 2017 13:47:11 -0800 (PST) Received: from localhost ([::1]:56448 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMZQ-0007jt-Id for importer@patchew.org; Mon, 13 Nov 2017 16:47:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33962) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMUN-0003qL-05 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMUI-0004Cp-4n for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47740) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMUH-0004CO-VW for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:50 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2C1DC2C9708 for ; Mon, 13 Nov 2017 21:41:49 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 41BC5649B3; Mon, 13 Nov 2017 21:41:38 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:42 +0100 Message-Id: <20171113213945.20049-6-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 13 Nov 2017 21:41: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 v9 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 310522cf48..1eb0889ce5 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -139,12 +139,12 @@ class QEMUMachine(object): return proc.returncode =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:39:44 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 1510609422388941.6758274251276; Mon, 13 Nov 2017 13:43:42 -0800 (PST) Received: from localhost ([::1]:56429 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMW0-0004w4-IO for importer@patchew.org; Mon, 13 Nov 2017 16:43:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33963) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMUN-0003qM-03 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMUK-0004EA-KT for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47834) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMUK-0004Df-Et for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:52 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8EA98FC7D3 for ; Mon, 13 Nov 2017 21:41:51 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id AE658649B3; Mon, 13 Nov 2017 21:41:49 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:43 +0100 Message-Id: <20171113213945.20049-7-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 13 Nov 2017 21:41: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 v9 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 1eb0889ce5..ed9fed58ed 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -202,11 +202,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:39:44 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 1510609744577528.2947202706418; Mon, 13 Nov 2017 13:49:04 -0800 (PST) Received: from localhost ([::1]:56452 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMbC-0000PN-Mj for importer@patchew.org; Mon, 13 Nov 2017 16:48:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33987) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMUO-0003uK-MF for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMUN-0004FN-SP for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:56 -0500 Received: from mx1.redhat.com ([209.132.183.28]:11260) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMUN-0004F8-MQ for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:55 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CF89B8B135 for ; Mon, 13 Nov 2017 21:41:54 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2A342649B3; Mon, 13 Nov 2017 21:41:51 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:44 +0100 Message-Id: <20171113213945.20049-8-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 13 Nov 2017 21:41:54 +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 v9 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 ed9fed58ed..7303952328 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -197,6 +197,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:39:44 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 1510609754567288.6474323800546; Mon, 13 Nov 2017 13:49:14 -0800 (PST) Received: from localhost ([::1]:56451 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMbC-0000PK-DH for importer@patchew.org; Mon, 13 Nov 2017 16:48:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34010) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEMUQ-00041v-Mb for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:42:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEMUP-0004GC-Rj for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:29309) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEMUP-0004Fq-Ke for qemu-devel@nongnu.org; Mon, 13 Nov 2017 16:41:57 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BD2526A7CA for ; Mon, 13 Nov 2017 21:41:56 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 37766649B3; Mon, 13 Nov 2017 21:41:55 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 13 Nov 2017 22:39:45 +0100 Message-Id: <20171113213945.20049-9-apahim@redhat.com> In-Reply-To: <20171113213945.20049-1-apahim@redhat.com> References: <20171113213945.20049-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 13 Nov 2017 21:41:56 +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 v9 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_6 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 7303952328..c615f3075d 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() @@ -200,10 +201,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 @@ -256,6 +261,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