All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	kwolf@redhat.com, qemu-devel@nongnu.org, lcapitulino@redhat.com,
	arei.gonglei@huawei.com, pbonzini@redhat.com, afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH v2] qom: Implement qom-get HMP command
Date: Mon, 19 Sep 2016 10:54:49 +0100	[thread overview]
Message-ID: <20160919095449.GJ15201@redhat.com> (raw)
In-Reply-To: <87d1k0l036.fsf@dusky.pond.sub.org>

On Mon, Sep 19, 2016 at 11:18:05AM +0200, Markus Armbruster wrote:
> "Daniel P. Berrange" <berrange@redhat.com> writes:
> 
> > On Wed, Sep 14, 2016 at 11:30:06AM +0100, Dr. David Alan Gilbert wrote:
> >> * Markus Armbruster (armbru@redhat.com) wrote:
> >> > "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:
> >> > 
> >> > > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >> > >
> >> > > This started off as Andreas Färber's implementation from
> >> > > March 2015, but after feedback from Paolo morphed into
> >> > > using the json output which handles structs reasonably.
> >> > >
> >> > > Use with qom-list to find the members of an object.
> >> > >
> >> > > (qemu) qom-get /backend/console[0]/device/vga.rom[0] size
> >> > > 65536
> >> > > (qemu) qom-get /machine smm
> >> > > "auto"
> >> > > (qemu) qom-get /machine rtc-time
> >> > > {
> >> > >     "tm_year": 116,
> >> > >     "tm_sec": 0,
> >> > >     "tm_hour": 9,
> >> > >     "tm_min": 46,
> >> > >     "tm_mon": 8,
> >> > >     "tm_mday": 6
> >> > > }
> >> > > (qemu) qom-get /machine frob
> >> > > Property '.frob' not found
> >> > >
> >> > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> >> > 
> >> > Ignorant question: how does qom-set deal with structs?
> >> > 
> >> > I tried the obvious
> >> > 
> >> >     (qemu) qom-set /machine rtc-time abc
> >> >     Insufficient permission to perform this operation
> >> 
> >> I don't think it does.
> >
> > Indeed it can't - qom_set ends up calling object_property_parse which
> > uses string-input-visitor to parse the value, which can only handle
> > scalars as the magic special case list-of-ints.
> >
> > To deal with compound properties would really require us to use a
> > qdict_crumple + qmp_input_visitor combination, similar to how I've
> > made -object and object_add be able to deal with compound properties.
> 
> HMP I/O formats are not ABI.  We can use visitors in whatever way we
> want, as long as we keep -get and -set consistent.  The sane way to do
> that is using the same kind of visitor for both, in its input and output
> form, respectively.
> 
> Right now, qom-set uses the string input visitor.  As long as it does
> that, qom-get should use the string output visitor.  Sadly, this pair of
> visitors is quite limited ("does not implement support for visiting QAPI
> structs, alternates, null, or arbitrary QTypes").  We can extend it to
> cover more, or we can switch to another, less limited pair of visitors.
> 
> Can we agree on what to do so we can have qom-get sooner rather than
> later?  It doesn't have to be perfect, we can iterate.

I think that -object sets the precedent that the rest should ultimately
follow. It currently uses the opts visitor syntax, but is being switched
over to the combination of qdict_crumple + qobject input visitor, which
is basically the same as opts visitor syntax for scalars and with dotted
notation for compound types.

The HMP object_add command will use the exact same syntax as -object
CLI arg. Given this, I think 'qom-set' really ought to be updated to use
qdict_crumple + qobject input visitor too, so it can deal with compound
types. In fact I'd view the lack of conversion of qom-set as a mistake
in my patch series - I should have converted that too, while adding
support for compound properties to -object and object_add.

This ultimately means that qom-get probably ought to use qobject output
visitor, followed by a qdict flatten  operation to turn the nested
dicts/lists, into a flat dict with dotted syntax.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

  reply	other threads:[~2016-09-19  9:55 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-06 10:18 [Qemu-devel] [PATCH v2] qom: Implement qom-get HMP command Dr. David Alan Gilbert (git)
2016-09-06 12:35 ` Andreas Färber
2016-09-06 13:08 ` Daniel P. Berrange
2016-09-06 13:33   ` Dr. David Alan Gilbert
2016-09-09 16:21     ` Markus Armbruster
2016-09-09 17:33       ` Daniel P. Berrange
2016-09-12  7:58         ` Markus Armbruster
2016-09-13  8:39 ` Markus Armbruster
2016-09-14 10:30   ` Dr. David Alan Gilbert
2016-09-14 10:48     ` Daniel P. Berrange
2016-09-19  9:18       ` Markus Armbruster
2016-09-19  9:54         ` Daniel P. Berrange [this message]
2016-09-19 11:54           ` Daniel P. Berrange
2016-09-19 12:00             ` Dr. David Alan Gilbert
2016-09-19 13:11               ` Markus Armbruster

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=20160919095449.GJ15201@redhat.com \
    --to=berrange@redhat.com \
    --cc=afaerber@suse.de \
    --cc=arei.gonglei@huawei.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.