[libvirt] [PATCH 01/19] virsh: Add QMP command wrapping for 'qemu-monitor-command'
Peter Krempa
pkrempa at redhat.com
Fri Dec 13 07:04:51 UTC 2019
On Thu, Dec 12, 2019 at 19:30:27 +0100, Michal Privoznik wrote:
> On 12/12/19 7:16 PM, Eric Blake wrote:
> > 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).
>
> Since we won't use HMP to talk to qemu ever (even the small set of HMP
> commands we have are wrapped inside QMP once being sent down the wire), can
Specifically you already must use --hmp if you ever want to use HMP.
> we not use --qmp flag at all? Just look if there's "execute" in the user's
> input and if not add it there. For instance:
>
> virsh qemu-monitor-command query-machines
>
> will expand to
>
> {"execute":"query-machines"}
At first I wanted to argue that I'd like to support passing raw
unmodified commands to qemu, but in fact libvirt itself parses the
string as JSON so that it can be re-wrapped with the monitor sequence
field, so you have to pass in JSON anyways.
Thus I'm okay with dropping the flag and deciding on whether the opening
'{' is present on input.
More information about the libvir-list
mailing list