[libvirt] [PATCH 10/15] qemu: capabilities: Add support for QMP schema introspection

Peter Krempa pkrempa at redhat.com
Fri Oct 21 13:29:43 UTC 2016


On Thu, Oct 20, 2016 at 15:05:21 -0500, Eric Blake wrote:
> On 10/20/2016 10:25 AM, Peter Krempa wrote:

[...]

> > +            continue;
> > +        } else if (STREQ(metatype, "object")) {
> > +            if (**query == '+')
> > +                basename = virQEMUCapsQMPSchemaObjectGetType(*query + 1,
> > +                                                             "variants",
> > +                                                             "case", base);
> > +            else
> > +                basename = virQEMUCapsQMPSchemaObjectGetType(*query,
> > +                                                             "members",
> > +                                                             "name",
> > +                                                             base);
> 
> I'm a bit worried here.  Qemu promises that a name should not disappear
> from a QMP command, but warns that between releases, locating that name
> may migrate from the 'names' array (always present) to the 'variants'
> array (present only under some circumstances), based on what else was
> added to the command in the meantime.  I guess what that means is that
> when qemu re-does a type layout, it may mean that we need two separate
> query paths (one for the old layout, one for the new) to properly detect
> the existence of that capability under all versions of qemu.  I don't
> think it is a show-stopper, but is something to be aware of.

This is very unpleasant to code against. Looking into all variants would
certainly be wrong in some cases.i

I think we can possibly add a '*' operator for the variant, which could
iterate all the variants and find the first match. I've prepared the
function for recursion as I wanted to implement the 'alternate's this
way.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20161021/1049f20e/attachment-0001.sig>


More information about the libvir-list mailing list