aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2020-10-06 19:58:03 -0400
committerJohn Snow <jsnow@redhat.com>2020-10-20 09:37:57 -0400
commitaaa81ec6093b2d45d5a318227db82fa71680a871 (patch)
treee8c792c393916603afd883174c91984fde194576
parent1847a4a8c209379cd7f6788c0dcd5c17c2bf0907 (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.py32
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):
"""