[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] qmp-shell: fix pretty printing of JSON respo
From: |
Kashyap Chamarthy |
Subject: |
Re: [Qemu-devel] [PATCH v2] qmp-shell: fix pretty printing of JSON responses |
Date: |
Tue, 23 Feb 2016 12:39:39 +0100 |
User-agent: |
Mutt/1.5.23.1 (2014-03-12) |
On Tue, Feb 23, 2016 at 10:51:46AM +0000, Daniel P. Berrange wrote:
> Pretty printing of JSON responses is important to be able to understand
> large responses from query commands in particular. Unfortunately this
> was broken during the addition of the verbose flag in
>
> commit 1ceca07e48ead0dd2e41576c81d40e6a91cafefd
> Author: John Snow <address@hidden>
> Date: Wed Apr 29 15:14:04 2015 -0400
>
> scripts: qmp-shell: Add verbose flag
>
> This is because that change turned the python data structure into a
> formatted JSON string before the pretty print was given it. So we're
> just pretty printing a string, which is a no-op.
>
> The original pretty printer would output python objects.
>
> (QEMU) query-chardev
> { u'return': [ { u'filename': u'vc',
> u'frontend-open': False,
> u'label': u'parallel0'},
> { u'filename': u'vc',
> u'frontend-open': True,
> u'label': u'serial0'},
> { u'filename': u'unix:/tmp/qemp,server',
> u'frontend-open': True,
> u'label': u'compat_monitor0'}]}
For me, without your patch (I was testing from 'v2.5.0-1307-g80b5d6b')
the output doesn't even look like the above -- when `qmp-shell -p
/path/to/socket` is invoked, and I type in any of the query commands,
what I see is long unterminated JSON output.
> This fixes the problem by switching to outputting pretty formatted JSON
> text instead. This has the added benefit that the pretty printed output
> is now valid JSON text. Due to the way the verbose flag was handled, the
> pretty printing now applies to the command sent, as well as its response:
>
> (QEMU) query-chardev
> {
> "execute": "query-chardev",
> "arguments": {}
> }
> {
> "return": [
> {
> "frontend-open": false,
> "label": "parallel0",
> "filename": "vc"
> },
> {
> "frontend-open": true,
> "label": "serial0",
> "filename": "vc"
> },
> {
> "frontend-open": true,
> "label": "compat_monitor0",
> "filename": "unix:/tmp/qmp,server"
> }
> ]
> }
Works nice here. I ran for a bunch fo query-commands:
$ git describe
pull-io-next-2016-02-16-1-221-ga043f9c
[Fire up QEMU with '-qmp unix:./qmp-sock,server'
$ ./qmp-shell -p /var/tmp/qmp-sock
[...]
(QEMU) query-named-block-nodes
{
"return": [
{
"bps_rd": 0,
"ro": false,
"backing_file_depth": 1,
"encrypted": false,
"image": {
"cluster-size": 65536,
"backing-image": {
"cluster-size": 65536,
"format": "qcow2",
"filename": "/export/tests//cirros-0.3.3.img",
"virtual-size": 41126400,
"dirty-flag": false,
"format-specific": {
"data": {
"compat": "0.10",
"refcount-bits": 16
},
"type": "qcow2"
},
"actual-size": 14446592
},
"format": "qcow2",
"full-backing-filename": "/export/tests//cirros-0.3.3.img",
"backing-filename-format": "qcow2",
"filename": "./ext-snap1.qcow2",
"dirty-flag": false,
"virtual-size": 41126400,
"backing-filename": "/export/tests//cirros-0.3.3.img",
"format-specific": {
"data": {
"compat": "1.1",
"refcount-bits": 16,
"corrupt": false,
"lazy-refcounts": false
},
"type": "qcow2"
},
"actual-size": 200704
},
[...]
> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
> scripts/qmp/qmp-shell | 23 ++++++++++-------------
> 1 file changed, 10 insertions(+), 13 deletions(-)
FWIW:
Tested-by: Kashyap Chamarthy <address@hidden>
[...]
--
/kashyap