mirror of https://gitee.com/openkylin/qemu.git
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>
This commit is contained in:
parent
1847a4a8c2
commit
aaa81ec609
|
@ -25,7 +25,13 @@
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
from types import TracebackType
|
from types import TracebackType
|
||||||
from typing import List, Optional, Type
|
from typing import (
|
||||||
|
Any,
|
||||||
|
Dict,
|
||||||
|
List,
|
||||||
|
Optional,
|
||||||
|
Type,
|
||||||
|
)
|
||||||
|
|
||||||
from . import console_socket, qmp
|
from . import console_socket, qmp
|
||||||
from .qmp import QMPMessage, SocketAddrT
|
from .qmp import QMPMessage, SocketAddrT
|
||||||
|
@ -515,17 +521,23 @@ def set_qmp_monitor(self, enabled=True):
|
||||||
self._qmp_set = False
|
self._qmp_set = False
|
||||||
self._qmp = None
|
self._qmp = None
|
||||||
|
|
||||||
def qmp(self, cmd, conv_keys=True, **args):
|
@classmethod
|
||||||
"""
|
def _qmp_args(cls, _conv_keys: bool = True, **args: Any) -> Dict[str, Any]:
|
||||||
Invoke a QMP command and return the response dict
|
|
||||||
"""
|
|
||||||
qmp_args = dict()
|
qmp_args = dict()
|
||||||
for key, value in args.items():
|
for key, value in args.items():
|
||||||
if conv_keys:
|
if _conv_keys:
|
||||||
qmp_args[key.replace('_', '-')] = value
|
qmp_args[key.replace('_', '-')] = value
|
||||||
else:
|
else:
|
||||||
qmp_args[key] = value
|
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)
|
return self._qmp.cmd(cmd, args=qmp_args)
|
||||||
|
|
||||||
def command(self, cmd, conv_keys=True, **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 success return the response dict.
|
||||||
On failure raise an exception.
|
On failure raise an exception.
|
||||||
"""
|
"""
|
||||||
reply = self.qmp(cmd, conv_keys, **args)
|
qmp_args = self._qmp_args(conv_keys, **args)
|
||||||
if reply is None:
|
return self._qmp.command(cmd, **qmp_args)
|
||||||
raise qmp.QMPError("Monitor is closed")
|
|
||||||
if "error" in reply:
|
|
||||||
raise qmp.QMPResponseError(reply)
|
|
||||||
return reply["return"]
|
|
||||||
|
|
||||||
def get_qmp_event(self, wait=False):
|
def get_qmp_event(self, wait=False):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue