qmp: Redo how the client requests out-of-band execution
commit00ecec151d2323e742af94cccf2de77025f3c0c1
authorMarkus Armbruster <armbru@redhat.com>
Tue, 3 Jul 2018 08:53:38 +0000 (3 10:53 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 3 Jul 2018 21:18:56 +0000 (3 23:18 +0200)
treeb7e0beaf23bc7e56f0a76e5ef5bd41f1e4247edd
parent674ed7228f03150d15703961ea2a59cd744f3beb
qmp: Redo how the client requests out-of-band execution

Commit cf869d53172 "qmp: support out-of-band (oob) execution" added a
general mechanism for command-independent arguments just for an
out-of-band flag:

    The "control" key is introduced to store this extra flag.  "control"
    field is used to store arguments that are shared by all the commands,
    rather than command specific arguments.  Let "run-oob" be the first.

However, it failed to reject unknown members of "control".  For
instance, in QMP command

    {"execute": "query-name", "id": 42, "control": {"crap": true}}

"crap" gets silently ignored.

Instead of fixing this, revert the general "control" mechanism
(because YAGNI), and do it the way I initially proposed, with key
"exec-oob".  Simpler code, simpler interface.

An out-of-band command

    {"execute": "migrate-pause", "id": 42, "control": {"run-oob": true}}

becomes

    {"exec-oob": "migrate-pause", "id": 42}

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180703085358.13941-13-armbru@redhat.com>
[Commit message typo fixed]
docs/devel/qapi-code-gen.txt
docs/interop/qmp-spec.txt
monitor.c
qapi/qmp-dispatch.c
tests/qmp-test.c
tests/test-qga.c