[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 01/10] qdict: implement a qdict_crumple metho
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH v1 01/10] qdict: implement a qdict_crumple method for un-flattening a dict |
Date: |
Fri, 19 Feb 2016 17:08:39 +0000 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Fri, Feb 19, 2016 at 10:01:07AM -0700, Eric Blake wrote:
> On 02/19/2016 09:47 AM, Daniel P. Berrange wrote:
> > The qdict_flatten() method will take a dict whose elements are
> > further nested dicts/lists and flatten them by concatenating
> > keys.
> >
> > The qdict_crumple() method aims todo the reverse, taking a flat
>
> s/todo/to do/
>
> > qdict, and turning it into a set of nested dicts/lists. It will
> > apply nesting based on the key name, with a '.' indicating a
> > new level in the hierarchy. If the keys in the nested structure
> > are all numeric, it will create a list, otherwise it will create
> > a dict.
> >
>
> Interesting idea. I haven't closely reviewed the patch yet, but do have
> a comment on the commit message:
>
> >
> > If the key is intended to contain a literal '.', then it must
> > be escaped as '..'. ie a flat dict
>
> Hmm. We forbid the use of '.' inside QAPI key names in most places, but
> have an exception that downstream extensions use '.'. So, I guess the
> only place you'd really use this is trying to target a
> downstream-extension key name:
I originally put code into object_property_add() to forbid use of
a '.' in a property name, but quickly found we have alot of such
usage already :-( On a x86_64 default machine I get:
Property sse4.1 on class qemu64-x86_64-cpu
Property sse4.2 on class qemu64-x86_64-cpu
Property pc.ram[*] on class container
Property pc.ram[0] on class container
Property pc.bios[*] on class container
Property pc.bios[0] on class container
Property pc.rom[*] on class container
Property pc.rom[0] on class container
Property fwcfg.dma[*] on class fw_cfg_io
Property fwcfg.dma[0] on class fw_cfg_io
Property pci.0 on class i440FX-pcihost
Property isa.0 on class PIIX3
Property vga.vram[*] on class VGA
Property vga.vram[0] on class VGA
Property vga.mmio[*] on class container
Property vga.mmio[0] on class container
Property vga.rom[*] on class VGA
Property vga.rom[0] on class VGA
Property e1000.rom[*] on class e1000
Property e1000.rom[0] on class e1000
Property ide.0 on class piix3-ide
Property ide.1 on class piix3-ide
Now none of those are implementing the UserCreatable interface
right now, so wouldn't be a problem for -object usage, but I
felt if we allow '.' in property names for devices, we ought
to make sure the code deals with it everything.
So it seems forbiding '.' in property names won't fly :-(
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 v1 00/10] Provide a QOM-based authorization API, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 01/10] qdict: implement a qdict_crumple method for un-flattening a dict, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 02/10] qapi: allow QmpInputVisitor to auto-cast types, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 04/10] util: add QAuthZ object as an authorization base class, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 03/10] qom: support arbitrary non-scalar properties with -object, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 07/10] qemu-nbd: add support for ACLs for TLS clients, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 06/10] acl: delete existing ACL implementation, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 08/10] nbd: allow an ACL to be set with nbd-server-start QMP command, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 09/10] chardev: add support for ACLs for TLS clients, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 05/10] util: add QAuthZSimple object type for a simple access control list, Daniel P. Berrange, 2016/02/19
- [Qemu-devel] [PATCH v1 10/10] vnc: allow specifying a custom ACL object name, Daniel P. Berrange, 2016/02/19