From nobody Tue Apr 30 14:34:35 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 1510655124594142.21796179184037; Tue, 14 Nov 2017 02:25:24 -0800 (PST) Received: from localhost ([::1]:58666 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYOy-0000wD-Mj for importer@patchew.org; Tue, 14 Nov 2017 05:25:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNY-0008OB-K1 for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNV-00039M-GF for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46804) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNV-00038c-9l for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:37 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7D1F649039; Tue, 14 Nov 2017 10:23:36 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id 99E5093539; Tue, 14 Nov 2017 10:23:34 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:39 +0100 Message-Id: <20171114102246.22221-2-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 14 Nov 2017 10:23:36 +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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 Tue Apr 30 14:34:35 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 15106552380801020.4999504909897; Tue, 14 Nov 2017 02:27:18 -0800 (PST) Received: from localhost ([::1]:58677 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYQx-0002qw-9G for importer@patchew.org; Tue, 14 Nov 2017 05:27:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51980) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNd-0008Vr-La for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNX-0003Bx-St for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52546) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNX-0003Ax-Kc for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:39 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D31A7C04AC4B; Tue, 14 Nov 2017 10:23:38 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF78493539; Tue, 14 Nov 2017 10:23:36 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:40 +0100 Message-Id: <20171114102246.22221-3-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 14 Nov 2017 10:23: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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 65d9ad688c..d5b1cde044 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_file =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() @@ -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_file =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_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.13.6 From nobody Tue Apr 30 14:34:35 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 1510655339020467.6900023887988; Tue, 14 Nov 2017 02:28:59 -0800 (PST) Received: from localhost ([::1]:58682 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYSb-00052E-8W for importer@patchew.org; Tue, 14 Nov 2017 05:28:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51944) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNb-0008UF-EX for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNa-0003F4-DG for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:43 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34224) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNa-0003E2-7C for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:42 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 67B0876546; Tue, 14 Nov 2017 10:23:41 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id 332E193539; Tue, 14 Nov 2017 10:23:39 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:41 +0100 Message-Id: <20171114102246.22221-4-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 14 Nov 2017 10:23:41 +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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 Reviewed-by: Eduardo Habkost --- scripts/qemu.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index d5b1cde044..28aa3712c7 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_file, - 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_file, + 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 Tue Apr 30 14:34:35 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 1510655519343512.4082208764689; Tue, 14 Nov 2017 02:31:59 -0800 (PST) Received: from localhost ([::1]:58697 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYVI-0006v2-J4 for importer@patchew.org; Tue, 14 Nov 2017 05:31:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51978) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNd-0008Vo-KH for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNc-0003HD-Nc for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNc-0003GQ-DV for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:44 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8F3C97EA95; Tue, 14 Nov 2017 10:23:43 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id C368A94B27; Tue, 14 Nov 2017 10:23:41 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:42 +0100 Message-Id: <20171114102246.22221-5-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 14 Nov 2017 10:23:43 +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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 Reviewed-by: Eduardo Habkost --- scripts/qemu.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 28aa3712c7..7bd10b1a1d 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 Tue Apr 30 14:34:35 2024 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 (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510655433509958.0265471187158; Tue, 14 Nov 2017 02:30:33 -0800 (PST) Received: from localhost ([::1]:58688 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYTq-0005wz-KQ for importer@patchew.org; Tue, 14 Nov 2017 05:30:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNh-000088-VU for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNe-0003In-Q9 for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:49 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45064) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNe-0003I9-Jv for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:46 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CA4A581DE2; Tue, 14 Nov 2017 10:23:45 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id E78F993539; Tue, 14 Nov 2017 10:23:43 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:43 +0100 Message-Id: <20171114102246.22221-6-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 14 Nov 2017 10:23:45 +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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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" 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 Reviewed-by: Eduardo Habkost --- scripts/qemu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index 7bd10b1a1d..d3824a7a0b 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 Tue Apr 30 14:34:35 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 1510655139040873.0889812429233; Tue, 14 Nov 2017 02:25:39 -0800 (PST) Received: from localhost ([::1]:58669 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYPM-0001Ex-8i for importer@patchew.org; Tue, 14 Nov 2017 05:25:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52054) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNl-0000BV-Gy for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNk-0003Nx-MI for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48564) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNk-0003NV-Fo for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:52 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 898C77EA97; Tue, 14 Nov 2017 10:23:51 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id 227D094B22; Tue, 14 Nov 2017 10:23:45 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:44 +0100 Message-Id: <20171114102246.22221-7-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 14 Nov 2017 10:23: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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 Reviewed-by: Eduardo Habkost --- scripts/qemu.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index d3824a7a0b..305d7bd098 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 Tue Apr 30 14:34:35 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 1510655575799274.9063603246916; Tue, 14 Nov 2017 02:32:55 -0800 (PST) Received: from localhost ([::1]:58700 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYWS-00005g-0Q for importer@patchew.org; Tue, 14 Nov 2017 05:32:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52082) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNn-0000Ez-IB for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNm-0003P7-Pr for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48580) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNm-0003Ol-KM for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:54 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C92C97EA8A; Tue, 14 Nov 2017 10:23:53 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id E42A193539; Tue, 14 Nov 2017 10:23:51 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:45 +0100 Message-Id: <20171114102246.22221-8-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 14 Nov 2017 10:23: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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 305d7bd098..0b0b61be39 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 Tue Apr 30 14:34:35 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 1510655260339143.336485917632; Tue, 14 Nov 2017 02:27:40 -0800 (PST) Received: from localhost ([::1]:58678 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYRJ-0003gC-GI for importer@patchew.org; Tue, 14 Nov 2017 05:27:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEYNr-0000IT-2I for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEYNp-0003QM-0U for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:59 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46900) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEYNo-0003Q0-QN for qemu-devel@nongnu.org; Tue, 14 Nov 2017 05:23:56 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0E7B8FC7B3; Tue, 14 Nov 2017 10:23:56 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-191.brq.redhat.com [10.40.204.191]) by smtp.corp.redhat.com (Postfix) with ESMTP id 232DB93539; Tue, 14 Nov 2017 10:23:53 +0000 (UTC) From: Amador Pahim To: qemu-devel@nongnu.org Date: Tue, 14 Nov 2017 11:22:46 +0100 Message-Id: <20171114102246.22221-9-apahim@redhat.com> In-Reply-To: <20171114102246.22221-1-apahim@redhat.com> References: <20171114102246.22221-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 14 Nov 2017 10:23: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 v11 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: famz@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, crosa@redhat.com, muriloo@linux.vnet.ibm.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 0b0b61be39..862920099c 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