From: Markus Armbruster <armbru@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: amit.shah@redhat.com, liang.z.li@intel.com,
qemu-devel@nongnu.org, quintela@redhat.com
Subject: Re: [Qemu-devel] [RFC 1/1] Execute arbitrary QMP commands from command line
Date: Fri, 30 Jan 2015 09:34:48 +0100 [thread overview]
Message-ID: <87a910wtsn.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <20150129202154.GH2391@work-vm> (David Alan Gilbert's message of "Thu, 29 Jan 2015 20:21:55 +0000")
"Dr. David Alan Gilbert" <dgilbert@redhat.com> writes:
> * Eric Blake (eblake@redhat.com) wrote:
>> On 01/29/2015 09:28 AM, Dr. David Alan Gilbert wrote:
>> > * Eric Blake (eblake@redhat.com) wrote:
>> > > On 01/29/2015 08:54 AM, Dr. David Alan Gilbert wrote:
>> > > >> The idea of a QMP command to trigger incoming migration looks
>> > > >> reasonable. We can probably use a qapi union for a nicer syntax,
>> > > >> something like:
>> > > >>
>> > > >> {"execute": "migrate-incoming", "arguments": {
>> > > >> "type": "tcp", "port": 44 } }
>> > > >> vs.
>> > > >> {"execute": "migrate-incoming", "arguments": {
>> > > >> "type": "fd", "fd": 0 } }
>> > > >> vs.
>> > > >> {"execute": "migrate-incoming", "arguments": {
>> > > >> "type": "exec", "command": [ "cat", "/path/to/file" ] } }
>> > > >>
>> > > >> and so forth.
>> > > >
>> > > > Compared to just taking a URI argument that Dan suggested, that's quite a
>> > > > bit of rework to do the reworking of each transport which is pretty
>> > > > trivial.
>> > >
>> > > Yes, but getting the interface right means that adding future extensions
>> > > will be easier, with less string parsing hacks.
We have a general rule for QMP: no syntax embedded in string arguments,
use JSON.
>> > I guess so, but I still have to maintain the -incoming string interface
>> > and an HMP equivalent of whatever we come up with here.
The HMP equivalent may or may not be needed. If we decide we want it,
reusing the command line's parser there probably makes more sense than
inventing yet another syntax.
>> > So what would the .args_type look like in qmp-commands.hx;
>> > something like this?
>> >
>> > .args-type = "type:s,port:-i,host:-s,command:-s"
>>
>> No, it would be more like the blockdev-add interface, where one command
>> accepts a dictionary object containing a union of valid values, where
>> the set of valid values is determined by the discriminator field.
>> .args_type = "options:q".
Note that blockdev-add has wraps its arguments rather inelegantly: it
takes a single argument 'options' of union type 'BlockdevOptions'.
Because of that, you have to write
"arguments": { "options" : { ... } }
instead of just
"arguments": { ... }
I'd love to get that cleaned up, but Kevin is already worrying about
backwards compatibility. He has a point in theory, because we neglected
to mark blockdev-add as unstable. I have a point in practice, because
blockdev-add hasn't been usable for real work (as some of our poor users
discovered the hard way) due to numerous restrictions we're still busy
lifting. Anyway, I digressed, back to the topic at hand.
> What causes the parser to generate a 'BlockdevOptions' as opposed to any
> standard options type for the parameter of qmp_blockdev_add?
qmp-commands.hx is a relict. It's still around because we still haven't
completed the conversion of QMP to QAPI. We suck :)
The QAPI schema defines QMP commands. The marshalling / unmarshalling
code mapping between QMP the text protocol and actual QMP command
handlers written in C gets generated from the schema.
docs/qapi-code-gen.txt explains this. A much improved version is
sitting in Eric's queue[*]. Perhaps Eric can provide a pointer to his
current version.
qmp-commands.hx duplicates some of the schema information, partly in
dumbed down form, and adds a bit more.
[*] Sorry Eric, could not resist poking you again :)
next prev parent reply other threads:[~2015-01-30 8:35 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-29 15:06 [Qemu-devel] [RFC 0/1] Incoming migration vs early monitor commands Dr. David Alan Gilbert (git)
2015-01-29 15:06 ` [Qemu-devel] [RFC 1/1] Execute arbitrary QMP commands from command line Dr. David Alan Gilbert (git)
2015-01-29 15:15 ` Daniel P. Berrange
2015-01-29 15:21 ` Eric Blake
2015-01-29 15:54 ` Dr. David Alan Gilbert
2015-01-29 16:01 ` Eric Blake
2015-01-29 16:28 ` Dr. David Alan Gilbert
2015-01-29 17:45 ` Eric Blake
2015-01-29 20:21 ` Dr. David Alan Gilbert
2015-01-29 20:48 ` Eric Blake
2015-01-30 9:38 ` Dr. David Alan Gilbert
2015-01-30 9:50 ` Paolo Bonzini
2015-01-30 9:56 ` Dr. David Alan Gilbert
2015-02-03 10:12 ` Amit Shah
2015-02-03 11:02 ` Paolo Bonzini
2015-01-30 9:50 ` Daniel P. Berrange
2015-01-30 8:34 ` Markus Armbruster [this message]
2015-01-30 9:20 ` Dr. David Alan Gilbert
2015-01-30 9:43 ` Markus Armbruster
2015-01-30 8:35 ` Markus Armbruster
2015-01-29 15:22 ` Dr. David Alan Gilbert
2015-01-29 15:31 ` Daniel P. Berrange
2015-01-29 15:46 ` Dr. David Alan Gilbert
2015-01-29 15:50 ` Eric Blake
2015-01-29 15:56 ` Dr. David Alan Gilbert
2015-01-29 15:58 ` Daniel P. Berrange
2015-01-30 9:52 ` Paolo Bonzini
2015-01-30 10:02 ` Dr. David Alan Gilbert
2015-01-30 10:27 ` Paolo Bonzini
2015-01-29 15:25 ` [Qemu-devel] [RFC 0/1] Incoming migration vs early monitor commands Eric Blake
2015-01-29 23:08 ` Paolo Bonzini
2015-01-30 9:42 ` Dr. David Alan Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a910wtsn.fsf@blackfin.pond.sub.org \
--to=armbru@redhat.com \
--cc=amit.shah@redhat.com \
--cc=dgilbert@redhat.com \
--cc=liang.z.li@intel.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.