Eduardo Habkost <ehabk...@redhat.com> writes: > On Wed, Aug 16, 2017 at 08:25:41AM +0200, Markus Armbruster wrote: >> Eduardo Habkost <ehabk...@redhat.com> writes: >> >> > On Tue, Aug 15, 2017 at 12:03:53PM +0200, Markus Armbruster wrote: >> >> Eduardo Habkost <ehabk...@redhat.com> writes: >> >> >> >> Suggest to insert here: >> >> >> >> If additional arguments QMP-COMMAND ARG=VAL... are given, run just >> >> that QMP command instead of the REPL. >> >> >> >> Question: is this limited to simple arguments? If no, how would I write >> >> an object argument? For instance, how would I do >> >> >> >> { "execute": "blockdev-add", "arguments": { "node-name": "foo", >> >> "driver": "nbd", "server": { "type": "inet", "host": "localhost", "port": >> >> "12345" } } } >> >> >> >> ? >> > >> > Exactly the same way you would write it when running qmp-shell in >> > interactive mode. e.g.: >> > >> > $ ./scripts/qmp/qmp-shell /tmp/qmp blockdev-add driver=qcow2 >> > node-name=node-E 'file={"driver":"file","filename":"/path/to/file.qcow2"}' >> >> I see. >> >> The QEMU command line uses dotted key syntax instead. > > You mean -blockdev, or is there another way to send QMP commands > to QEMU that I'm not aware of?
Dotted keys were invented for the block layer's -drive. I adopted them for -blockdev after considerable discussion. The -blockdev code is all new, and it even has documentation and tests. >> To be honest, the less qmp-shell is used, the happier I am. > > What people would use instead of it? The syntactic sugar qmp-shell provides over plain QMP doesn't simplify its use all that much, and it can get in the way. For my interactive QMP needs, I use $ socat UNIX:/wherever/qmp-socket READLINE,history=$HOME/.qmp_history,prompt='QMP> ' In programs, I send or receive either plain text or JSON objects, depending on the program's needs. Libqtest supports the latter. >> Would you >> like to serve as its sub-maintainer? > > I'd be glad to. Great! Please post a suitable MAINTAINERS stanza.