[libvirt] [PATCH 01/19] virsh: Add QMP command wrapping for 'qemu-monitor-command'
Eric Blake
eblake at redhat.com
Thu Dec 12 18:16:11 UTC 2019
On 12/12/19 11:18 AM, Peter Krempa wrote:
> Issuing simple QMP commands is pain as they need to be wrapped by the
> JSON wrapper:
>
> { "execute": "COMMAND" }
>
> and optionally also:
>
> { "execute": "COMMAND", "arguments":...}
>
> For simple commands without arguments we can add syntax sugar to virsh
> which allows simple usage of QMP and additionally prepares also for
> passing through of the 'arguments' section.
I'd give an example of the new syntax in the commit message:
virsh qemu-monitor-command domain --qmp COMMAND '{ARGUMENTS...}'
as shorthand for
virsh qemu-monitor-command domain '"execute":"COMMAND",
"arguments":{ARGUMENTS...}}'
But the sugar is indeed nice (one less layer of {} JSON).
>
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
> docs/manpages/virsh.rst | 24 +++++++++++++++++-------
> tools/virsh-domain.c | 32 +++++++++++++++++++++++++++++---
> 2 files changed, 46 insertions(+), 10 deletions(-)
>
> - virBufferTrim(&buf, " ", -1);
> + if ((opt = vshCommandOptArgv(ctl, cmd, opt)))
> + command = opt->data;
> + if ((opt = vshCommandOptArgv(ctl, cmd, opt)))
> + arguments = opt->data;
> +
> + if (!command || (arguments && vshCommandOptArgv(ctl, cmd, opt))) {
> + vshError(ctl, "%s", _("-qmp option requires 1 or 2 arguments"));
> + return false;
Should we allow concatenation and/or magic behavior based on whether the
second argument starts with '{'? For example,
virsh qemu-monitor-command --qmp COMMAND key1=1 'key2="str"'
could be shorthand for
virsh qemu-monitor-command '{"execute":"COMMAND", "arguments":{"key1":1,
"key2":"str"}}'
But further sugar can be a separate patch, so this one works as-is:
Reviewed-by: Eric Blake <eblake at redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the libvir-list
mailing list