On Sat, Oct 09, 2021 at 02:09:40PM +0200, Markus Armbruster wrote: > The next commit will add feature flags to enum members. There's a > problem, though: query-qmp-schema shows an enum type's members as an > array of member names (SchemaInfoEnum member @values). If it showed > an array of objects with a name member, we could simply add more > members to these objects. Since it's just strings, we can't. > > I can see three ways to correct this design mistake: > > 1. Do it the way we should have done it, plus compatibility goo. ... > 2. Like 1, but omit "boring" elements of @member, and empty @member. > 3. Versioned query-qmp-schema. > This commit implements 1. Libvirt developers prefer it. > > Signed-off-by: Markus Armbruster <armbru@xxxxxxxxxx> > --- > qapi/introspect.json | 21 +++++++++++++++++++-- > scripts/qapi/introspect.py | 18 ++++++++++++++---- > 2 files changed, 33 insertions(+), 6 deletions(-) Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> > > diff --git a/qapi/introspect.json b/qapi/introspect.json > index 39bd303778..f806bd7281 100644 > --- a/qapi/introspect.json > +++ b/qapi/introspect.json > @@ -142,14 +142,31 @@ > # > # Additional SchemaInfo members for meta-type 'enum'. > # > -# @values: the enumeration type's values, in no particular order. > +# @members: the enum type's members, in no particular order > +# (since 6.2). > +# > +# @values: the enumeration type's member names, in no particular order. > +# Redundant with @members. Just for backward compatibility. > # > # Values of this type are JSON string on the wire. > # > # Since: 2.5 > ## > { 'struct': 'SchemaInfoEnum', > - 'data': { 'values': ['str'] } } > + 'data': { 'members': [ 'SchemaInfoEnumMember' ], > + 'values': ['str'] } } Not deprecated at this time, I agree with your choice to make the actual deprecation of 'values' to be in a later patch (if at all). > + > +## > +# @SchemaInfoEnumMember: > +# > +# An object member. > +# > +# @name: the member's name, as defined in the QAPI schema. > +# > +# Since: 6.2 > +## > +{ 'struct': 'SchemaInfoEnumMember', > + 'data': { 'name': 'str' } } Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org