From nobody Sun Apr 28 11:00:06 2024 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 1516654411831606.5034225623781; Mon, 22 Jan 2018 12:53:31 -0800 (PST) Received: from localhost ([::1]:37209 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj5v-0006LN-3u for importer@patchew.org; Mon, 22 Jan 2018 15:53:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3R-0004bZ-GS for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3Q-0000XW-GQ for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:57 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56528) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3Q-0000Wq-7M for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:56 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 44BD71A407E for ; Mon, 22 Jan 2018 20:50:55 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 75B715D9CB; Mon, 22 Jan 2018 20:50:51 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:28 +0100 Message-Id: <20180122205033.24893-2-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 22 Jan 2018 20:50: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 v12 1/6] 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 | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 9bfdf6d37d..453a67250a 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -18,6 +18,8 @@ import os import sys import subprocess import qmp.qmp +import shutil +import tempfile =20 =20 LOG =3D logging.getLogger(__name__) @@ -73,10 +75,11 @@ 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._vm_monitor =3D None + self._qemu_log_path =3D None + self._qemu_log_file =3D None self._popen =3D None self._binary =3D binary self._args =3D list(args) # Force copy args in case we modify = them @@ -86,6 +89,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() @@ -168,36 +173,50 @@ class QEMUMachine(object): self._monitor_address[0], self._monitor_address[1]) else: - moncdev =3D 'socket,id=3Dmon,path=3D%s' % self._monitor_address + moncdev =3D 'socket,id=3Dmon,path=3D%s' % self._vm_monitor return ['-chardev', moncdev, '-mon', 'chardev=3Dmon,mode=3Dcontrol', '-display', 'none', '-vga', 'none'] =20 def _pre_launch(self): - self._qmp =3D qmp.qmp.QEMUMonitorProtocol(self._monitor_address, + self._temp_dir =3D tempfile.mkdtemp(dir=3Dself._test_dir) + if self._monitor_address is not None: + self._vm_monitor =3D self._monitor_address + else: + self._vm_monitor =3D os.path.join(self._temp_dir, + self._name + "-monitor.sock") + self._qemu_log_path =3D os.path.join(self._temp_dir, self._name + = ".log") + self._qemu_log_file =3D open(self._qemu_log_path, 'wb') + + self._qmp =3D qmp.qmp.QEMUMonitorProtocol(self._vm_monitor, server=3DTrue) =20 def _post_launch(self): 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_file is not None: + self._qemu_log_file.close() + self._qemu_log_file =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_file, stderr=3Dsubprocess.STDOUT, shell=3DFalse) self._post_launch() --=20 2.14.3 From nobody Sun Apr 28 11:00:06 2024 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 1516654378019617.492411344336; Mon, 22 Jan 2018 12:52:58 -0800 (PST) Received: from localhost ([::1]:37207 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj5N-0005oV-9R for importer@patchew.org; Mon, 22 Jan 2018 15:52:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36286) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3S-0004cJ-Pa for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3R-0000YP-Th for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57700) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3R-0000Xp-N4 for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:57 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D012C76521 for ; Mon, 22 Jan 2018 20:50:56 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 917E55D9CB; Mon, 22 Jan 2018 20:50:55 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:29 +0100 Message-Id: <20180122205033.24893-3-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 22 Jan 2018 20:50: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 v12 2/6] 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 Reviewed-by: Eduardo Habkost 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 453a67250a..0c690499be 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -206,20 +206,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_file, - stderr=3Dsubprocess.STDOUT, - shell=3DFalse) - self._post_launch() + self._launch() except: if self.is_running(): self._popen.kill() @@ -234,6 +228,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_file, + stderr=3Dsubprocess.STDOUT, + shell=3DFalse) + self._post_launch() + def wait(self): '''Wait for the VM to power off''' self._popen.wait() --=20 2.14.3 From nobody Sun Apr 28 11:00:06 2024 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 1516654526156454.589320675091; Mon, 22 Jan 2018 12:55:26 -0800 (PST) Received: from localhost ([::1]:37267 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj7d-00084H-5J for importer@patchew.org; Mon, 22 Jan 2018 15:55:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36301) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3U-0004da-AW for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3T-0000Zt-Fj for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:00 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47442) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3T-0000Z8-9Q for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:50:59 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6674719D222 for ; Mon, 22 Jan 2018 20:50:58 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 26D0B5D9CB; Mon, 22 Jan 2018 20:50:56 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:30 +0100 Message-Id: <20180122205033.24893-4-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 22 Jan 2018 20:50:58 +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 v12 3/6] 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 Reviewed-by: Eduardo Habkost 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 0c690499be..d6661870ab 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -164,8 +164,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): @@ -258,8 +259,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.14.3 From nobody Sun Apr 28 11:00:06 2024 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 1516654383573941.1161757447243; Mon, 22 Jan 2018 12:53:03 -0800 (PST) Received: from localhost ([::1]:37208 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj5S-0005tP-SW for importer@patchew.org; Mon, 22 Jan 2018 15:53:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36317) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3W-0004fX-Ck for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3V-0000bK-KA for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:02 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45702) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3V-0000ap-Du for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:01 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8297B4DD7C for ; Mon, 22 Jan 2018 20:51:00 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id B12E95D9CB; Mon, 22 Jan 2018 20:50:58 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:31 +0100 Message-Id: <20180122205033.24893-5-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 22 Jan 2018 20:51:00 +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 v12 4/6] 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 eviewed-by: Eduardo Habkost 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 d6661870ab..874ac2e424 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -151,12 +151,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.14.3 From nobody Sun Apr 28 11:00:06 2024 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 1516654543589166.91926165651853; Mon, 22 Jan 2018 12:55:43 -0800 (PST) Received: from localhost ([::1]:37278 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj82-00004t-Rm for importer@patchew.org; Mon, 22 Jan 2018 15:55:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36334) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3a-0004iS-91 for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3X-0000d2-4s for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:06 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33772) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3W-0000bz-V3 for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:03 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 166A77E42F for ; Mon, 22 Jan 2018 20:51:02 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF74F5D9CB; Mon, 22 Jan 2018 20:51:00 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:32 +0100 Message-Id: <20180122205033.24893-6-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 22 Jan 2018 20:51:02 +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 v12 5/6] 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 Reviewed-by: Eduardo Habkost 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 874ac2e424..42a3fa5251 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -216,11 +216,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.14.3 From nobody Sun Apr 28 11:00:06 2024 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 1516654525775940.949939880621; Mon, 22 Jan 2018 12:55:25 -0800 (PST) Received: from localhost ([::1]:37270 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj7g-00089m-Fv for importer@patchew.org; Mon, 22 Jan 2018 15:55:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edj3a-0004iU-9U for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edj3Y-0000eP-Of for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:06 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33782) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1edj3Y-0000dn-Ht for qemu-devel@nongnu.org; Mon, 22 Jan 2018 15:51:04 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A01DB7E420 for ; Mon, 22 Jan 2018 20:51:03 +0000 (UTC) Received: from t460p.pahim.org.com (unknown [10.40.205.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 632515D9CB; Mon, 22 Jan 2018 20:51:02 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Mon, 22 Jan 2018 21:50:33 +0100 Message-Id: <20180122205033.24893-7-apahim@redhat.com> In-Reply-To: <20180122205033.24893-1-apahim@redhat.com> References: <20180122205033.24893-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 22 Jan 2018 20:51:03 +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 v12 6/6] 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index 42a3fa5251..6c80edfd04 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -91,6 +91,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() @@ -211,10 +212,15 @@ class QEMUMachine(object): Launch the VM and make sure we cleanup and expose the command line/output in case of exception """ + + if self._launched: + raise QEMUMachineError('VM already launched') + self._iolog =3D None self._qemu_full_args =3D None try: self._launch() + self._launched =3D True except: self.shutdown() =20 @@ -267,6 +273,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.14.3