Skip to content
Snippets Groups Projects
  1. Oct 27, 2021
    • Markus Armbruster's avatar
      qapi: Enable enum member introspection to show more than name · 75ecee72
      Markus Armbruster authored
      
      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.
      
         We want a ['SchemaInfoEnumMember'] member in SchemaInfoEnum.  Since
         changing @values would be a compatibility break, add a new member
         @members instead.
      
         @values is now redundant.  In my testing, output of
         qemu-system-x86_64's query-qmp-schema grows by 11% (18.5KiB).
      
         We can deprecate @values now and drop it later.  This will break
         outmoded clients.  Well-behaved clients such as libvirt are
         expected to break cleanly.
      
      2. Like 1, but omit "boring" elements of @member, and empty @member.
      
         @values does not become redundant.  @members augments it.  Somewhat
         cumbersome, but output of query-qmp-schema grows only as we make
         enum members non-boring.
      
         There is nothing to deprecate here.
      
      3. Versioned query-qmp-schema.
      
         query-qmp-schema provides either @values or @members.  The QMP
         client can select which version it wants.  There is no redundant
         output.
      
         We can deprecate old versions and eventually drop them.  This will
         break outmoded clients.  Breaking cleanly is easier than for 1.
      
         While 1 and 2 operate within the common rules for compatible
         evolution apply (section "Compatibility considerations" in
         docs/devel/qapi-code-gen.rst), 3 bypasses them.  Attractive when
         operating within the rules is just too awkward.  Not the case here.
      
      This commit implements 1.  Libvirt developers prefer it.
      
      Deprecate @values in favour of @members.  Since query-qmp-schema
      compatibility is pretty fundamental for management applications, an
      extended grace period is advised.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Tested-by: default avatarPeter Krempa <pkrempa@redhat.com>
      Acked-by: default avatarPeter Krempa <pkrempa@redhat.com>
      Message-Id: <20211025042405.3762351-2-armbru@redhat.com>
      Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
      75ecee72
    • Markus Armbruster's avatar
      qapi: Improve input_type_enum()'s error message · ea29331b
      Markus Armbruster authored
      The error message claims the parameter is invalid:
      
          $ qemu-system-x86_64 -object qom-type=nonexistent
          qemu-system-x86_64: -object qom-type=nonexistent: Invalid parameter 'nonexistent'
      
      What's wrong is actually the *value* 'nonexistent'.  Improve the
      message to
      
          qemu-system-x86_64: -object qom-type=nonexistent: Parameter 'qom-type' does not accept value 'nonexistent'
      
      Fixes: https://gitlab.com/qemu-project/qemu/-/issues/608
      
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20211020180231.434071-1-armbru@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      ea29331b
  2. Oct 26, 2021
  3. Oct 25, 2021
  4. Oct 23, 2021
  5. Oct 22, 2021
Loading