From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eEN9x-0002tP-A1 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eEN9w-0000FH-DB for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33318) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eEN9w-0000Ei-7u for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:24:52 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7441F5D9F9 for ; Mon, 13 Nov 2017 22:24:51 +0000 (UTC) From: Amador Pahim Date: Mon, 13 Nov 2017 23:23:53 +0100 Message-Id: <20171113222358.30967-4-apahim@redhat.com> In-Reply-To: <20171113222358.30967-1-apahim@redhat.com> References: <20171113222358.30967-1-apahim@redhat.com> Subject: [Qemu-devel] [PATCH v10 3/8] qemu.py: refactor launch() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: famz@redhat.com, crosa@redhat.com, ehabkost@redhat.com, Amador Pahim This is just an refactor to separate the exception handler from the actual launch procedure, improving the readability and making future maintenances in this piece of code easier. Reviewed-by: Fam Zheng Signed-off-by: Amador Pahim --- scripts/qemu.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index c14d6cc8d4..813930301c 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -202,20 +202,14 @@ class QEMUMachine(object): self._temp_dir = None 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 = None self._qemu_full_args = None - devnull = open(os.path.devnull, 'rb') try: - self._pre_launch() - self._qemu_full_args = (self._wrapper + [self._binary] + - self._base_args() + self._args) - self._popen = subprocess.Popen(self._qemu_full_args, - stdin=devnull, - stdout=self._qemu_log_fd, - stderr=subprocess.STDOUT, - shell=False) - 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 + def _launch(self): + '''Launch the VM and establish a QMP connection''' + devnull = open(os.path.devnull, 'rb') + self._pre_launch() + self._qemu_full_args = (self._wrapper + [self._binary] + + self._base_args() + self._args) + self._popen = subprocess.Popen(self._qemu_full_args, + stdin=devnull, + stdout=self._qemu_log_fd, + stderr=subprocess.STDOUT, + shell=False) + self._post_launch() + def wait(self): '''Wait for the VM to power off''' self._popen.wait() -- 2.13.6