diff options
author | John Snow <jsnow@redhat.com> | 2020-10-06 19:58:03 -0400 |
---|---|---|
committer | John Snow <jsnow@redhat.com> | 2020-10-20 09:37:57 -0400 |
commit | aaa81ec6093b2d45d5a318227db82fa71680a871 (patch) | |
tree | e8c792c393916603afd883174c91984fde194576 | |
parent | 1847a4a8c209379cd7f6788c0dcd5c17c2bf0907 (diff) |
python/machine.py: use qmp.command
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>
-rw-r--r-- | python/qemu/machine.py | 32 |
1 files 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 signal 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 @@ class QEMUMachine: 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 @@ class QEMUMachine: 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): """ |