From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215557; cv=none; d=zohomail.com; s=zohoarc; b=BbCJUuEGeFA5QFgYsda13LHwFC+EDfObK3UX0Zn+IfNtlzLNIKeDCFe6C6OWGei8HNBlfyYG1+g9cYkEOsa5gzuwRddcfwun4IvnsXNthweFRn9o1tlyOQ+gw8xFqugDNX97a0+RD3tOAr86T7YcOBNGMjCwg7Qan6H6Xr2ZaZY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215557; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uRUoT07906sFVWIUUFYkWYYD5IjjfCeylwHHA3Kl8SY=; b=lbbcAsZ/XRe+Lss/+237BooLVNzC89laROlTwQSdR4XO0kzt8Apx2kPHMKzCvElX2sND4CP/jWva5FwjgvHvmgrENu/KRMfHziathxEOfn3fdbk8cs59gqe2lL6n0INWlVf9/vyCIyOzB+I2rL2PHq1QfFG8q2nJgEeSFsq/I4M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215557595644.1251856379722; Tue, 20 Oct 2020 10:39:17 -0700 (PDT) Received: from localhost ([::1]:32768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvbQ-0000iT-JA for importer@patchew.org; Tue, 20 Oct 2020 13:39:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35716) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQR-0002dC-CK for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:27:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:46167) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQP-00005c-9Q for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:27:55 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-549-yuy1YmGiOU-cZPXPF1tkUA-1; Tue, 20 Oct 2020 13:27:49 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CE1801006C90; Tue, 20 Oct 2020 17:27:47 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4014A2639C; Tue, 20 Oct 2020 17:27:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214872; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uRUoT07906sFVWIUUFYkWYYD5IjjfCeylwHHA3Kl8SY=; b=X0yCfT799F9R3FCZk51v8Dtu1SaNZxXbOAVAeTF5rZC8e0IpRmi6AvOxBJ/BApiNafneXP XMaUerAz+u18d2oFf2TyjKHVJnjlpKB/JSCI1raXCbh8CaknaZmH5FGOKFX67AUbfrW9My gvPT2djrW7eKkfv0AdN07ZgTEzFJN10= X-MC-Unique: yuy1YmGiOU-cZPXPF1tkUA-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 01/21] MAINTAINERS: Add Python library stanza Date: Tue, 20 Oct 2020 13:27:22 -0400 Message-Id: <20201020172742.1483258-2-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) I'm proposing that I split the actual Python library off from the other miscellaneous python scripts we have and declare it maintained. Add myself as a maintainer of this folder, along with Cleber. I will be actively working to add CI style guide checks, strict typing, and an actual package infrastructure to this folder specifically which differentiates it from loose, miscellaneous scripts which are generally maintained by other individuals with subject matter expertise. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alex Benn=C3=A9e Acked-by: Cleber Rosa Acked-by: Eduardo Habkost --- MAINTAINERS | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index a7f0acf866..6a197bd358 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2373,11 +2373,18 @@ S: Maintained F: include/sysemu/cryptodev*.h F: backends/cryptodev*.c =20 +Python library +M: John Snow +M: Cleber Rosa +R: Eduardo Habkost +S: Maintained +F: python/ +T: git https://gitlab.com/jsnow/qemu.git python + Python scripts M: Eduardo Habkost M: Cleber Rosa S: Odd fixes -F: python/qemu/*py F: scripts/*.py F: tests/*.py =20 --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215360; cv=none; d=zohomail.com; s=zohoarc; b=ULuRR86apsMtcoeeDTkTviED6/D2c5zQ8eyTb0U+wUDr4EJBMOCZrYPVqLlw1n/HCcTXTpfPpV7EGL2vpdUpLCpxJNVCyYzHrpwxv35tzgA6HaqbRw0q2183I0jL/HRlnLEVhVhQ5OnsfQ+w36RcuvI47pf9gLymlUmljtIQq3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215360; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Wom93IYXu56sh9v+F21UrkApWdYLc+jQLroUxYfQY6A=; b=lusbEHhUPyhwRaCOk4KHfwx0si6hTXsKOzFcrC7x41GOaWUxRp/KD37W4Cy4jm83nskVonT/q8BAZmoygfshyuY7VzKZlA75gLSybqpJydhpNFa7/AUI/Xi1imjaDg2qRSrU0aGPMERL14CGoo71pL/1f28KDXPqB03zdkL+Evc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215360441181.9324665141205; Tue, 20 Oct 2020 10:36:00 -0700 (PDT) Received: from localhost ([::1]:51264 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvYF-00055i-CX for importer@patchew.org; Tue, 20 Oct 2020 13:35:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQS-0002gR-Iu for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:41402) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQQ-000060-JB for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:27:56 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-45-DUUxgZavOJCuckEoeBv9kA-1; Tue, 20 Oct 2020 13:27:50 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 80691803F42; Tue, 20 Oct 2020 17:27:49 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id F37C71992D; Tue, 20 Oct 2020 17:27:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Wom93IYXu56sh9v+F21UrkApWdYLc+jQLroUxYfQY6A=; b=JwwA/JtY3ZdnsapTBRp/oSQyJlBZtuQcMeGPc9iLQjN3s2sArFLR452A0YyerOet7zWaat bYHiWJR5z3hme4hv36Ah9xuCfCVDfzi2Uc/df/Czk6u6GbW7Lpv4u2h2fvxkq0CFQptBAO 2dtWafc5oFh25A+OYVoMUZHRfzmpSAU= X-MC-Unique: DUUxgZavOJCuckEoeBv9kA-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 02/21] python/qemu: use isort to lay out imports Date: Tue, 20 Oct 2020 13:27:23 -0400 Message-Id: <20201020172742.1483258-3-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Borrowed from the QAPI cleanup series, use the same configuration to standardize the way we write and sort imports. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-2-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/.isort.cfg | 7 +++++++ python/qemu/accel.py | 1 + python/qemu/console_socket.py | 2 +- python/qemu/machine.py | 8 ++++---- python/qemu/qmp.py | 10 +++++----- python/qemu/qtest.py | 2 +- 6 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 python/qemu/.isort.cfg diff --git a/python/qemu/.isort.cfg b/python/qemu/.isort.cfg new file mode 100644 index 0000000000..6d0fd6cc0d --- /dev/null +++ b/python/qemu/.isort.cfg @@ -0,0 +1,7 @@ +[settings] +force_grid_wrap=3D4 +force_sort_within_sections=3DTrue +include_trailing_comma=3DTrue +line_length=3D72 +lines_after_imports=3D2 +multi_line_output=3D3 \ No newline at end of file diff --git a/python/qemu/accel.py b/python/qemu/accel.py index 7fabe62920..3ec6bdcfdb 100644 --- a/python/qemu/accel.py +++ b/python/qemu/accel.py @@ -18,6 +18,7 @@ import os import subprocess =20 + LOG =3D logging.getLogger(__name__) =20 # Mapping host architecture to any additional architectures it can diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index 70869fbbdc..69f604c77f 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -13,9 +13,9 @@ # the COPYING file in the top-level directory. # =20 +from collections import deque import socket import threading -from collections import deque import time =20 =20 diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 82f3731fc3..bc83f399c1 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -20,15 +20,15 @@ import errno import logging import os -import subprocess import shutil import signal +import subprocess import tempfile -from typing import Optional, Type from types import TracebackType -from . import console_socket +from typing import Optional, Type + +from . import console_socket, qmp =20 -from . import qmp =20 LOG =3D logging.getLogger(__name__) =20 diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index 7935dababb..ddf8347ac1 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -7,21 +7,21 @@ # This work is licensed under the terms of the GNU GPL, version 2. See # the COPYING file in the top-level directory. =20 -import json import errno -import socket +import json import logging +import socket +from types import TracebackType from typing import ( Any, - cast, Dict, Optional, TextIO, - Type, Tuple, + Type, Union, + cast, ) -from types import TracebackType =20 =20 # QMPMessage is a QMP Message of any kind. diff --git a/python/qemu/qtest.py b/python/qemu/qtest.py index 888c8bd2f6..7700c0b09b 100644 --- a/python/qemu/qtest.py +++ b/python/qemu/qtest.py @@ -17,8 +17,8 @@ # Based on qmp.py. # =20 -import socket import os +import socket from typing import Optional, TextIO =20 from .machine import QEMUMachine --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215523; cv=none; d=zohomail.com; s=zohoarc; b=ec+3hkpxyVKcWIXG0+AW5t2eAWrx/OcG2UZq2Jlv8uhzKMSt57lyeuqnTftpYJZ7p/N7rPk2wWMQU8mrr2p0f/0BXbMe4YEOeV+BMmgK/7fjYMT4Bw9Ib9BBTXU1+YsXSJGF42r1KCVNIEBjxhMCL72eCzOIHnQh0WDy0SjNRM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215523; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IM2Kajz9lTZ5ZobaWNoxzDci2hQcR0F3TbzGmFdKRdw=; b=LaN/GQKQF/tGByfkmh+xcL3meOoGb7mOKa2F9k4+eqkYayDZ086RLw2fWBjD38WnMZ9OHApcYXKCfs5JjYWQ4gJ/7flBG71pMYzNFoWMHdszrh2OnqxdqErCxrDHugtZUBuNQx8epX43B/1IMu0LFWHPrP8LT05rN9g46IvfPxI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215523180142.1725331682295; Tue, 20 Oct 2020 10:38:43 -0700 (PDT) Received: from localhost ([::1]:59478 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvaq-00004x-3x for importer@patchew.org; Tue, 20 Oct 2020 13:38:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35830) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQX-0002jn-OB for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:48658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQS-00006Y-FE for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:01 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-3-rjH6E6PeOIIMET74Mv5A-1; Tue, 20 Oct 2020 13:27:52 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CF978186DD20; Tue, 20 Oct 2020 17:27:50 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id C71071992D; Tue, 20 Oct 2020 17:27:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214875; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IM2Kajz9lTZ5ZobaWNoxzDci2hQcR0F3TbzGmFdKRdw=; b=Ip+k46K/O8g2YJPwcsh0czRhjgojuaUY4XWGVGpApaBA4ceeKH9KAAsZ2+QarakEfirtK0 hOO7hz52H3QDxsDpQdBBjJwlcISnTY+lbVhZNkjRLihU0QQbdL6HDw6RC+4EgxLUYriOYb gxYPoa2J5rVkDJ2ajY1gxRRMMaEwmkY= X-MC-Unique: 3-rjH6E6PeOIIMET74Mv5A-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 03/21] python/machine.py: Fix monitor address typing Date: Tue, 20 Oct 2020 13:27:24 -0400 Message-Id: <20201020172742.1483258-4-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Prior to this, it's difficult for mypy to intuit what the concrete type of the monitor address is; it has difficulty inferring the type across two variables. Create _monitor_address as a property that always returns a valid address to simplify static type analysis. To preserve our ability to clean up, use a simple boolean to indicate whether or not we should try to clean up the sock file after execution. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-3-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index bc83f399c1..3017ec072d 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -28,6 +28,7 @@ from typing import Optional, Type =20 from . import console_socket, qmp +from .qmp import SocketAddrT =20 =20 LOG =3D logging.getLogger(__name__) @@ -68,7 +69,8 @@ class QEMUMachine: """ =20 def __init__(self, binary, args=3DNone, wrapper=3DNone, name=3DNone, - test_dir=3D"/var/tmp", monitor_address=3DNone, + test_dir=3D"/var/tmp", + monitor_address: Optional[SocketAddrT] =3D None, socket_scm_helper=3DNone, sock_dir=3DNone, drain_console=3DFalse, console_log=3DNone): ''' @@ -95,8 +97,14 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone, = name=3DNone, if sock_dir is None: sock_dir =3D test_dir self._name =3D name - self._monitor_address =3D monitor_address - self._vm_monitor =3D None + if monitor_address is not None: + self._monitor_address =3D monitor_address + self._remove_monitor_sockfile =3D False + else: + self._monitor_address =3D os.path.join( + sock_dir, f"{name}-monitor.sock" + ) + self._remove_monitor_sockfile =3D True self._qemu_log_path =3D None self._qemu_log_file =3D None self._popen =3D None @@ -241,15 +249,17 @@ def _load_io_log(self): =20 def _base_args(self): args =3D ['-display', 'none', '-vga', 'none'] + if self._qmp_set: if isinstance(self._monitor_address, tuple): - moncdev =3D "socket,id=3Dmon,host=3D%s,port=3D%s" % ( - self._monitor_address[0], - self._monitor_address[1]) + moncdev =3D "socket,id=3Dmon,host=3D{},port=3D{}".format( + *self._monitor_address + ) else: - moncdev =3D 'socket,id=3Dmon,path=3D%s' % self._vm_monitor + moncdev =3D f"socket,id=3Dmon,path=3D{self._monitor_addres= s}" args.extend(['-chardev', moncdev, '-mon', 'chardev=3Dmon,mode=3Dcontrol']) + if self._machine is not None: args.extend(['-machine', self._machine]) for _ in range(self._console_index): @@ -274,14 +284,14 @@ def _pre_launch(self): self._qemu_log_file =3D open(self._qemu_log_path, 'wb') =20 if self._qmp_set: - if self._monitor_address is not None: - self._vm_monitor =3D self._monitor_address - else: - self._vm_monitor =3D os.path.join(self._sock_dir, - self._name + "-monitor.soc= k") - self._remove_files.append(self._vm_monitor) - self._qmp =3D qmp.QEMUMonitorProtocol(self._vm_monitor, server= =3DTrue, - nickname=3Dself._name) + if self._remove_monitor_sockfile: + assert isinstance(self._monitor_address, str) + self._remove_files.append(self._monitor_address) + self._qmp =3D qmp.QEMUMonitorProtocol( + self._monitor_address, + server=3DTrue, + nickname=3Dself._name + ) =20 def _post_launch(self): if self._qmp: --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215798; cv=none; d=zohomail.com; s=zohoarc; b=B53N6uD6o6jQCJqkYVjlx8/k355EO3a7aj8XrBIfh3Rl7W2dSCaJF3+iMU4lxbWkIjOEmJ71WQU2qcLdqmTFrXa1nOTwCJ8Y4DLlSZ0QVEpv1aux/aowOooffd8VhfHtp6Iww6F0m//qbUw0zO9iusmwcjVgue7DEK2w+TcpFjE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215798; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hqMp9SIDmS6N1wbREy83KHaWbJw6kbjUjR8MYlYbK2s=; b=SaeAdXFF8EX26fJtrPIRym1uQldn1UfbfcKa5bHzKvzDCima8v4in9ie9pRfHPZQO9OetlpZV3ogZn8yVhtw9dJA7AFaA0+XYDGtUho2GCf1gtibo93ExkxJpTjkCdHoFUVcBODrg7U1XeVpcvvIZAPxJ4+XwsBqippQ5bExlno= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215798321390.4270353624744; Tue, 20 Oct 2020 10:43:18 -0700 (PDT) Received: from localhost ([::1]:42280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvfJ-0004tk-7K for importer@patchew.org; Tue, 20 Oct 2020 13:43:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQX-0002im-Cu for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:60412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQS-00006c-GP for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:01 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-347-SkqEj2fJPierEcv282oRsg-1; Tue, 20 Oct 2020 13:27:53 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 09D2C64082; Tue, 20 Oct 2020 17:27:52 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 026381992D; Tue, 20 Oct 2020 17:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214875; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hqMp9SIDmS6N1wbREy83KHaWbJw6kbjUjR8MYlYbK2s=; b=W4a9fZ1cLpFMaCFIvlQ/DwxbvAnExflbaQQG2ubUEdwNiNlVB61UfxVlVaJnXqvOgPeyfU dGKVavgOmxBjRqyF1DkXeHkibL8HGZsCuBPua4f5v2Kt1RqdBDmzfH6W5G4nidjv8tu/Xu gexUZoWfYUZBnt6z1UMQkGkSggvWxEM= X-MC-Unique: SkqEj2fJPierEcv282oRsg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 04/21] python/machine.py: reorder __init__ Date: Tue, 20 Oct 2020 13:27:25 -0400 Message-Id: <20201020172742.1483258-5-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Put the init arg handling all at the top, and mostly in order (deviating when one is dependent on another), and put what is effectively runtime state declaration at the bottom. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-4-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 44 ++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 3017ec072d..71fe58be05 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -84,42 +84,54 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, @param monitor_address: address for QMP monitor @param socket_scm_helper: helper program, required for send_fd_scm= () @param sock_dir: where to create socket (overrides test_dir for so= ck) - @param console_log: (optional) path to console log file @param drain_console: (optional) True to drain console socket to b= uffer + @param console_log: (optional) path to console log file @note: Qemu process is not started until launch() is used. ''' + # Direct user configuration + + self._binary =3D binary + if args is None: args =3D [] + # Copy mutable input: we will be modifying our copy + self._args =3D list(args) + if wrapper is None: wrapper =3D [] - if name is None: - name =3D "qemu-%d" % os.getpid() - if sock_dir is None: - sock_dir =3D test_dir - self._name =3D name + self._wrapper =3D wrapper + + self._name =3D name or "qemu-%d" % os.getpid() + self._test_dir =3D test_dir + self._sock_dir =3D sock_dir or self._test_dir + self._socket_scm_helper =3D socket_scm_helper + if monitor_address is not None: self._monitor_address =3D monitor_address self._remove_monitor_sockfile =3D False else: self._monitor_address =3D os.path.join( - sock_dir, f"{name}-monitor.sock" + self._sock_dir, f"{self._name}-monitor.sock" ) self._remove_monitor_sockfile =3D True + + self._console_log_path =3D console_log + if self._console_log_path: + # In order to log the console, buffering needs to be enabled. + self._drain_console =3D True + else: + self._drain_console =3D drain_console + + # Runstate 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 - self._wrapper =3D wrapper self._events =3D [] self._iolog =3D None - self._socket_scm_helper =3D socket_scm_helper self._qmp_set =3D True # Enable QMP monitor by default. self._qmp =3D None self._qemu_full_args =3D None - self._test_dir =3D test_dir self._temp_dir =3D None - self._sock_dir =3D sock_dir self._launched =3D False self._machine =3D None self._console_index =3D 0 @@ -129,12 +141,6 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone= , name=3DNone, self._console_socket =3D None self._remove_files =3D [] self._user_killed =3D False - self._console_log_path =3D console_log - if self._console_log_path: - # In order to log the console, buffering needs to be enabled. - self._drain_console =3D True - else: - self._drain_console =3D drain_console =20 def __enter__(self): return self --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215733; cv=none; d=zohomail.com; s=zohoarc; b=QcOZxbYam7XYwoQeJDsX2Cx6Dt1ysYX4hX5ZIEG5Z0z+F8Y9FNyZDbhP+pBDW0fnQK70ZMUEx9oN26ppGrnxPL07IblDjWkIg5jiSLiSUjinZHdXLZ0DNxvLMK8SCfLEUJk+69qyXHjaFAwzpY17T4UNFVGikYETHi8JGiH0b+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215733; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=icGz5CFfyQZmFGJI0bgMFaTx4NMIZ8PsweUuB+1srN4=; b=PbteBI7rG4YeUM+k9mkgIBE6X07VfgHAU7Qte9Me/ZzCDqthrOWLqaNUO4vH93Qw25SuALK5S9LCZSifjcLl9wtsdWbZdl4nlqSXcJUGvf6SAmdg3/lTJadO6aVX2WpQmmpHu6qb02aENXRcMJdZq94XhcwGReszm7E6iWHbIKs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215733960498.50013759499495; Tue, 20 Oct 2020 10:42:13 -0700 (PDT) Received: from localhost ([::1]:39402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUveG-0003b1-RV for importer@patchew.org; Tue, 20 Oct 2020 13:42:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35868) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQY-0002m3-JG for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:25817) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQW-00007U-HU for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:02 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-421-r_C-QLNvPX6opq-bKp6HGA-1; Tue, 20 Oct 2020 13:27:54 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A8AF864098; Tue, 20 Oct 2020 17:27:53 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 318A41A3D6; Tue, 20 Oct 2020 17:27:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214876; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=icGz5CFfyQZmFGJI0bgMFaTx4NMIZ8PsweUuB+1srN4=; b=QgG4IKytH/q2hezX+/d6NvNwKp3c02p1QzDdxfETABt7CsvMlrH03NwFCAyOOHZ6cZ1WpK OjRXyvfwI2PnNe5/3wMdjFxJjFIHUCJj7vOrBZapGw1aYMKhNzquTjJGtDTpCq3YRHEOTv sDSQYVaBwxzz84ozW80AoFwR0257exo= X-MC-Unique: r_C-QLNvPX6opq-bKp6HGA-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 05/21] python/machine.py: Don't modify state in _base_args() Date: Tue, 20 Oct 2020 13:27:26 -0400 Message-Id: <20201020172742.1483258-6-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Don't append to the _remove_files list during _base_args; instead do so during _launch. Rework _base_args as a @property to help facilitate this impression. This has the additional benefit of making the type of _console_address easier to analyze statically. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-5-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 17 ++++++++++------- python/qemu/qtest.py | 7 ++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 71fe58be05..812ca7d349 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -25,7 +25,7 @@ import subprocess import tempfile from types import TracebackType -from typing import Optional, Type +from typing import List, Optional, Type =20 from . import console_socket, qmp from .qmp import SocketAddrT @@ -137,7 +137,9 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, self._console_index =3D 0 self._console_set =3D False self._console_device_type =3D None - self._console_address =3D None + self._console_address =3D os.path.join( + self._sock_dir, f"{self._name}-console.sock" + ) self._console_socket =3D None self._remove_files =3D [] self._user_killed =3D False @@ -253,7 +255,8 @@ def _load_io_log(self): with open(self._qemu_log_path, "r") as iolog: self._iolog =3D iolog.read() =20 - def _base_args(self): + @property + def _base_args(self) -> List[str]: args =3D ['-display', 'none', '-vga', 'none'] =20 if self._qmp_set: @@ -271,9 +274,6 @@ def _base_args(self): for _ in range(self._console_index): args.extend(['-serial', 'null']) if self._console_set: - self._console_address =3D os.path.join(self._sock_dir, - self._name + "-console.so= ck") - self._remove_files.append(self._console_address) chardev =3D ('socket,id=3Dconsole,path=3D%s,server,nowait' % self._console_address) args.extend(['-chardev', chardev]) @@ -289,6 +289,9 @@ def _pre_launch(self): 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') =20 + if self._console_set: + self._remove_files.append(self._console_address) + if self._qmp_set: if self._remove_monitor_sockfile: assert isinstance(self._monitor_address, str) @@ -374,7 +377,7 @@ def _launch(self): 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._base_args + self._args) LOG.debug('VM launch command: %r', ' '.join(self._qemu_full_args)) self._popen =3D subprocess.Popen(self._qemu_full_args, stdin=3Ddevnull, diff --git a/python/qemu/qtest.py b/python/qemu/qtest.py index 7700c0b09b..7fde2565a0 100644 --- a/python/qemu/qtest.py +++ b/python/qemu/qtest.py @@ -19,7 +19,7 @@ =20 import os import socket -from typing import Optional, TextIO +from typing import List, Optional, TextIO =20 from .machine import QEMUMachine =20 @@ -111,8 +111,9 @@ def __init__(self, binary, args=3DNone, name=3DNone, te= st_dir=3D"/var/tmp", self._qtest =3D None self._qtest_path =3D os.path.join(sock_dir, name + "-qtest.sock") =20 - def _base_args(self): - args =3D super()._base_args() + @property + def _base_args(self) -> List[str]: + args =3D super()._base_args args.extend(['-qtest', 'unix:path=3D' + self._qtest_path, '-accel', 'qtest']) return args --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216138; cv=none; d=zohomail.com; s=zohoarc; b=F+xHL6NaXsQelCRHk+i0VNhP8bcGmQ45LcW1O0V7m2w04n2S7kai3vi8NYU+BDGZo8tBWZ6Txp2pl5XeCChYvMJCXHQXiOH4B1DOJXacBfoRWOdFzr8Z45kNkDlFentIXVHZtTnJ//osZAeWRTaSR2sAjPF/LC7CIxIFr2hobBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216138; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=20FmI42QTcBODBnrVTLW/uUn9qmr/W6lBuDyI2mPFRU=; b=UJ0meE0VlDgWbgyG77RqAA6KC+nkw/iOBmLsANyLRWwpb4FFx/1P4cj7wqb6k+/5Tb1ldDRvdExxsPYK0zirEKx7gmOz/0eSZLBeqKX7B4/J+6I2XCRMlft3x+rCx3jEnwPdDwF25vDxWINZaJ3yBb4U1Cz9paomdkoyHxlAnUs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216138133889.9771343822669; Tue, 20 Oct 2020 10:48:58 -0700 (PDT) Received: from localhost ([::1]:35076 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvkm-0005Dh-Tj for importer@patchew.org; Tue, 20 Oct 2020 13:48:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35880) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQZ-0002oJ-7D for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:54206) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQW-00007r-Id for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:02 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-407-gfNxqOpTOJqlOtVBBP-zwQ-1; Tue, 20 Oct 2020 13:27:55 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C2EDF186DD20; Tue, 20 Oct 2020 17:27:54 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id D066127C2A; Tue, 20 Oct 2020 17:27:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214878; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=20FmI42QTcBODBnrVTLW/uUn9qmr/W6lBuDyI2mPFRU=; b=hanO8ZgBCbvYS8wvtJw2z4CHm9R4Hz2Rw87MEn+Nzy/OizDApSeL7W0SNmT2s4beZ7Iy6i N9HTqg436zPCiqDfK6tUU9EGNcXd2Wngbl+sqeooiIoH/bwGMyWWOACGm3dfeCBM+Dl8ae 9sNcBbK/yTLaUYHbxp0A2Qb0v/Iz4vc= X-MC-Unique: gfNxqOpTOJqlOtVBBP-zwQ-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 06/21] python/machine.py: Handle None events in events_wait Date: Tue, 20 Oct 2020 13:27:27 -0400 Message-Id: <20201020172742.1483258-7-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" If the timeout is 0, we can get None back. Handle this explicitly. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-6-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 812ca7d349..aebfa09e9d 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -28,7 +28,7 @@ from typing import List, Optional, Type =20 from . import console_socket, qmp -from .qmp import SocketAddrT +from .qmp import QMPMessage, SocketAddrT =20 =20 LOG =3D logging.getLogger(__name__) @@ -604,13 +604,20 @@ def event_wait(self, name, timeout=3D60.0, match=3DNo= ne): =20 def events_wait(self, events, timeout=3D60.0): """ - events_wait waits for and returns a named event - from QMP with a timeout. + events_wait waits for and returns a single named event from QMP. + In the case of multiple qualifying events, this function returns t= he + first one. =20 - events: a sequence of (name, match_criteria) tuples. - The match criteria are optional and may be None. - See event_match for details. - timeout: QEMUMonitorProtocol.pull_event timeout parameter. + :param events: A sequence of (name, match_criteria) tuples. + The match criteria are optional and may be None. + See event_match for details. + :param timeout: Optional timeout, in seconds. + See QEMUMonitorProtocol.pull_event. + + :raise QMPTimeoutError: If timeout was non-zero and no matching ev= ents + were found. + :return: A QMP event matching the filter criteria. + If timeout was 0 and no event matched, None. """ def _match(event): for name, match in events: @@ -618,6 +625,8 @@ def _match(event): return True return False =20 + event: Optional[QMPMessage] + # Search cached events for event in self._events: if _match(event): @@ -627,6 +636,10 @@ def _match(event): # Poll for new events while True: event =3D self._qmp.pull_event(wait=3Dtimeout) + if event is None: + # NB: None is only returned when timeout is false-ish. + # Timeouts raise QMPTimeoutError instead! + break if _match(event): return event self._events.append(event) --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215543; cv=none; d=zohomail.com; s=zohoarc; b=ck6KXBpnZgenDvXvEEMFHQrtBV2SeoaNYc19dejEcef1eWq1DyP0AVMReCGHJFX9crsOFaptNf+aT37QpcKmko+QrWEvUavL6TZJOk6HppDxPlMfABNlJa5S69wxsdQeA9gkultVjhIryHdAYdQRpr2wA4vXpyQ5Mb7YpGrhDTQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215543; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lu+9D72p93zTDfOn17AFp7X07gKpp2Hg3yLfde3734Q=; b=gGDn3eiQtCLAZ2ug0adjCkMUKNnVrKI7yhD6YGwvEcHvQKkkvMia53zpN2dDgHoE1ZuY+zQooG4GBcPsbLzc7S4J5hRJY3t8DhoTlbCeinoxNuK1oRFmnI+eGRnekvakdioIir22aJGTJ3B1ZdC3HqbW3bnNNACFIsHiKKRM54M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215543453486.7034730866591; Tue, 20 Oct 2020 10:39:03 -0700 (PDT) Received: from localhost ([::1]:59818 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvbC-0000DZ-Bj for importer@patchew.org; Tue, 20 Oct 2020 13:39:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35928) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQa-0002sM-GO for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:27799) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQW-00007y-SF for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:04 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-354-h9xnX5dgNHuogFJDGYSfLw-1; Tue, 20 Oct 2020 13:27:57 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EECC0186DD21; Tue, 20 Oct 2020 17:27:55 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id EB8FA1A3D6; Tue, 20 Oct 2020 17:27:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lu+9D72p93zTDfOn17AFp7X07gKpp2Hg3yLfde3734Q=; b=ZS/AG1R+gH8P9m1aZBPe6nS4DdU5FmyF0A8Ll+hrWSXsxw/LBenYLuqM03vpg8btwJOLML m5kGDQlLh49t4N+WO/QyMvy2Xno4+Au49RLrmQp/RXWjhPUXcGHFeRCqIiLsWkd7iQyzPW UNKjs9yblhgNt8NTUihWsuv7iLo42Mg= X-MC-Unique: h9xnX5dgNHuogFJDGYSfLw-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 07/21] python/machine.py: use qmp.command Date: Tue, 20 Oct 2020 13:27:28 -0400 Message-Id: <20201020172742.1483258-8-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) machine.py and qmp.py both do the same thing here; refactor machine.py to use qmp.py's functionality more directly. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20201006235817.3280413-7-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index aebfa09e9d..d788e8aba8 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -25,7 +25,13 @@ import subprocess import tempfile from types import TracebackType -from typing import List, Optional, Type +from typing import ( + Any, + Dict, + List, + Optional, + Type, +) =20 from . import console_socket, qmp from .qmp import QMPMessage, SocketAddrT @@ -515,17 +521,23 @@ def set_qmp_monitor(self, enabled=3DTrue): self._qmp_set =3D False self._qmp =3D None =20 - def qmp(self, cmd, conv_keys=3DTrue, **args): - """ - Invoke a QMP command and return the response dict - """ + @classmethod + def _qmp_args(cls, _conv_keys: bool =3D True, **args: Any) -> Dict[str= , Any]: qmp_args =3D dict() for key, value in args.items(): - if conv_keys: + if _conv_keys: qmp_args[key.replace('_', '-')] =3D value else: qmp_args[key] =3D value + return qmp_args =20 + def qmp(self, cmd: str, + conv_keys: bool =3D True, + **args: Any) -> QMPMessage: + """ + Invoke a QMP command and return the response dict + """ + qmp_args =3D self._qmp_args(conv_keys, **args) return self._qmp.cmd(cmd, args=3Dqmp_args) =20 def command(self, cmd, conv_keys=3DTrue, **args): @@ -534,12 +546,8 @@ def command(self, cmd, conv_keys=3DTrue, **args): On success return the response dict. On failure raise an exception. """ - reply =3D self.qmp(cmd, conv_keys, **args) - if reply is None: - raise qmp.QMPError("Monitor is closed") - if "error" in reply: - raise qmp.QMPResponseError(reply) - return reply["return"] + qmp_args =3D self._qmp_args(conv_keys, **args) + return self._qmp.command(cmd, **qmp_args) =20 def get_qmp_event(self, wait=3DFalse): """ --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215882; cv=none; d=zohomail.com; s=zohoarc; b=lZXHk7kw6NY6IxIFPzUZ8HjSKNrLtPoEakm+047laiHEMRPBVzQGZqGa9C6NGdxHhBmfgeHkSwFyaQgC8c4WvzDsHDGv0X6/uXINaBhJmxBB9Q++y9SmbGQ6zXZ85vEEogTlKVMC4y/OMgFFYTqFHV0ts/anGZDbZoqtjYCiCe8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215882; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=n+ztMi0DbwXldWXPytHFTMvwXYuKk8sRGulzwOqxRN4=; b=gqzCKnphf+107okDZITfT0ty5Eowv95yu8E/1mJ0LHsMQQ/k+qggzh+bFW4D2EqYTRTmaRGEevSwVBr2iWKHf2FfS6eVvZri+TBVDmeoF7Vax4u3dE8uYG88yOmDLobMdCvOQLoWYealuUm91egMvZLOusqFKAgSxODJjJmOgzA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215882830861.5732706915007; Tue, 20 Oct 2020 10:44:42 -0700 (PDT) Received: from localhost ([::1]:48918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvgf-0007ez-Op for importer@patchew.org; Tue, 20 Oct 2020 13:44:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35932) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQa-0002sz-P8 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:52564) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQY-00008M-Dr for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:04 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-2-zomem7_SPQiuia2Wri7Eeg-1; Tue, 20 Oct 2020 13:27:58 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CAFDD835B47; Tue, 20 Oct 2020 17:27:57 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3BE3B27C29; Tue, 20 Oct 2020 17:27:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=n+ztMi0DbwXldWXPytHFTMvwXYuKk8sRGulzwOqxRN4=; b=GxWDpSCHN8S2pAH6uG9iOt7+T/uo+UgCI1wq5vZ631DMxKERArJyKFdMXUAHgTGpJ7K33Z Jqdsuz3zLezPLqMW1RsTnAhtXb8zOzyPw8PcwMjMKq0NCryJ5TOcGcrW5B591cpdgKF+3f SbiOacOsXmRGm1/CXK1dGZ/cc9ehL/A= X-MC-Unique: zomem7_SPQiuia2Wri7Eeg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 08/21] python/machine.py: Add _qmp access shim Date: Tue, 20 Oct 2020 13:27:29 -0400 Message-Id: <20201020172742.1483258-9-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Like many other Optional[] types, it's not always a given that this object will be set. Wrap it in a type-shim that raises a meaningful error and will always return a concrete type. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-8-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index d788e8aba8..3e9cf09fd2 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -135,7 +135,7 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, self._events =3D [] self._iolog =3D None self._qmp_set =3D True # Enable QMP monitor by default. - self._qmp =3D None + self._qmp_connection: Optional[qmp.QEMUMonitorProtocol] =3D None self._qemu_full_args =3D None self._temp_dir =3D None self._launched =3D False @@ -302,14 +302,14 @@ def _pre_launch(self): if self._remove_monitor_sockfile: assert isinstance(self._monitor_address, str) self._remove_files.append(self._monitor_address) - self._qmp =3D qmp.QEMUMonitorProtocol( + self._qmp_connection =3D qmp.QEMUMonitorProtocol( self._monitor_address, server=3DTrue, nickname=3Dself._name ) =20 def _post_launch(self): - if self._qmp: + if self._qmp_connection: self._qmp.accept() =20 def _post_shutdown(self): @@ -320,9 +320,9 @@ def _post_shutdown(self): # Comprehensive reset for the failed launch case: self._early_cleanup() =20 - if self._qmp: + if self._qmp_connection: self._qmp.close() - self._qmp =3D None + self._qmp_connection =3D None =20 self._load_io_log() =20 @@ -434,7 +434,7 @@ def _soft_shutdown(self, timeout: Optional[int], """ self._early_cleanup() =20 - if self._qmp is not None: + if self._qmp_connection: if not has_quit: # Might raise ConnectionReset self._qmp.cmd('quit') @@ -515,11 +515,13 @@ def set_qmp_monitor(self, enabled=3DTrue): line. Default is True. @note: call this function before launch(). """ - if enabled: - self._qmp_set =3D True - else: - self._qmp_set =3D False - self._qmp =3D None + self._qmp_set =3D enabled + + @property + def _qmp(self) -> qmp.QEMUMonitorProtocol: + if self._qmp_connection is None: + raise QEMUMachineError("Attempt to access QMP with no connecti= on") + return self._qmp_connection =20 @classmethod def _qmp_args(cls, _conv_keys: bool =3D True, **args: Any) -> Dict[str= , Any]: --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215874; cv=none; d=zohomail.com; s=zohoarc; b=jBa+evAUSVhJV+yZP9fXO7Wlz7qbXxZKdNUul11NXuA4RuTw51G/nO/ZnPp/7PXk/oEC3YUF8Bs72zgrCJKjcyoTcQOJRdV899CqFhbFw8sspXYiG3+4n3rkerU0eXBLR6BNX4LfSEs7mnbmJ7XZbRflCcUrA2zviRcYRcp5ov4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215874; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FI58MT0rdVh8lfWRdQy5VKlfy640+ZY53FvgViErefo=; b=Ef/Z+7uSqleddv3+Zs9jsg5t7LnrR76eGWbRvQ6hwRMqX8nkROremsGRchMWhLZFmgVoThEPHTMBPkyADjFWEUKyyj2PZLGBDV+bKr/cH/P7X8b5ywB280yxw5zajkcAc8DoaGMUoMzFnskNdAFer2ItPaHkGzGb60xZ80HQkVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215874075554.1030433408956; Tue, 20 Oct 2020 10:44:34 -0700 (PDT) Received: from localhost ([::1]:48022 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvgX-0007IN-2L for importer@patchew.org; Tue, 20 Oct 2020 13:44:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36044) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQd-0002zt-Vl for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:22798) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQb-0000Am-Me for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:07 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-222-2XKnc-xRN-e2qVtqyneBBw-1; Tue, 20 Oct 2020 13:28:00 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 193B9835B49; Tue, 20 Oct 2020 17:27:59 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 18DA32639C; Tue, 20 Oct 2020 17:27:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FI58MT0rdVh8lfWRdQy5VKlfy640+ZY53FvgViErefo=; b=b1WdOCykotHo6/umuYFP1Olx9TaVLff3y8cMxyaRPB4cxgFuVx54U1ct/zVMhMN0VSbl8h q35BO5qeV8kd4z+Stp8sdkchckg+mVWQH1yRVt5GxgYZI+2+gXKQ6/rcHKxmZ2NDw7eh9C J3wcJlCvsUHXg/BAFeEUcHZzOH8+Z6M= X-MC-Unique: 2XKnc-xRN-e2qVtqyneBBw-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 09/21] python/machine.py: fix _popen access Date: Tue, 20 Oct 2020 13:27:30 -0400 Message-Id: <20201020172742.1483258-10-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" As always, Optional[T] causes problems with unchecked access. Add a helper that asserts the pipe is present before we attempt to talk with it. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-9-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 3e9cf09fd2..4e762fcd52 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -131,7 +131,7 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, # Runstate self._qemu_log_path =3D None self._qemu_log_file =3D None - self._popen =3D None + self._popen: Optional['subprocess.Popen[bytes]'] =3D None self._events =3D [] self._iolog =3D None self._qmp_set =3D True # Enable QMP monitor by default. @@ -244,6 +244,12 @@ def is_running(self): """Returns true if the VM is running.""" return self._popen is not None and self._popen.poll() is None =20 + @property + def _subp(self) -> 'subprocess.Popen[bytes]': + if self._popen is None: + raise QEMUMachineError('Subprocess pipe not present') + return self._popen + def exitcode(self): """Returns the exit code if possible, or None.""" if self._popen is None: @@ -254,7 +260,7 @@ def get_pid(self): """Returns the PID of the running process, or None.""" if not self.is_running(): return None - return self._popen.pid + return self._subp.pid =20 def _load_io_log(self): if self._qemu_log_path is not None: @@ -415,8 +421,8 @@ def _hard_shutdown(self) -> None: waiting for the QEMU process to terminate. """ self._early_cleanup() - self._popen.kill() - self._popen.wait(timeout=3D60) + self._subp.kill() + self._subp.wait(timeout=3D60) =20 def _soft_shutdown(self, timeout: Optional[int], has_quit: bool =3D False) -> None: @@ -440,7 +446,7 @@ def _soft_shutdown(self, timeout: Optional[int], self._qmp.cmd('quit') =20 # May raise subprocess.TimeoutExpired - self._popen.wait(timeout=3Dtimeout) + self._subp.wait(timeout=3Dtimeout) =20 def _do_shutdown(self, timeout: Optional[int], has_quit: bool =3D False) -> None: --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215738; cv=none; d=zohomail.com; s=zohoarc; b=KAYDPMfSAu6acIh3wNRkpEb3yeCXN2HPknrHf1XG1wWtgrtP+0cIIiGlJUApcVckNY6ZVt24ZXXoCfTF78ouAalfszctbG7R6IfhtgK5ZBYUfAzJwuL67LSRZUndAm1UnoWMwsgK0uqP/yR2T+kroqOU7ZDZuvQ/0e3yF+9ASo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215738; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HfxNnRaPO9aYtw9RQqHGTJSz7COgJ2o6XjEALZ+4ht4=; b=Oah9CzbMRoeUB5GG9MuxunAwk5oBYmkVDknupeVpdAirCty0Hi2L+XlaJw+sv0X/NYTmkeEvjitZpibWK5ob5/bP+yhK4BiRRPGcohsknHHNckxOHO7h9FCqkD0LB1P55tg/ON7qbFQCzDYJL6DzcKi9u+qpPdQ5RkGiEvdRYWM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 160321573830089.84184445955736; Tue, 20 Oct 2020 10:42:18 -0700 (PDT) Received: from localhost ([::1]:39784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUveL-0003kR-2d for importer@patchew.org; Tue, 20 Oct 2020 13:42:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36004) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQc-0002xu-V8 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:22887) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQa-0000AT-Vy for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:06 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-383-Kw6AaPjBPd2o0i-Nrr3J3Q-1; Tue, 20 Oct 2020 13:28:01 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 626E61006C8E; Tue, 20 Oct 2020 17:28:00 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 40BB01992D; Tue, 20 Oct 2020 17:27:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HfxNnRaPO9aYtw9RQqHGTJSz7COgJ2o6XjEALZ+4ht4=; b=VcaPeNdHELmFmmyBodhSLtPr/3LdJXTD12Z6aANisUVIP2lhDoKxjqX8Zhe/Q/3Lhsx0WQ Y7482Vhw9MgeVAvXsG3UBO7Av8cE00e4q8NpBKyZ4UBcLrfcQGQjQOLMbC+47zr5kC9B8e g27uVRMGoY+HU9fqvb6up6XrYfPNzco= X-MC-Unique: Kw6AaPjBPd2o0i-Nrr3J3Q-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 10/21] python/qemu: make 'args' style arguments immutable Date: Tue, 20 Oct 2020 13:27:31 -0400 Message-Id: <20201020172742.1483258-11-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) These arguments don't need to be mutable and aren't really used as such. Clarify their types as immutable and adjust code to match where necessary. In general, It's probably best not to accept a user-defined mutable object and store it as internal object state unless there's a strong justification for doing so. Instead, try to use generic types as input with empty tuples as the default, and coerce to list where necessary. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20201006235817.3280413-10-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/machine.py | 30 +++++++++++++++++------------- python/qemu/qtest.py | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 4e762fcd52..e599cb7439 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -18,6 +18,7 @@ # =20 import errno +from itertools import chain import logging import os import shutil @@ -30,6 +31,8 @@ Dict, List, Optional, + Sequence, + Tuple, Type, ) =20 @@ -74,8 +77,12 @@ class QEMUMachine: # vm is guaranteed to be shut down here """ =20 - def __init__(self, binary, args=3DNone, wrapper=3DNone, name=3DNone, - test_dir=3D"/var/tmp", + def __init__(self, + binary: str, + args: Sequence[str] =3D (), + wrapper: Sequence[str] =3D (), + name: Optional[str] =3D None, + test_dir: str =3D "/var/tmp", monitor_address: Optional[SocketAddrT] =3D None, socket_scm_helper=3DNone, sock_dir=3DNone, drain_console=3DFalse, console_log=3DNone): @@ -97,14 +104,7 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, # Direct user configuration =20 self._binary =3D binary - - if args is None: - args =3D [] - # Copy mutable input: we will be modifying our copy self._args =3D list(args) - - if wrapper is None: - wrapper =3D [] self._wrapper =3D wrapper =20 self._name =3D name or "qemu-%d" % os.getpid() @@ -136,7 +136,7 @@ def __init__(self, binary, args=3DNone, wrapper=3DNone,= name=3DNone, self._iolog =3D None self._qmp_set =3D True # Enable QMP monitor by default. self._qmp_connection: Optional[qmp.QEMUMonitorProtocol] =3D None - self._qemu_full_args =3D None + self._qemu_full_args: Tuple[str, ...] =3D () self._temp_dir =3D None self._launched =3D False self._machine =3D None @@ -368,7 +368,7 @@ def launch(self): raise QEMUMachineError('VM already launched') =20 self._iolog =3D None - self._qemu_full_args =3D None + self._qemu_full_args =3D () try: self._launch() self._launched =3D True @@ -388,8 +388,12 @@ def _launch(self): """ 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._qemu_full_args =3D tuple( + chain(self._wrapper, + [self._binary], + self._base_args, + self._args) + ) LOG.debug('VM launch command: %r', ' '.join(self._qemu_full_args)) self._popen =3D subprocess.Popen(self._qemu_full_args, stdin=3Ddevnull, diff --git a/python/qemu/qtest.py b/python/qemu/qtest.py index 7fde2565a0..675310d8df 100644 --- a/python/qemu/qtest.py +++ b/python/qemu/qtest.py @@ -19,7 +19,12 @@ =20 import os import socket -from typing import List, Optional, TextIO +from typing import ( + List, + Optional, + Sequence, + TextIO, +) =20 from .machine import QEMUMachine =20 @@ -99,8 +104,13 @@ class QEMUQtestMachine(QEMUMachine): A QEMU VM, with a qtest socket available. """ =20 - def __init__(self, binary, args=3DNone, name=3DNone, test_dir=3D"/var/= tmp", - socket_scm_helper=3DNone, sock_dir=3DNone): + def __init__(self, + binary: str, + args: Sequence[str] =3D (), + name: Optional[str] =3D None, + test_dir: str =3D "/var/tmp", + socket_scm_helper: Optional[str] =3D None, + sock_dir: Optional[str] =3D None): if name is None: name =3D "qemu-%d" % os.getpid() if sock_dir is None: @@ -114,8 +124,10 @@ def __init__(self, binary, args=3DNone, name=3DNone, t= est_dir=3D"/var/tmp", @property def _base_args(self) -> List[str]: args =3D super()._base_args - args.extend(['-qtest', 'unix:path=3D' + self._qtest_path, - '-accel', 'qtest']) + args.extend([ + '-qtest', f"unix:path=3D{self._qtest_path}", + '-accel', 'qtest' + ]) return args =20 def _pre_launch(self): --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603215924; cv=none; d=zohomail.com; s=zohoarc; b=XcbqP2BmaFnxRkML7fJuJQS5WkjVsE7uSzCj6A5PJRNvEsCABfpYhDoShUAU92QohvonpEv/8rkz6qDNP+MDtdqwm6oTioxmVaDRWstBe82JyBie5p4jttZacVYQpASZ+brEInDS3r8z+28FnI1Q33ueCQ3YT6+dWRec4W28ThE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603215924; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bBdogoT+43GpDlWgLtVgXqrakIFcETJ95LGQ2R3LqDU=; b=R2I0dL69N7uxR05b1d+5ollpeVNXyDU5QRTi3M1NM1CY6hOrHqEcqjPGqgQgctkXy5la3CTAlm4ZrSJaEYlf2KMWlPbPXkCRNAd0LhGtCVzr81q3rU0UQui0d9ZR4p9Mh5tzqTTt2w+mMqXT/PdpyYA3SGufXNTc3fDgQ+Qpvyc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603215924282172.8624460298356; Tue, 20 Oct 2020 10:45:24 -0700 (PDT) Received: from localhost ([::1]:51716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvhK-0000M9-QM for importer@patchew.org; Tue, 20 Oct 2020 13:45:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQh-00030r-HT for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59661) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQd-0000BV-Oa for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:10 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-97-rVVj_EkXNZm4aH4mCzbpkg-1; Tue, 20 Oct 2020 13:28:02 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7622B803F5E; Tue, 20 Oct 2020 17:28:01 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8BA1E1992D; Tue, 20 Oct 2020 17:28:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bBdogoT+43GpDlWgLtVgXqrakIFcETJ95LGQ2R3LqDU=; b=ZI68qcG4gk2Y9FtjJOgg2MDYSuU7cnX5/JzO5F4MCI1VJMnEal2oFbBmkK9aagHj2Pu5py 8reMNRRXf6NjZP6BuJup+8AhY1fYm5YZwya2FWp8DcfCZuJdCv0ZM1LIZFfmc6hkIE5HEw Vh2iOhiNyqUDdhDWkFVGcJHdzXVrI20= X-MC-Unique: rVVj_EkXNZm4aH4mCzbpkg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 11/21] iotests.py: Adjust HMP kwargs typing Date: Tue, 20 Oct 2020 13:27:32 -0400 Message-Id: <20201020172742.1483258-12-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" mypy wants to ensure there's consistency between the kwargs arguments types and any unspecified keyword arguments. In this case, conv_keys is a bool, but the remaining keys are Any type. Mypy (correctly) infers the **kwargs type to be **Dict[str, str], which is not compatible with conv_keys: bool. Because QMP typing is a little fraught right now anyway, re-type kwargs to Dict[str, Any] which has the benefit of silencing this check right now. A future re-design might type these more aggressively, but this will give us a baseline to work from with minimal disruption. (Thanks Kevin Wolf for the debugging assist here) Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-11-jsnow@redhat.com Signed-off-by: John Snow --- tests/qemu-iotests/iotests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index f212cec446..63d2ace93c 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -605,7 +605,7 @@ def add_incoming(self, addr): =20 def hmp(self, command_line: str, use_log: bool =3D False) -> QMPMessag= e: cmd =3D 'human-monitor-command' - kwargs =3D {'command-line': command_line} + kwargs: Dict[str, Any] =3D {'command-line': command_line} if use_log: return self.qmp_log(cmd, **kwargs) else: --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216038; cv=none; d=zohomail.com; s=zohoarc; b=KMMV7AtlMJBDffr8wvKBn3TbiRzLaXF621OgwhlkTFLbFLAjUaXZeduYVGWwM60TiDFZbodfZVRr/MgrYG4QTcHCOpzt3XZ5BiNtrYQLYerck3BKaHqxDGTqIFKKr7MmYvnYoTMAonKXjwy3K9tTglVaUgOobZNQZrDKVak+i88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216038; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kly/4NbHR8w3RiDi4lW7llR2DS5aEjjCsuSA2tm8Pfo=; b=mQpzK3r/ZOZYigVQ2OhTSF+54LNcJF+fP+IJ7IZL3xCuir3rYL7oIxqeMo9gnIJl12jG6Ij1YOsjfrjkQZrpKy3NFFzcJF7e+2cbOMG5/nQbwnZ2iT8SnMON0PbrEk4CXto1aGZLy9PTJzwAVXdvghGfMELNB+MppQRcsSmP6gI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216038826914.5486467769815; Tue, 20 Oct 2020 10:47:18 -0700 (PDT) Received: from localhost ([::1]:58006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvjB-00033Y-Iq for importer@patchew.org; Tue, 20 Oct 2020 13:47:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36242) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQv-000384-Aq for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:24953) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQm-0000CX-UE for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:23 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-554-AfZVKXlzPKmUqwq2rSCZsg-1; Tue, 20 Oct 2020 13:28:03 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9D90E186DD25; Tue, 20 Oct 2020 17:28:02 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9CABF1992D; Tue, 20 Oct 2020 17:28:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kly/4NbHR8w3RiDi4lW7llR2DS5aEjjCsuSA2tm8Pfo=; b=HE5DUUJsZYsjdeQZCdGmepMDgQnlptMO8eZgqXXO/PUGExMJ/oau/MGnjsubxjkCCt62bu tUfsKv8PYP9K6oscRebijsvR2/eQ2TY69nT67XOAc8GrK9IuSQL4O0JxKGUMhFvsD+i1hf 4EEopLKbrPmwxGeiFpGZUY6KtTWpDms= X-MC-Unique: AfZVKXlzPKmUqwq2rSCZsg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 12/21] python/qemu: Add mypy type annotations Date: Tue, 20 Oct 2020 13:27:33 -0400 Message-Id: <20201020172742.1483258-13-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These should all be purely annotations with no changes in behavior at all. You need to be in the python folder, but you should be able to confirm that these annotations are correct (or at least self-consistent) by running `mypy --strict qemu`. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-12-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/accel.py | 8 ++-- python/qemu/machine.py | 98 ++++++++++++++++++++++++------------------ python/qemu/qmp.py | 44 +++++++++++-------- python/qemu/qtest.py | 26 ++++++----- 4 files changed, 101 insertions(+), 75 deletions(-) diff --git a/python/qemu/accel.py b/python/qemu/accel.py index 3ec6bdcfdb..297933df2a 100644 --- a/python/qemu/accel.py +++ b/python/qemu/accel.py @@ -17,6 +17,7 @@ import logging import os import subprocess +from typing import List, Optional =20 =20 LOG =3D logging.getLogger(__name__) @@ -30,7 +31,7 @@ } =20 =20 -def list_accel(qemu_bin): +def list_accel(qemu_bin: str) -> List[str]: """ List accelerators enabled in the QEMU binary. =20 @@ -50,7 +51,8 @@ def list_accel(qemu_bin): return [acc.strip() for acc in out.splitlines()[1:]] =20 =20 -def kvm_available(target_arch=3DNone, qemu_bin=3DNone): +def kvm_available(target_arch: Optional[str] =3D None, + qemu_bin: Optional[str] =3D None) -> bool: """ Check if KVM is available using the following heuristic: - Kernel module is present in the host; @@ -73,7 +75,7 @@ def kvm_available(target_arch=3DNone, qemu_bin=3DNone): return True =20 =20 -def tcg_available(qemu_bin): +def tcg_available(qemu_bin: str) -> bool: """ Check if TCG is available. =20 diff --git a/python/qemu/machine.py b/python/qemu/machine.py index e599cb7439..6420f01bed 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -23,11 +23,13 @@ import os import shutil import signal +import socket import subprocess import tempfile from types import TracebackType from typing import ( Any, + BinaryIO, Dict, List, Optional, @@ -37,7 +39,7 @@ ) =20 from . import console_socket, qmp -from .qmp import QMPMessage, SocketAddrT +from .qmp import QMPMessage, QMPReturnValue, SocketAddrT =20 =20 LOG =3D logging.getLogger(__name__) @@ -67,7 +69,7 @@ class AbnormalShutdown(QEMUMachineError): =20 class QEMUMachine: """ - A QEMU VM + A QEMU VM. =20 Use this object as a context manager to ensure the QEMU process terminates:: @@ -84,8 +86,10 @@ def __init__(self, name: Optional[str] =3D None, test_dir: str =3D "/var/tmp", monitor_address: Optional[SocketAddrT] =3D None, - socket_scm_helper=3DNone, sock_dir=3DNone, - drain_console=3DFalse, console_log=3DNone): + socket_scm_helper: Optional[str] =3D None, + sock_dir: Optional[str] =3D None, + drain_console: bool =3D False, + console_log: Optional[str] =3D None): ''' Initialize a QEMUMachine =20 @@ -129,28 +133,28 @@ def __init__(self, self._drain_console =3D drain_console =20 # Runstate - self._qemu_log_path =3D None - self._qemu_log_file =3D None + self._qemu_log_path: Optional[str] =3D None + self._qemu_log_file: Optional[BinaryIO] =3D None self._popen: Optional['subprocess.Popen[bytes]'] =3D None - self._events =3D [] - self._iolog =3D None + self._events: List[QMPMessage] =3D [] + self._iolog: Optional[str] =3D None self._qmp_set =3D True # Enable QMP monitor by default. self._qmp_connection: Optional[qmp.QEMUMonitorProtocol] =3D None self._qemu_full_args: Tuple[str, ...] =3D () - self._temp_dir =3D None + self._temp_dir: Optional[str] =3D None self._launched =3D False - self._machine =3D None + self._machine: Optional[str] =3D None self._console_index =3D 0 self._console_set =3D False - self._console_device_type =3D None + self._console_device_type: Optional[str] =3D None self._console_address =3D os.path.join( self._sock_dir, f"{self._name}-console.sock" ) - self._console_socket =3D None - self._remove_files =3D [] + self._console_socket: Optional[socket.socket] =3D None + self._remove_files: List[str] =3D [] self._user_killed =3D False =20 - def __enter__(self): + def __enter__(self) -> 'QEMUMachine': return self =20 def __exit__(self, @@ -159,14 +163,15 @@ def __exit__(self, exc_tb: Optional[TracebackType]) -> None: self.shutdown() =20 - def add_monitor_null(self): + def add_monitor_null(self) -> None: """ This can be used to add an unused monitor instance. """ self._args.append('-monitor') self._args.append('null') =20 - def add_fd(self, fd, fdset, opaque, opts=3D''): + def add_fd(self, fd: int, fdset: int, + opaque: str, opts: str =3D '') -> 'QEMUMachine': """ Pass a file descriptor to the VM """ @@ -185,7 +190,8 @@ def add_fd(self, fd, fdset, opaque, opts=3D''): self._args.append(','.join(options)) return self =20 - def send_fd_scm(self, fd=3DNone, file_path=3DNone): + def send_fd_scm(self, fd: Optional[int] =3D None, + file_path: Optional[str] =3D None) -> int: """ Send an fd or file_path to socket_scm_helper. =20 @@ -229,7 +235,7 @@ def send_fd_scm(self, fd=3DNone, file_path=3DNone): return proc.returncode =20 @staticmethod - def _remove_if_exists(path): + def _remove_if_exists(path: str) -> None: """ Remove file object at path if it exists """ @@ -240,7 +246,7 @@ def _remove_if_exists(path): return raise =20 - def is_running(self): + def is_running(self) -> bool: """Returns true if the VM is running.""" return self._popen is not None and self._popen.poll() is None =20 @@ -250,19 +256,19 @@ def _subp(self) -> 'subprocess.Popen[bytes]': raise QEMUMachineError('Subprocess pipe not present') return self._popen =20 - def exitcode(self): + def exitcode(self) -> Optional[int]: """Returns the exit code if possible, or None.""" if self._popen is None: return None return self._popen.poll() =20 - def get_pid(self): + def get_pid(self) -> Optional[int]: """Returns the PID of the running process, or None.""" if not self.is_running(): return None return self._subp.pid =20 - def _load_io_log(self): + def _load_io_log(self) -> None: if self._qemu_log_path is not None: with open(self._qemu_log_path, "r") as iolog: self._iolog =3D iolog.read() @@ -296,7 +302,7 @@ def _base_args(self) -> List[str]: args.extend(['-device', device]) return args =20 - def _pre_launch(self): + def _pre_launch(self) -> None: self._temp_dir =3D tempfile.mkdtemp(dir=3Dself._test_dir) 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') @@ -314,11 +320,11 @@ def _pre_launch(self): nickname=3Dself._name ) =20 - def _post_launch(self): + def _post_launch(self) -> None: if self._qmp_connection: self._qmp.accept() =20 - def _post_shutdown(self): + def _post_shutdown(self) -> None: """ Called to cleanup the VM instance after the process has exited. May also be called after a failed launch. @@ -358,7 +364,7 @@ def _post_shutdown(self): self._user_killed =3D False self._launched =3D False =20 - def launch(self): + def launch(self) -> None: """ Launch the VM and make sure we cleanup and expose the command line/output in case of exception @@ -382,7 +388,7 @@ def launch(self): LOG.debug('Output: %r', self._iolog) raise =20 - def _launch(self): + def _launch(self) -> None: """ Launch the VM and establish a QMP connection """ @@ -501,7 +507,7 @@ def shutdown(self, has_quit: bool =3D False, finally: self._post_shutdown() =20 - def kill(self): + def kill(self) -> None: """ Terminate the VM forcefully, wait for it to exit, and perform clea= nup. """ @@ -516,7 +522,7 @@ def wait(self, timeout: Optional[int] =3D 30) -> None: """ self.shutdown(has_quit=3DTrue, timeout=3Dtimeout) =20 - def set_qmp_monitor(self, enabled=3DTrue): + def set_qmp_monitor(self, enabled: bool =3D True) -> None: """ Set the QMP monitor. =20 @@ -552,7 +558,9 @@ def qmp(self, cmd: str, qmp_args =3D self._qmp_args(conv_keys, **args) return self._qmp.cmd(cmd, args=3Dqmp_args) =20 - def command(self, cmd, conv_keys=3DTrue, **args): + def command(self, cmd: str, + conv_keys: bool =3D True, + **args: Any) -> QMPReturnValue: """ Invoke a QMP command. On success return the response dict. @@ -561,7 +569,7 @@ def command(self, cmd, conv_keys=3DTrue, **args): qmp_args =3D self._qmp_args(conv_keys, **args) return self._qmp.command(cmd, **qmp_args) =20 - def get_qmp_event(self, wait=3DFalse): + def get_qmp_event(self, wait: bool =3D False) -> Optional[QMPMessage]: """ Poll for one queued QMP events and return it """ @@ -569,7 +577,7 @@ def get_qmp_event(self, wait=3DFalse): return self._events.pop(0) return self._qmp.pull_event(wait=3Dwait) =20 - def get_qmp_events(self, wait=3DFalse): + def get_qmp_events(self, wait: bool =3D False) -> List[QMPMessage]: """ Poll for queued QMP events and return a list of dicts """ @@ -580,7 +588,7 @@ def get_qmp_events(self, wait=3DFalse): return events =20 @staticmethod - def event_match(event, match=3DNone): + def event_match(event: Any, match: Optional[Any]) -> bool: """ Check if an event matches optional match criteria. =20 @@ -610,9 +618,11 @@ def event_match(event, match=3DNone): return True except TypeError: # either match or event wasn't iterable (not a dict) - return match =3D=3D event + return bool(match =3D=3D event) =20 - def event_wait(self, name, timeout=3D60.0, match=3DNone): + def event_wait(self, name: str, + timeout: float =3D 60.0, + match: Optional[QMPMessage] =3D None) -> Optional[QMPMe= ssage]: """ event_wait waits for and returns a named event from QMP with a tim= eout. =20 @@ -622,7 +632,9 @@ def event_wait(self, name, timeout=3D60.0, match=3DNone= ): """ return self.events_wait([(name, match)], timeout) =20 - def events_wait(self, events, timeout=3D60.0): + def events_wait(self, + events: Sequence[Tuple[str, Any]], + timeout: float =3D 60.0) -> Optional[QMPMessage]: """ events_wait waits for and returns a single named event from QMP. In the case of multiple qualifying events, this function returns t= he @@ -639,7 +651,7 @@ def events_wait(self, events, timeout=3D60.0): :return: A QMP event matching the filter criteria. If timeout was 0 and no event matched, None. """ - def _match(event): + def _match(event: QMPMessage) -> bool: for name, match in events: if event['event'] =3D=3D name and self.event_match(event, = match): return True @@ -666,20 +678,20 @@ def _match(event): =20 return None =20 - def get_log(self): + def get_log(self) -> Optional[str]: """ After self.shutdown or failed qemu execution, this returns the out= put of the qemu process. """ return self._iolog =20 - def add_args(self, *args): + def add_args(self, *args: str) -> None: """ Adds to the list of extra arguments to be given to the QEMU binary """ self._args.extend(args) =20 - def set_machine(self, machine_type): + def set_machine(self, machine_type: str) -> None: """ Sets the machine type =20 @@ -688,7 +700,9 @@ def set_machine(self, machine_type): """ self._machine =3D machine_type =20 - def set_console(self, device_type=3DNone, console_index=3D0): + def set_console(self, + device_type: Optional[str] =3D None, + console_index: int =3D 0) -> None: """ Sets the device type for a console device =20 @@ -719,7 +733,7 @@ def set_console(self, device_type=3DNone, console_index= =3D0): self._console_index =3D console_index =20 @property - def console_socket(self): + def console_socket(self) -> socket.socket: """ Returns a socket connected to the console """ diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index ddf8347ac1..9223307ed8 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -15,6 +15,7 @@ from typing import ( Any, Dict, + List, Optional, TextIO, Tuple, @@ -90,7 +91,9 @@ class QEMUMonitorProtocol: #: Logger object for debugging messages logger =3D logging.getLogger('QMP') =20 - def __init__(self, address, server=3DFalse, nickname=3DNone): + def __init__(self, address: SocketAddrT, + server: bool =3D False, + nickname: Optional[str] =3D None): """ Create a QEMUMonitorProtocol class. =20 @@ -102,7 +105,7 @@ def __init__(self, address, server=3DFalse, nickname=3D= None): @note No connection is established, this is done by the connect() = or accept() methods """ - self.__events =3D [] + self.__events: List[QMPMessage] =3D [] self.__address =3D address self.__sock =3D self.__get_sock() self.__sockfile: Optional[TextIO] =3D None @@ -114,14 +117,14 @@ def __init__(self, address, server=3DFalse, nickname= =3DNone): self.__sock.bind(self.__address) self.__sock.listen(1) =20 - def __get_sock(self): + def __get_sock(self) -> socket.socket: if isinstance(self.__address, tuple): family =3D socket.AF_INET else: family =3D socket.AF_UNIX return socket.socket(family, socket.SOCK_STREAM) =20 - def __negotiate_capabilities(self): + def __negotiate_capabilities(self) -> QMPMessage: greeting =3D self.__json_read() if greeting is None or "QMP" not in greeting: raise QMPConnectError @@ -131,7 +134,7 @@ def __negotiate_capabilities(self): return greeting raise QMPCapabilitiesError =20 - def __json_read(self, only_event=3DFalse): + def __json_read(self, only_event: bool =3D False) -> Optional[QMPMessa= ge]: assert self.__sockfile is not None while True: data =3D self.__sockfile.readline() @@ -148,7 +151,7 @@ def __json_read(self, only_event=3DFalse): continue return resp =20 - def __get_events(self, wait=3DFalse): + def __get_events(self, wait: Union[bool, float] =3D False) -> None: """ Check for new events in the stream and cache them in __events. =20 @@ -186,7 +189,7 @@ def __get_events(self, wait=3DFalse): raise QMPConnectError("Error while reading from socket") self.__sock.settimeout(None) =20 - def __enter__(self): + def __enter__(self) -> 'QEMUMonitorProtocol': # Implement context manager enter function. return self =20 @@ -199,7 +202,7 @@ def __exit__(self, # Implement context manager exit function. self.close() =20 - def connect(self, negotiate=3DTrue): + def connect(self, negotiate: bool =3D True) -> Optional[QMPMessage]: """ Connect to the QMP Monitor and perform capabilities negotiation. =20 @@ -214,7 +217,7 @@ def connect(self, negotiate=3DTrue): return self.__negotiate_capabilities() return None =20 - def accept(self, timeout=3D15.0): + def accept(self, timeout: float =3D 15.0) -> QMPMessage: """ Await connection from QMP Monitor and perform capabilities negotia= tion. =20 @@ -250,7 +253,9 @@ def cmd_obj(self, qmp_cmd: QMPMessage) -> QMPMessage: self.logger.debug("<<< %s", resp) return resp =20 - def cmd(self, name, args=3DNone, cmd_id=3DNone): + def cmd(self, name: str, + args: Optional[Dict[str, Any]] =3D None, + cmd_id: Optional[Any] =3D None) -> QMPMessage: """ Build a QMP command and send it to the QMP Monitor. =20 @@ -258,14 +263,14 @@ def cmd(self, name, args=3DNone, cmd_id=3DNone): @param args: command arguments (dict) @param cmd_id: command id (dict, list, string or int) """ - qmp_cmd =3D {'execute': name} + qmp_cmd: QMPMessage =3D {'execute': name} if args: qmp_cmd['arguments'] =3D args if cmd_id: qmp_cmd['id'] =3D cmd_id return self.cmd_obj(qmp_cmd) =20 - def command(self, cmd, **kwds): + def command(self, cmd: str, **kwds: Any) -> QMPReturnValue: """ Build and send a QMP command to the monitor, report errors if any """ @@ -278,7 +283,8 @@ def command(self, cmd, **kwds): ) return cast(QMPReturnValue, ret['return']) =20 - def pull_event(self, wait=3DFalse): + def pull_event(self, + wait: Union[bool, float] =3D False) -> Optional[QMPMess= age]: """ Pulls a single event. =20 @@ -298,7 +304,7 @@ def pull_event(self, wait=3DFalse): return self.__events.pop(0) return None =20 - def get_events(self, wait=3DFalse): + def get_events(self, wait: bool =3D False) -> List[QMPMessage]: """ Get a list of available QMP events. =20 @@ -315,13 +321,13 @@ def get_events(self, wait=3DFalse): self.__get_events(wait) return self.__events =20 - def clear_events(self): + def clear_events(self) -> None: """ Clear current list of pending events. """ self.__events =3D [] =20 - def close(self): + def close(self) -> None: """ Close the socket and socket file. """ @@ -330,7 +336,7 @@ def close(self): if self.__sockfile: self.__sockfile.close() =20 - def settimeout(self, timeout): + def settimeout(self, timeout: float) -> None: """ Set the socket timeout. =20 @@ -339,7 +345,7 @@ def settimeout(self, timeout): """ self.__sock.settimeout(timeout) =20 - def get_sock_fd(self): + def get_sock_fd(self) -> int: """ Get the socket file descriptor. =20 @@ -347,7 +353,7 @@ def get_sock_fd(self): """ return self.__sock.fileno() =20 - def is_scm_available(self): + def is_scm_available(self) -> bool: """ Check if the socket allows for SCM_RIGHTS. =20 diff --git a/python/qemu/qtest.py b/python/qemu/qtest.py index 675310d8df..39a0cf62fe 100644 --- a/python/qemu/qtest.py +++ b/python/qemu/qtest.py @@ -27,6 +27,7 @@ ) =20 from .machine import QEMUMachine +from .qmp import SocketAddrT =20 =20 class QEMUQtestProtocol: @@ -43,7 +44,8 @@ class QEMUQtestProtocol: No conection is estabalished by __init__(), this is done by the connect() or accept() methods. """ - def __init__(self, address, server=3DFalse): + def __init__(self, address: SocketAddrT, + server: bool =3D False): self._address =3D address self._sock =3D self._get_sock() self._sockfile: Optional[TextIO] =3D None @@ -51,14 +53,14 @@ def __init__(self, address, server=3DFalse): self._sock.bind(self._address) self._sock.listen(1) =20 - def _get_sock(self): + def _get_sock(self) -> socket.socket: if isinstance(self._address, tuple): family =3D socket.AF_INET else: family =3D socket.AF_UNIX return socket.socket(family, socket.SOCK_STREAM) =20 - def connect(self): + def connect(self) -> None: """ Connect to the qtest socket. =20 @@ -67,7 +69,7 @@ def connect(self): self._sock.connect(self._address) self._sockfile =3D self._sock.makefile(mode=3D'r') =20 - def accept(self): + def accept(self) -> None: """ Await connection from QEMU. =20 @@ -76,7 +78,7 @@ def accept(self): self._sock, _ =3D self._sock.accept() self._sockfile =3D self._sock.makefile(mode=3D'r') =20 - def cmd(self, qtest_cmd): + def cmd(self, qtest_cmd: str) -> str: """ Send a qtest command on the wire. =20 @@ -87,14 +89,16 @@ def cmd(self, qtest_cmd): resp =3D self._sockfile.readline() return resp =20 - def close(self): - """Close this socket.""" + def close(self) -> None: + """ + Close this socket. + """ self._sock.close() if self._sockfile: self._sockfile.close() self._sockfile =3D None =20 - def settimeout(self, timeout): + def settimeout(self, timeout: Optional[float]) -> None: """Set a timeout, in seconds.""" self._sock.settimeout(timeout) =20 @@ -118,7 +122,7 @@ def __init__(self, super().__init__(binary, args, name=3Dname, test_dir=3Dtest_dir, socket_scm_helper=3Dsocket_scm_helper, sock_dir=3Dsock_dir) - self._qtest =3D None + self._qtest: Optional[QEMUQtestProtocol] =3D None self._qtest_path =3D os.path.join(sock_dir, name + "-qtest.sock") =20 @property @@ -130,7 +134,7 @@ def _base_args(self) -> List[str]: ]) return args =20 - def _pre_launch(self): + def _pre_launch(self) -> None: super()._pre_launch() self._qtest =3D QEMUQtestProtocol(self._qtest_path, server=3DTrue) =20 @@ -139,7 +143,7 @@ def _post_launch(self) -> None: super()._post_launch() self._qtest.accept() =20 - def _post_shutdown(self): + def _post_shutdown(self) -> None: super()._post_shutdown() self._remove_if_exists(self._qtest_path) =20 --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216013; cv=none; d=zohomail.com; s=zohoarc; b=kBoI429XCXJzMQum3UWyfeB/WqCtx0MYnnU7mUUbyM5jiF9ibQN7tvFTWrWmcBmpIXegJvsPmpnY8t6PeZFnxFFYtv/r70ItArhZ+784ZMee6w+qTB0eS5CMbV/8SwwpwgURYBaywELfSUF9Vk/63jCj+tKW3i1yPfsTNu7CMtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216013; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mU75RHHzFC7gQ5DS7Khzv/NDdxI3ENG1gh7VLj3KTvg=; b=dazzphixyw0pebbvYl+Ld/gIIYhVnKyTK0ZunD/lLBLyDFQULiSTNeWXwI0w+3FJdKaKtUwB5Bmj0I2l4f2DAGt+551ItKd17skPEoD2NvGPmIr0wh3LHSXUStw4aJmbgetAUBFbqttlHHA1KcURSgKuDfsOcgooMQ9h2z8i4Yw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216013881710.7244994220088; Tue, 20 Oct 2020 10:46:53 -0700 (PDT) Received: from localhost ([::1]:56236 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvim-0002Ll-Qh for importer@patchew.org; Tue, 20 Oct 2020 13:46:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36154) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQp-00033V-6R for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:48170) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQf-0000Bc-H5 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:17 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-224-oBXu5DiqMHOb2KSLuJTHlw-1; Tue, 20 Oct 2020 13:28:04 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B400A803F62; Tue, 20 Oct 2020 17:28:03 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id C39DB1992D; Tue, 20 Oct 2020 17:28:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mU75RHHzFC7gQ5DS7Khzv/NDdxI3ENG1gh7VLj3KTvg=; b=ULHAnfSCZ0N7BKBFyc5tueP+hcxv2u++qHK3zzl1yz+nQrHX/qbg3oLHJHdaHyboMmkfIt YGVVulQLkOQuDIirDCIqkv+Wg0jqBvFgUOzEpB4X+vmCl1tgAxx69DCSEKkYVrRGAhtX74 9NFc9DCEwXO0R8+8U7VosUT5OgybQUs= X-MC-Unique: oBXu5DiqMHOb2KSLuJTHlw-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 13/21] python/qemu/console_socket.py: Correct type of recv() Date: Tue, 20 Oct 2020 13:27:34 -0400 Message-Id: <20201020172742.1483258-14-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The type and parameter names of recv() should match socket.socket(). OK, easy enough, but in the cases we don't pass straight through to the real socket implementation, we probably can't accept such flags. OK, for now, assert that we don't receive flags in such cases. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-13-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/console_socket.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index 69f604c77f..cb3400a038 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -92,13 +92,14 @@ def _drain_socket(self): for c in string: self._buffer.extend(c) =20 - def recv(self, bufsize=3D1): + def recv(self, bufsize: int =3D 1, flags: int =3D 0) -> bytes: """Return chars from in memory buffer. Maintains the same API as socket.socket.recv. """ if self._drain_thread is None: # Not buffering the socket, pass thru to socket. - return socket.socket.recv(self, bufsize) + return socket.socket.recv(self, bufsize, flags) + assert not flags, "Cannot pass flags to recv() in drained mode" start_time =3D time.time() while len(self._buffer) < bufsize: time.sleep(self._sleep_time) --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216081; cv=none; d=zohomail.com; s=zohoarc; b=ISvT+PcAAG0nZ9PG4jAMGVuSu3PwqZmnJUmzIfuD6YDqQiF99ublrOsEtxHeUi5r4N7GiR+AWoUo5Ou+6ih7yjOcaWAvz9uM5XZ0c2iudwbi7n3AAinf23Ru8GbSo+PP4ccIcrkF3mcP9urR7ZJnwRRgHW0c0QJLIn8g2nhtHEA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216081; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=K/4JaS/5chTTcznkuUBQV5ElmPQUPB22BqHhkRvztlI=; b=J+1KrZf4kXpRBvFWymNRYe5GTnv2EwVp4x542Xfps3rpUasI4n4cdrekOorr3IsCYKWWvEF4cVvPHT39CYuaRQGpYt2N1YGILC2hs0XgnC8bV/4bC1S5CgXoHc10jEUg3hVA0RSRFBo4X3ivmlzZBK+KL89ebMgDj42fpk0YE4w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216081108998.3216030589102; Tue, 20 Oct 2020 10:48:01 -0700 (PDT) Received: from localhost ([::1]:60696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvjs-00049Z-2A for importer@patchew.org; Tue, 20 Oct 2020 13:48:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36158) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQp-00033Z-8W for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40036) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQh-0000CV-O6 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:18 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-533-uR1fG6OgP0WP-cpmy7nWSQ-1; Tue, 20 Oct 2020 13:28:06 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2D1591006C90; Tue, 20 Oct 2020 17:28:05 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id DA06E2639C; Tue, 20 Oct 2020 17:28:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=K/4JaS/5chTTcznkuUBQV5ElmPQUPB22BqHhkRvztlI=; b=Dxuyymo7tD9ixcl2XwBZVh8NvKX5NwYNewMdB0AuKGfqWh5ar3FDhG8Ve2r/1n2itrPKxp q0lLpeBnkDZaj+JkskV5Mk3d5lS9SQpUX7CQqmdxSgC7vUqYgf3oZolI4ZrR9YjOSiLVCW NMWvkZz8d42y1YRYkIP+wsLeC3GIJdI= X-MC-Unique: uR1fG6OgP0WP-cpmy7nWSQ-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 14/21] python/qemu/console_socket.py: fix typing of settimeout Date: Tue, 20 Oct 2020 13:27:35 -0400 Message-Id: <20201020172742.1483258-15-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The types and names of the parameters must match the socket.socket interfac= e. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-14-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/console_socket.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index cb3400a038..3945682506 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -17,6 +17,7 @@ import socket import threading import time +from typing import Optional =20 =20 class ConsoleSocket(socket.socket): @@ -31,6 +32,7 @@ class ConsoleSocket(socket.socket): """ def __init__(self, address, file=3DNone, drain=3DFalse): self._recv_timeout_sec =3D 300 + self._recv_timeout_sec =3D 300.0 self._sleep_time =3D 0.5 self._buffer =3D deque() socket.socket.__init__(self, socket.AF_UNIX, socket.SOCK_STREAM) @@ -120,11 +122,11 @@ def setblocking(self, value): if self._drain_thread is None: socket.socket.setblocking(self, value) =20 - def settimeout(self, seconds): + def settimeout(self, value: Optional[float]) -> None: """When not draining we pass thru to the socket, since when draining we control the timeout. """ - if seconds is not None: - self._recv_timeout_sec =3D seconds + if value is not None: + self._recv_timeout_sec =3D value if self._drain_thread is None: - socket.socket.settimeout(self, seconds) + socket.socket.settimeout(self, value) --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216238; cv=none; d=zohomail.com; s=zohoarc; b=Atiu9Fa4K49UnVQixGjnIYNM02g2KrhlK5jnqr61v7nj+sZIr1+z83+NKlcag8qW6yAjV+2WxBQhwzn0cuJ/xJ7OicILx7CMJveFDw4gdyk/za8T/BnVSGGCMuJWpKGQI0zr03ZBVufIoORIeJMqgwoW/5+G+OBI1abqI5S43uU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216238; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+vvfOuNEaUm41QwPBRxWyhu/HhymSEluLWMa07ncExA=; b=P74+fLxiEcCmNSqt6yujCbfJ87ipfX6Zat6YXt3VnmJaD4l3hUvTjGWgBer8YXxSCGDG+5tlyI9jjSNY8ecjdKrxAfGfYC+t8CpwjxkjhXH2eaBw8fuG/OkcpKniaBFc0m1D0ubCFkHeioPfu00/E4Gz4ggIs8TyDZtydLEnfVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216238505969.923931433858; Tue, 20 Oct 2020 10:50:38 -0700 (PDT) Received: from localhost ([::1]:40918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvmP-0007YU-MO for importer@patchew.org; Tue, 20 Oct 2020 13:50:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36216) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQt-00036n-CM for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:25562) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQm-0000Ck-Td for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:22 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-147-TgTmtmSzPBatf9X_-vptTA-1; Tue, 20 Oct 2020 13:28:08 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 09F4C803F42; Tue, 20 Oct 2020 17:28:07 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 741131992D; Tue, 20 Oct 2020 17:28:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+vvfOuNEaUm41QwPBRxWyhu/HhymSEluLWMa07ncExA=; b=b4ugmvN7+nG8cpsaarejnzOzcKNt8qrsuADtcLohecU2u1ywBaTiqVJ9yHKKg31yHiO5fA aQYa4sKoLhQKBb32ov69RNmRwuc3CDPqtt/DjOi/EheaWnLBDH7+73ahttRRuT4nEvuQqi 0xMIH0Ovi0EDo8Ub+5NC0IIAbXljsz8= X-MC-Unique: TgTmtmSzPBatf9X_-vptTA-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 15/21] python/qemu/console_socket.py: Clarify type of drain_thread Date: Tue, 20 Oct 2020 13:27:36 -0400 Message-Id: <20201020172742.1483258-16-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Mypy needs just a little help to guess the type here. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-15-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/console_socket.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index 3945682506..d4669c441d 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -41,10 +41,9 @@ def __init__(self, address, file=3DNone, drain=3DFalse): if file: self._logfile =3D open(file, "w") self._open =3D True + self._drain_thread =3D None if drain: self._drain_thread =3D self._thread_start() - else: - self._drain_thread =3D None =20 def _drain_fn(self): """Drains the socket and runs while the socket is open.""" --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216502; cv=none; d=zohomail.com; s=zohoarc; b=RkOELJjJW0x75u6stzK20yLkTwnCPXP6X+KSko43h6dQhwwCDoYz/S5RYPAt2fDw8MCFe4l6Jr2WOdgMkqWyPVxNkt/KM1pXZjTfmL58QlZMr1VBfsVINYDKHuZCt4qO2C1Z7rpJHxLGwD+WSCrjLujxsUe0aeC5en40V0e98do= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216502; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yxFopKxnTJAVh++2OF2V5+nmlIMCR45qC4kU3PhTEfQ=; b=i5adISAEVDB8pBkZA+R0ForGAPMKHEFAiq1rS34EzNNfihFAIU/93Gb7kItach2XbbWII/HPO2ApmptqsjWEMVh/T5PyN5lGuqqalxT1IkDaSF5RufMrPx3C1OPXHxeKefbTIe61BEIM3ewkkNpKVNeWo/CPtuLLTz2RhYqrEPQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216502083782.411583540194; Tue, 20 Oct 2020 10:55:02 -0700 (PDT) Received: from localhost ([::1]:55484 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvqe-0005Be-DG for importer@patchew.org; Tue, 20 Oct 2020 13:55:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36428) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvR8-0003RK-BO for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:53931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvR2-0000FJ-6P for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:38 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-588-FVUz8wAVMLet7kN81vAAuQ-1; Tue, 20 Oct 2020 13:28:09 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4CD001006C93; Tue, 20 Oct 2020 17:28:08 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4BCC91992D; Tue, 20 Oct 2020 17:28:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yxFopKxnTJAVh++2OF2V5+nmlIMCR45qC4kU3PhTEfQ=; b=goZOoqhl80V17OPE0LtVQ7TYynkvynnawFd3w0CyTqTDbetFgCHfSF24jtloV9cpgtlhZg 8Z9MCx68UMxs5KHPC97esccp1L+zkcbfVUDW6ekIWjrExXn3+WezEc++dCeKsIOHAOI59N Fp6n91SyFqSMAzuYBcSMBucuybxl7l4= X-MC-Unique: FVUz8wAVMLet7kN81vAAuQ-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 16/21] python/qemu/console_socket.py: Add type hint annotations Date: Tue, 20 Oct 2020 13:27:37 -0400 Message-Id: <20201020172742.1483258-17-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Finish the typing of console_socket.py with annotations and no code changes. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-16-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/console_socket.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index d4669c441d..57e6eee017 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -17,7 +17,7 @@ import socket import threading import time -from typing import Optional +from typing import Deque, Optional =20 =20 class ConsoleSocket(socket.socket): @@ -30,11 +30,11 @@ class ConsoleSocket(socket.socket): Optionally a file path can be passed in and we will also dump the characters to this file for debugging purposes. """ - def __init__(self, address, file=3DNone, drain=3DFalse): - self._recv_timeout_sec =3D 300 + def __init__(self, address: str, file: Optional[str] =3D None, + drain: bool =3D False): self._recv_timeout_sec =3D 300.0 self._sleep_time =3D 0.5 - self._buffer =3D deque() + self._buffer: Deque[str] =3D deque() socket.socket.__init__(self, socket.AF_UNIX, socket.SOCK_STREAM) self.connect(address) self._logfile =3D None @@ -45,7 +45,7 @@ def __init__(self, address, file=3DNone, drain=3DFalse): if drain: self._drain_thread =3D self._thread_start() =20 - def _drain_fn(self): + def _drain_fn(self) -> None: """Drains the socket and runs while the socket is open.""" while self._open: try: @@ -56,7 +56,7 @@ def _drain_fn(self): # self._open is set to False. time.sleep(self._sleep_time) =20 - def _thread_start(self): + def _thread_start(self) -> threading.Thread: """Kick off a thread to drain the socket.""" # Configure socket to not block and timeout. # This allows our drain thread to not block @@ -68,7 +68,7 @@ def _thread_start(self): drain_thread.start() return drain_thread =20 - def close(self): + def close(self) -> None: """Close the base object and wait for the thread to terminate""" if self._open: self._open =3D False @@ -80,7 +80,7 @@ def close(self): self._logfile.close() self._logfile =3D None =20 - def _drain_socket(self): + def _drain_socket(self) -> None: """process arriving characters into in memory _buffer""" data =3D socket.socket.recv(self, 1) # latin1 is needed since there are some chars @@ -114,7 +114,7 @@ def recv(self, bufsize: int =3D 1, flags: int =3D 0) ->= bytes: # socket w/o our intervention. return chars.encode("latin1") =20 - def setblocking(self, value): + def setblocking(self, value: bool) -> None: """When not draining we pass thru to the socket, since when draining we control socket blocking. """ --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216377; cv=none; d=zohomail.com; s=zohoarc; b=C2G+xkHliRMTsxmgEKFRi/hBu3lRnI7cdHm/LlUPuYDyP4yKw0529OgMaTuRPBrQCcEJVd9r2Gdv1hLbeeM/rfLAy5SHg+HGL9EZRtx8EFRFzhirUAFPEE944tF+hK4TUj2EPA7I2kUrybQxNHQSQ1Y1dueS0U6/ZaZND6pDcU0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216377; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rn2peLeUjU4axNGSFZKNGlMaez7ssSzhpU0xKL2/Sxo=; b=Ui2om993T9eanflPu41T9PNivxplKSCSNZafakrCXoYecSY/ySB3YCo8ADA2H3Th0/y3jGoAa3Av0CFiluhm/s+kN62JLDucYKOkELAAbqMKGcIAGqUX/ClIHdBIYgjNMZC9GXaRZtHa/GvH/KHM1VYh3NZ9EgrwJdXXwWQ0gqk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216377832647.3333824337711; Tue, 20 Oct 2020 10:52:57 -0700 (PDT) Received: from localhost ([::1]:49142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvof-0002aT-0l for importer@patchew.org; Tue, 20 Oct 2020 13:52:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36426) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvR8-0003Qk-5d for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:30688) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQy-0000FO-0W for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:37 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-201-aYsau92TO9SSak_MW0tx0Q-1; Tue, 20 Oct 2020 13:28:10 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 761CC186DD35; Tue, 20 Oct 2020 17:28:09 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 72E3F1992D; Tue, 20 Oct 2020 17:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rn2peLeUjU4axNGSFZKNGlMaez7ssSzhpU0xKL2/Sxo=; b=Mirv8G1ApJ32UDuOyQOUmxQt81FZT2qEoSVc5yCh+4SKnUQYLvzNyb4y9Wmlrxto+5nJbd drKM6+TIUOWqUwTti79zR6K9XUbc9YXadlxR8hHK8Z+drdpw3RU+170GMgXI1wNUX33fI1 RIDJgEwkD0hWBwXjjOOYjcaiRIgyzrs= X-MC-Unique: aYsau92TO9SSak_MW0tx0Q-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 17/21] python/qemu/console_socket.py: avoid encoding to/from string Date: Tue, 20 Oct 2020 13:27:38 -0400 Message-Id: <20201020172742.1483258-18-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We can work directly in bytes instead of translating back and forth to string, which removes the question of which encodings to use. Signed-off-by: John Snow Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-17-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/console_socket.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/python/qemu/console_socket.py b/python/qemu/console_socket.py index 57e6eee017..f060d79e06 100644 --- a/python/qemu/console_socket.py +++ b/python/qemu/console_socket.py @@ -34,12 +34,12 @@ def __init__(self, address: str, file: Optional[str] = =3D None, drain: bool =3D False): self._recv_timeout_sec =3D 300.0 self._sleep_time =3D 0.5 - self._buffer: Deque[str] =3D deque() + self._buffer: Deque[int] =3D deque() socket.socket.__init__(self, socket.AF_UNIX, socket.SOCK_STREAM) self.connect(address) self._logfile =3D None if file: - self._logfile =3D open(file, "w") + self._logfile =3D open(file, "bw") self._open =3D True self._drain_thread =3D None if drain: @@ -83,15 +83,10 @@ def close(self) -> None: def _drain_socket(self) -> None: """process arriving characters into in memory _buffer""" data =3D socket.socket.recv(self, 1) - # latin1 is needed since there are some chars - # we are receiving that cannot be encoded to utf-8 - # such as 0xe2, 0x80, 0xA6. - string =3D data.decode("latin1") if self._logfile: - self._logfile.write("{}".format(string)) + self._logfile.write(data) self._logfile.flush() - for c in string: - self._buffer.extend(c) + self._buffer.extend(data) =20 def recv(self, bufsize: int =3D 1, flags: int =3D 0) -> bytes: """Return chars from in memory buffer. @@ -107,12 +102,7 @@ def recv(self, bufsize: int =3D 1, flags: int =3D 0) -= > bytes: elapsed_sec =3D time.time() - start_time if elapsed_sec > self._recv_timeout_sec: raise socket.timeout - chars =3D ''.join([self._buffer.popleft() for i in range(bufsize)]) - # We choose to use latin1 to remain consistent with - # handle_read() and give back the same data as the user would - # receive if they were reading directly from the - # socket w/o our intervention. - return chars.encode("latin1") + return bytes((self._buffer.popleft() for i in range(bufsize))) =20 def setblocking(self, value: bool) -> None: """When not draining we pass thru to the socket, --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216366; cv=none; d=zohomail.com; s=zohoarc; b=Zp0GMId9dU+BA+R+Vkrz64Y/Qf5rH8cHkJA1Dw5RKRgFB5S2Pzq/EyaF3xK+6Q9QLt7QgF0dWxfBFYwHlHljxjMwF9JqBlsmBTlOtl5co6omzoeqbbbK+cqC/ZjyCF6A1Gz4qQ3NwxxTo/RR0NCxFK4Eb01Y72xLf71p+8+59N0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216366; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NCEWcLdb4RhnaR+lgGPfAijEe+Wg7+ii/omcpWJHwVE=; b=P5SDgzNRdbRMEzkX8xUthaHnzrd+DmBc24YyVD43bckmiuqCyWLRp+froPEM4Ke7K8+0lX1AfvCSZKQwQpxdJhLhbsbsVwAL3z3tLFeC2KSZsaRs2IcIppov0S1+w5pYG0pUy6+CtcH0/Yt1YKNkUWjNGJqMpbjQkHSs12cl80I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216366065602.4940181454235; Tue, 20 Oct 2020 10:52:46 -0700 (PDT) Received: from localhost ([::1]:48028 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvoT-00028m-0f for importer@patchew.org; Tue, 20 Oct 2020 13:52:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36444) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvRD-0003eY-2s for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:43 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:43697) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQo-0000DL-VX for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:42 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-523-lIJh6EgqP0-eFcr1tFeeZw-1; Tue, 20 Oct 2020 13:28:11 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8DD32803F4E; Tue, 20 Oct 2020 17:28:10 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 897641992D; Tue, 20 Oct 2020 17:28:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214895; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NCEWcLdb4RhnaR+lgGPfAijEe+Wg7+ii/omcpWJHwVE=; b=UWc23sjtyZFlPB/0qJbB6GuicjOFNaIWGnjFy4OHWcsnmGdTtndHUa18GVGj2xxm9R28Ts xxYk3bZiZaTBnbxQ8ER9XFbqSrQWuBvEkkrvEynl816QA6VfLxxzjbawoHzizVaqc2KxV6 lTH0lVxAMCZsWCkscKYTqRtn1VCf+KQ= X-MC-Unique: lIJh6EgqP0-eFcr1tFeeZw-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 18/21] python/qemu/qmp.py: Preserve error context on re-raise Date: Tue, 20 Oct 2020 13:27:39 -0400 Message-Id: <20201020172742.1483258-19-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:16:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Use the "from ..." phrasing when re-raising errors to preserve their initial context, to help aid debugging when things go wrong. This also silences a pylint 2.6.0+ error. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Kevin Wolf Message-id: 20201006235817.3280413-18-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/qmp.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index 9223307ed8..d911999da1 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -181,10 +181,11 @@ def __get_events(self, wait: Union[bool, float] =3D F= alse) -> None: self.__sock.settimeout(wait) try: ret =3D self.__json_read(only_event=3DTrue) - except socket.timeout: - raise QMPTimeoutError("Timeout waiting for event") - except: - raise QMPConnectError("Error while reading from socket") + except socket.timeout as err: + raise QMPTimeoutError("Timeout waiting for event") from err + except Exception as err: + msg =3D "Error while reading from socket" + raise QMPConnectError(msg) from err if ret is None: raise QMPConnectError("Error while reading from socket") self.__sock.settimeout(None) --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216175; cv=none; d=zohomail.com; s=zohoarc; b=dF/PG361t7lGjkU9kyMCF24uGlI2SnBhAKMMlATqdBQ5/s75+vGfdOIyJhkj//14kR7JcbVn8QkvdUYmT4zR36bQmJhbMgfhqficPvohpzdMMXxWQx32tWqsaBoYFGLXkNJ8CPnnUFG8nQ0FR9XFD32+7uCaiVqG7+ZUJwbiWjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216175; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jCR9nPhUEyfb2pZOh0loRJBJ/zm18F6ktGBBDc22LJQ=; b=bRWllMdANZkP0Cyl6q/xDCzQb26VpBxmAbSngfYNgHdAkdoYMtxZYGF+0s7AFlSdqjdogdGw+h4AK1UAvix9vMOZVNkiIcnMFgJ4DrYaa8rdliItkGdx6QC2/7nuVm5QPXJFCPU8TGZiL9QQTn3j+NaF15XOVML47gb52uT92Vk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216175145737.3226981951005; Tue, 20 Oct 2020 10:49:35 -0700 (PDT) Received: from localhost ([::1]:38378 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvlO-0006Yc-6R for importer@patchew.org; Tue, 20 Oct 2020 13:49:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36266) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvQx-00039F-Eg for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:51349) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQm-0000DD-T8 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:27 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-28-SCM9_4BzN3Om-F-sHELTkg-1; Tue, 20 Oct 2020 13:28:12 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AB3B1835B47; Tue, 20 Oct 2020 17:28:11 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id B7D8D1992D; Tue, 20 Oct 2020 17:28:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214895; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jCR9nPhUEyfb2pZOh0loRJBJ/zm18F6ktGBBDc22LJQ=; b=EDRNx9k7AteCX9zOQcMIlLdrDcUWZAVLLSYDLtFlwUUbSCS3gNkeuUr4ScFfTriTh2vMcr 7mO50+bMWp9iTDyY/fkmgeRuzMQUNJ5WV2TkD8lNDiH468AvNbQIBzGxKGADdOmvjTOwDL TtP+WJEa4C9BQo75Tt3vM20LnjPpLXU= X-MC-Unique: SCM9_4BzN3Om-F-sHELTkg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 19/21] python: add mypy config Date: Tue, 20 Oct 2020 13:27:40 -0400 Message-Id: <20201020172742.1483258-20-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Formalize the options used for checking the python library. You can run mypy from the directory that mypy.ini is in by typing `mypy qemu/`. Signed-off-by: John Snow Message-id: 20201009175123.249009-2-jsnow@redhat.com [Edit: Added newline; thanks Bin Meng --js] Signed-off-by: John Snow --- python/mypy.ini | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/mypy.ini diff --git a/python/mypy.ini b/python/mypy.ini new file mode 100644 index 0000000000..1a581c5f1e --- /dev/null +++ b/python/mypy.ini @@ -0,0 +1,4 @@ +[mypy] +strict =3D True +python_version =3D 3.6 +warn_unused_configs =3D True --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216313; cv=none; d=zohomail.com; s=zohoarc; b=BYSsbNbLEA49SpTOrEBkAAcF07DvtcXmCFg5VPLr0czyLInp8I59z6YnWNceyTWLvLO2Sx2pMCWuC1ITOPRb6GoHclHeENgPOlzGetko7XgCZ98CHcb8HbTtsDL7Dkkn1Mqfyxb0/AiYLhWt6jbDvXtnRTCKGIxiRDOhQ4WIuPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216313; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sr2UKp2co8IuxzUvwAaEa9pc8c4skAtlt+s6Ajgb4kQ=; b=FcYHqQarLtLnMx4Y7Wsd+OI8OPlZxQvsx0Ij7p6tuzp1pX2aXEI7ipQC65kyuFZTv5FyUhXFvUYo9l5wsZr9HESWqNM2JQtoEyXcAPNS8MGDVqIue9v+6JoZzLv4U0YGwD1uc5cNFBrhYfEQ8Fex3Om22vEG3IH+EgRAPOkMGXw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 160321631354857.94798395938824; Tue, 20 Oct 2020 10:51:53 -0700 (PDT) Received: from localhost ([::1]:44860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvnc-0000q5-Mm for importer@patchew.org; Tue, 20 Oct 2020 13:51:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36308) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvR2-0003Bv-HR for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:48564) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQo-0000DP-TS for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-132-kXfP5Mk2MTSRJXVEvyoPJg-1; Tue, 20 Oct 2020 13:28:14 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D7297835B48; Tue, 20 Oct 2020 17:28:12 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id D11E32639C; Tue, 20 Oct 2020 17:28:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sr2UKp2co8IuxzUvwAaEa9pc8c4skAtlt+s6Ajgb4kQ=; b=bnqvs1Uq8fN0DY+IUVD1uvvyxZ0VDERkL80Pu8jxVttZFZRLGB1R0NsiEvKqGZzYTtD0LC cHns0T8oAGxCUzdkDwnUg1qXSRfVgfxfZPQhodYm/zog9QVWeHQ5HcN/5RNzabK8MeCiv6 uVpv4kVofXNP7ze3YrZqEXQVSu10J+M= X-MC-Unique: kXfP5Mk2MTSRJXVEvyoPJg-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 20/21] python/qemu/qmp.py: re-raise OSError when encountered Date: Tue, 20 Oct 2020 13:27:41 -0400 Message-Id: <20201020172742.1483258-21-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Nested if conditions don't change when the exception block fires; we need to explicitly re-raise the error if we didn't intend to capture and suppress it. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20201009175123.249009-3-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/qmp.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index d911999da1..4969e5741c 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -165,14 +165,15 @@ def __get_events(self, wait: Union[bool, float] =3D F= alse) -> None: """ =20 # Check for new events regardless and pull them into the cache: - self.__sock.setblocking(False) try: + self.__sock.setblocking(False) self.__json_read() except OSError as err: - if err.errno =3D=3D errno.EAGAIN: - # No data available - pass - self.__sock.setblocking(True) + # EAGAIN: No data available; not critical + if err.errno !=3D errno.EAGAIN: + raise + finally: + self.__sock.setblocking(True) =20 # Wait for new events, if needed. # if wait is 0.0, this means "no wait" and is also implicitly fals= e. --=20 2.26.2 From nobody Sun May 19 13:34:33 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603216168; cv=none; d=zohomail.com; s=zohoarc; b=KLkl9cWER2nusk6U61MX3Uk+95ykZ1oHfVU+O0nerluHropJWNKa2jxumLP5RxnSNeb48BKCYvKMHB+93SQRbVTFB9GGZIBo1mXjzWYE/oMFWWcPJCBinoCYITbUqq0argPBS20lfIVUX1GZ7KQMec0F+dfI8IesYNhXAvY/D9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603216168; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KoRk17fUILbdEtaVg4nN+aoYI2z78GD802D03LsPzrE=; b=U35CoZYcWu1PYepJpLpvcq4PcDmQ385igR+Zf4dVfwbAWbTOAYAFa1Y800f9oRxshcA2fCxKcbrL/aInKjvFXk8lPDqMFLSsZ5PQ5yng6O/4yses50r1EG3vKVBJQTf5DUXDjFLR0r9H8XTimbwgNj7cS6X+flQQ56wvBTyPM4M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603216168649700.9897887661673; Tue, 20 Oct 2020 10:49:28 -0700 (PDT) Received: from localhost ([::1]:37642 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUvlG-0006Gf-Qx for importer@patchew.org; Tue, 20 Oct 2020 13:49:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36312) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUvR2-0003Cg-O4 for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:48960) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kUvQo-0000Df-Uq for qemu-devel@nongnu.org; Tue, 20 Oct 2020 13:28:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-184-nbemKrk4MZqLxLcavn2zGQ-1; Tue, 20 Oct 2020 13:28:15 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 10B101006C8E; Tue, 20 Oct 2020 17:28:14 +0000 (UTC) Received: from scv.redhat.com (ovpn-115-172.rdu2.redhat.com [10.10.115.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id 098E71992D; Tue, 20 Oct 2020 17:28:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603214897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KoRk17fUILbdEtaVg4nN+aoYI2z78GD802D03LsPzrE=; b=UmzmEQ05MEQFNwCYut/XW9yt4zX3ddcXzYXrZjO3bRJ6Qn8Y2Q90BCdmI4sZ9vz2vzF1lE z/KdfNGinnhRXlghSLELuMGXDQVKGOBmGTZHoBc/2LBx44PtZDhJ9Rk0SfrBVj6c2JhbCK yK3mxs3zQyj7oM4mL5Rt+LEafoexCJc= X-MC-Unique: nbemKrk4MZqLxLcavn2zGQ-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PULL 21/21] python/qemu/qmp.py: Fix settimeout operation Date: Tue, 20 Oct 2020 13:27:42 -0400 Message-Id: <20201020172742.1483258-22-jsnow@redhat.com> In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com> References: <20201020172742.1483258-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 01:15:43 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Max Reitz , Cleber Rosa , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We enabled callers to interface directly with settimeout, but this reacts poorly with blocking/nonblocking operation; as they are using the same internal mechanism. 1. Whenever we change the blocking mechanism temporarily, always set it back to what it was afterwards. 2. Disallow callers from setting a timeout of "0", which means Non-blocking mode. This is going to create more weird problems than anybody wants, so just forbid it. I opt not to coerce '0' to 'None' to maintain the principal of least surprise in mirroring the semantics of Python's interface. Signed-off-by: John Snow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20201009175123.249009-4-jsnow@redhat.com Signed-off-by: John Snow --- python/qemu/qmp.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index 4969e5741c..f64517fb0a 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -164,16 +164,19 @@ def __get_events(self, wait: Union[bool, float] =3D F= alse) -> None: retrieved or if some other error occurred. """ =20 + # Current timeout and blocking status + current_timeout =3D self.__sock.gettimeout() + # Check for new events regardless and pull them into the cache: try: - self.__sock.setblocking(False) + self.__sock.settimeout(0) # i.e. setblocking(False) self.__json_read() except OSError as err: # EAGAIN: No data available; not critical if err.errno !=3D errno.EAGAIN: raise finally: - self.__sock.setblocking(True) + self.__sock.settimeout(current_timeout) =20 # Wait for new events, if needed. # if wait is 0.0, this means "no wait" and is also implicitly fals= e. @@ -187,9 +190,11 @@ def __get_events(self, wait: Union[bool, float] =3D Fa= lse) -> None: except Exception as err: msg =3D "Error while reading from socket" raise QMPConnectError(msg) from err + finally: + self.__sock.settimeout(current_timeout) + if ret is None: raise QMPConnectError("Error while reading from socket") - self.__sock.settimeout(None) =20 def __enter__(self) -> 'QEMUMonitorProtocol': # Implement context manager enter function. @@ -219,7 +224,7 @@ def connect(self, negotiate: bool =3D True) -> Optional= [QMPMessage]: return self.__negotiate_capabilities() return None =20 - def accept(self, timeout: float =3D 15.0) -> QMPMessage: + def accept(self, timeout: Optional[float] =3D 15.0) -> QMPMessage: """ Await connection from QMP Monitor and perform capabilities negotia= tion. =20 @@ -338,13 +343,19 @@ def close(self) -> None: if self.__sockfile: self.__sockfile.close() =20 - def settimeout(self, timeout: float) -> None: + def settimeout(self, timeout: Optional[float]) -> None: """ Set the socket timeout. =20 - @param timeout (float): timeout in seconds, or None. + @param timeout (float): timeout in seconds (non-zero), or None. @note This is a wrap around socket.settimeout + + @raise ValueError: if timeout was set to 0. """ + if timeout =3D=3D 0: + msg =3D "timeout cannot be 0; this engages non-blocking mode." + msg +=3D " Use 'None' instead to disable timeouts." + raise ValueError(msg) self.__sock.settimeout(timeout) =20 def get_sock_fd(self) -> int: --=20 2.26.2