@@ -40,6 +40,7 @@ See also: https://wiki.qemu.org/Features/QAPI/GuestAgent
import argparse
import base64
+import errno
import os
import random
import sys
@@ -49,6 +50,13 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
from qemu import qmp
+# This script has not seen many patches or careful attention in quite
+# some time. If you would like to improve it, please review the design
+# carefully and add docstrings at that point in time. Until then:
+
+# pylint: disable=missing-docstring
+
+
class QemuGuestAgent(qmp.QEMUMonitorProtocol):
def __getattr__(self, name):
def wrapper(**kwds):
@@ -104,7 +112,8 @@ class QemuGuestAgentClient:
return '\n'.join(msgs)
- def __gen_ipv4_netmask(self, prefixlen):
+ @classmethod
+ def __gen_ipv4_netmask(cls, prefixlen):
mask = int('1' * prefixlen + '0' * (32 - prefixlen), 2)
return '.'.join([str(mask >> 24),
str((mask >> 16) & 0xff),
@@ -207,10 +216,12 @@ def _cmd_fstrim(client, args):
def _cmd_ifconfig(client, args):
+ assert not args
print(client.ifconfig())
def _cmd_info(client, args):
+ assert not args
print(client.info())
@@ -239,6 +250,7 @@ def _cmd_suspend(client, args):
def _cmd_shutdown(client, args):
+ assert not args
client.shutdown()
@@ -246,10 +258,12 @@ _cmd_powerdown = _cmd_shutdown
def _cmd_halt(client, args):
+ assert not args
client.shutdown('halt')
def _cmd_reboot(client, args):
+ assert not args
client.shutdown('reboot')
@@ -269,8 +283,6 @@ def send_command(address, cmd, args):
try:
client = QemuGuestAgentClient(address)
except OSError as err:
- import errno
-
print(err)
if err.errno == errno.ECONNREFUSED:
print('Hint: qemu is not running?')
I'm only doing a very quick best-effort to preserve this script, to help keep it from breaking further. I think there are pending ideas swirling on the right way to implement better SDKs and better clients, and this script might be a handy reference for those discussions. It presents some interesting design problems, like static type safety when using an RPC-like mechanism. So; disable docstrings for now. If you would like to help improve this script, please add docstrings alongside any refactors or rejuvenations you might apply at that time. Signed-off-by: John Snow <jsnow@redhat.com> --- scripts/qmp/qemu-ga-client | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)