All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>, "Cleber Rosa" <crosa@redhat.com>,
	"John Snow" <jsnow@redhat.com>
Subject: [PULL 07/21] python/machine.py: use qmp.command
Date: Tue, 20 Oct 2020 13:27:28 -0400	[thread overview]
Message-ID: <20201020172742.1483258-8-jsnow@redhat.com> (raw)
In-Reply-To: <20201020172742.1483258-1-jsnow@redhat.com>

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 <jsnow@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20201006235817.3280413-7-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
---
 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,
+)
 
 from . import console_socket, qmp
 from .qmp import QMPMessage, SocketAddrT
@@ -515,17 +521,23 @@ def set_qmp_monitor(self, enabled=True):
             self._qmp_set = False
             self._qmp = None
 
-    def qmp(self, cmd, conv_keys=True, **args):
-        """
-        Invoke a QMP command and return the response dict
-        """
+    @classmethod
+    def _qmp_args(cls, _conv_keys: bool = True, **args: Any) -> Dict[str, Any]:
         qmp_args = dict()
         for key, value in args.items():
-            if conv_keys:
+            if _conv_keys:
                 qmp_args[key.replace('_', '-')] = value
             else:
                 qmp_args[key] = value
+        return qmp_args
 
+    def qmp(self, cmd: str,
+            conv_keys: bool = True,
+            **args: Any) -> QMPMessage:
+        """
+        Invoke a QMP command and return the response dict
+        """
+        qmp_args = self._qmp_args(conv_keys, **args)
         return self._qmp.cmd(cmd, args=qmp_args)
 
     def command(self, cmd, conv_keys=True, **args):
@@ -534,12 +546,8 @@ def command(self, cmd, conv_keys=True, **args):
         On success return the response dict.
         On failure raise an exception.
         """
-        reply = 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 = self._qmp_args(conv_keys, **args)
+        return self._qmp.command(cmd, **qmp_args)
 
     def get_qmp_event(self, wait=False):
         """
-- 
2.26.2



  parent reply	other threads:[~2020-10-20 17:38 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-20 17:27 [PULL 00/21] Python patches John Snow
2020-10-20 17:27 ` [PULL 01/21] MAINTAINERS: Add Python library stanza John Snow
2020-10-20 17:27 ` [PULL 02/21] python/qemu: use isort to lay out imports John Snow
2020-10-20 17:27 ` [PULL 03/21] python/machine.py: Fix monitor address typing John Snow
2020-10-20 17:27 ` [PULL 04/21] python/machine.py: reorder __init__ John Snow
2020-10-20 17:27 ` [PULL 05/21] python/machine.py: Don't modify state in _base_args() John Snow
2020-10-20 17:27 ` [PULL 06/21] python/machine.py: Handle None events in events_wait John Snow
2020-10-20 17:27 ` John Snow [this message]
2020-10-20 17:27 ` [PULL 08/21] python/machine.py: Add _qmp access shim John Snow
2020-10-20 17:27 ` [PULL 09/21] python/machine.py: fix _popen access John Snow
2020-10-20 17:27 ` [PULL 10/21] python/qemu: make 'args' style arguments immutable John Snow
2020-10-20 17:27 ` [PULL 11/21] iotests.py: Adjust HMP kwargs typing John Snow
2020-10-20 17:27 ` [PULL 12/21] python/qemu: Add mypy type annotations John Snow
2020-10-20 17:27 ` [PULL 13/21] python/qemu/console_socket.py: Correct type of recv() John Snow
2020-10-20 17:27 ` [PULL 14/21] python/qemu/console_socket.py: fix typing of settimeout John Snow
2020-10-20 17:27 ` [PULL 15/21] python/qemu/console_socket.py: Clarify type of drain_thread John Snow
2020-10-20 17:27 ` [PULL 16/21] python/qemu/console_socket.py: Add type hint annotations John Snow
2020-10-20 17:27 ` [PULL 17/21] python/qemu/console_socket.py: avoid encoding to/from string John Snow
2020-10-20 17:27 ` [PULL 18/21] python/qemu/qmp.py: Preserve error context on re-raise John Snow
2020-10-20 17:27 ` [PULL 19/21] python: add mypy config John Snow
2020-10-20 17:27 ` [PULL 20/21] python/qemu/qmp.py: re-raise OSError when encountered John Snow
2020-10-20 18:15   ` Nir Soffer
2020-10-20 19:06     ` John Snow
2020-10-20 17:27 ` [PULL 21/21] python/qemu/qmp.py: Fix settimeout operation John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201020172742.1483258-8-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.