From: Luiz Capitulino <lcapitulino@redhat.com>
To: aliguori@us.ibm.com
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 01/19] Add support for pretty-printing response in qmp-shell
Date: Wed, 5 Sep 2012 15:58:28 -0300 [thread overview]
Message-ID: <1346871526-25342-2-git-send-email-lcapitulino@redhat.com> (raw)
In-Reply-To: <1346871526-25342-1-git-send-email-lcapitulino@redhat.com>
From: "Daniel P. Berrange" <berrange@redhat.com>
Add a '-p' arg to the QMP/qmp-shell test program, which uses
the python pprint module to pretty-print the dictionary
returned from a command
$ qmp-shell -p /tmp/qemu
Welcome to the QMP low-level shell!
Connected to QEMU 1.1.50
(QEMU) query-cpus
{ u'return': [ { u'CPU': 0,
u'current': True,
u'halted': True,
u'pc': 1048556,
u'thread_id': 7108}]}
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
QMP/qmp-shell | 46 +++++++++++++++++++++++++++++++++-------------
1 file changed, 33 insertions(+), 13 deletions(-)
diff --git a/QMP/qmp-shell b/QMP/qmp-shell
index 42dabc8..24b665c 100755
--- a/QMP/qmp-shell
+++ b/QMP/qmp-shell
@@ -33,6 +33,7 @@
import qmp
import readline
import sys
+import pprint
class QMPCompleter(list):
def complete(self, text, state):
@@ -52,10 +53,11 @@ class QMPShellBadPort(QMPShellError):
# TODO: QMPShell's interface is a bit ugly (eg. _fill_completion() and
# _execute_cmd()). Let's design a better one.
class QMPShell(qmp.QEMUMonitorProtocol):
- def __init__(self, address):
+ def __init__(self, address, pp=None):
qmp.QEMUMonitorProtocol.__init__(self, self.__get_address(address))
self._greeting = None
self._completer = None
+ self._pp = pp
def __get_address(self, arg):
"""
@@ -114,7 +116,11 @@ class QMPShell(qmp.QEMUMonitorProtocol):
if resp is None:
print 'Disconnected'
return False
- print resp
+
+ if self._pp is not None:
+ self._pp.pprint(resp)
+ else:
+ print resp
return True
def connect(self):
@@ -222,22 +228,36 @@ def die(msg):
def fail_cmdline(option=None):
if option:
sys.stderr.write('ERROR: bad command-line option \'%s\'\n' % option)
- sys.stderr.write('qemu-shell [ -H ] < UNIX socket path> | < TCP address:port >\n')
+ sys.stderr.write('qemu-shell [ -p ] [ -H ] < UNIX socket path> | < TCP address:port >\n')
sys.exit(1)
def main():
addr = ''
+ qemu = None
+ hmp = False
+ pp = None
+
try:
- if len(sys.argv) == 2:
- qemu = QMPShell(sys.argv[1])
- addr = sys.argv[1]
- elif len(sys.argv) == 3:
- if sys.argv[1] != '-H':
- fail_cmdline(sys.argv[1])
- qemu = HMPShell(sys.argv[2])
- addr = sys.argv[2]
- else:
- fail_cmdline()
+ for arg in sys.argv[1:]:
+ if arg == "-H":
+ if qemu is not None:
+ fail_cmdline(arg)
+ hmp = True
+ elif arg == "-p":
+ if pp is not None:
+ fail_cmdline(arg)
+ pp = pprint.PrettyPrinter(indent=4)
+ else:
+ if qemu is not None:
+ fail_cmdline(arg)
+ if hmp:
+ qemu = HMPShell(arg)
+ else:
+ qemu = QMPShell(arg, pp)
+ addr = arg
+
+ if qemu is None:
+ fail_cmdline()
except QMPShellBadPort:
die('bad port number in command-line')
--
1.7.11.2.249.g31c7954.dirty
next prev parent reply other threads:[~2012-09-05 18:58 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-05 18:58 [Qemu-devel] [PULL 00/19]: QMP queue Luiz Capitulino
2012-09-05 18:58 ` Luiz Capitulino [this message]
2012-09-05 18:58 ` [Qemu-devel] [PATCH 02/19] fix doc of using raw values with sendkey Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 03/19] monitor: rename keyname '<' to 'less' Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 04/19] hmp: rename arguments Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 05/19] qapi: generate list struct and visit_list for enum Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 06/19] qapi: add the QKeyCode enum Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 07/19] monitor: move key_defs[] table and introduce two help functions Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 08/19] qapi: convert sendkey Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 09/19] qapi: Fix potential NULL pointer segfault Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 10/19] json-parser: " Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 11/19] error: add error_setg() Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 12/19] console: vga_hw_screen_dump_ptr: take Error argument Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 13/19] qapi: convert screendump Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 14/19] vga: ppm_save(): add error handling Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 15/19] omap_lcdc: rename ppm_save() to omap_ppm_save() Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 16/19] omap_lcdc: omap_ppm_save(): add error handling Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 17/19] g364fb: g364fb_screen_dump(): " Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 18/19] tcx: tcx24_screen_dump(): " Luiz Capitulino
2012-09-05 18:58 ` [Qemu-devel] [PATCH 19/19] tcx: tcx_screen_dump(): " Luiz Capitulino
2012-09-10 13:18 ` [Qemu-devel] [PULL 00/19]: QMP queue Aurelien Jarno
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=1346871526-25342-2-git-send-email-lcapitulino@redhat.com \
--to=lcapitulino@redhat.com \
--cc=aliguori@us.ibm.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).