[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 03/11] qom: support arbitrary non-scalar prop
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH v5 03/11] qom: support arbitrary non-scalar properties with -object |
Date: |
Tue, 14 Jun 2016 15:16:56 +0100 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Thu, Jun 09, 2016 at 04:43:35PM +0200, Markus Armbruster wrote:
> "Daniel P. Berrange" <address@hidden> writes:
>
> > The current -object command line syntax only allows for
> > creation of objects with scalar properties, or a list
> > with a fixed scalar element type. Objects which have
> > properties that are represented as structs in the QAPI
> > schema cannot be created using -object.
> >
> > This is a design limitation of the way the OptsVisitor
> > is written. It simply iterates over the QemuOpts values
> > as a flat list. The support for lists is enabled by
> > allowing the same key to be repeated in the opts string.
> >
> > It is not practical to extend the OptsVisitor to support
> > more complex data structures while also maintaining
> > the existing list handling behaviour that is relied upon
> > by other areas of QEMU.
>
> It should be practical to create a new option input visitor that parses
> command line syntax straight into a QAPI visit, without the list magic,
> and with fewer or no restrictions. Then we could start defining complex
> command line arguments as QAPI types, parse them straight into generated
> QAPI types, and dispense with the QDict wrangling.
Funnily enough I did actually start out trying to implement pretty
much exactly that. I found that in my new opts visitor, I was essentially
parsing the QemuOpts into QDict/QLists to handle the recursion from the
visitor. At this point I was starting to duplicate much code from QDict
and QmpInputVisitor, so it abandoned that approach and went for the more
general QemuOpts -> QDict crumping instead, since it the goal to be
achieved with simpler code overall.
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 :|
- [Qemu-devel] [PATCH v5 00/11] Provide a QOM-based authorization API, Daniel P. Berrange, 2016/06/02
- [Qemu-devel] [PATCH v5 04/11] util: add QAuthZ object as an authorization base class, Daniel P. Berrange, 2016/06/02
- [Qemu-devel] [PATCH v5 03/11] qom: support arbitrary non-scalar properties with -object, Daniel P. Berrange, 2016/06/02
- [Qemu-devel] [PATCH v5 05/11] util: add QAuthZSimple object type for a simple access control list, Daniel P. Berrange, 2016/06/02
- [Qemu-devel] [PATCH v5 02/11] qapi: allow QmpInputVisitor to auto-cast types, Daniel P. Berrange, 2016/06/02
[Qemu-devel] [PATCH v5 10/11] chardev: add support for ACLs for TLS clients, Daniel P. Berrange, 2016/06/02
[Qemu-devel] [PATCH v5 06/11] acl: delete existing ACL implementation, Daniel P. Berrange, 2016/06/02
[Qemu-devel] [PATCH v5 07/11] qemu-nbd: add support for ACLs for TLS clients, Daniel P. Berrange, 2016/06/02