qapi: Add feature flags to struct types
commit6a8c0b51025314cdb1a8b4be24d45e690f1217dd
authorKevin Wolf <kwolf@redhat.com>
Thu, 6 Jun 2019 15:37:57 +0000 (6 17:37 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Wed, 12 Jun 2019 16:34:26 +0000 (12 18:34 +0200)
treec4fb5778169c61051d941b3f9d0deb8d6d608ee2
parent2ea8e96da2974512f27fab03758b301dff180b6d
qapi: Add feature flags to struct types

Sometimes, the behaviour of QEMU changes without a change in the QMP
syntax (usually by allowing values or operations that previously
resulted in an error). QMP clients may still need to know whether
they can rely on the changed behavior.

Let's add feature flags to the QAPI schema language, so that we can make
such changes visible with schema introspection.

An example for a schema definition using feature flags looks like this:

    { 'struct': 'TestType',
      'data': { 'number': 'int' },
      'features': [ 'allow-negative-numbers' ] }

Introspection information then looks like this:

    { "name": "TestType", "meta-type": "object",
      "members": [
          { "name": "number", "type": "int" } ],
      "features": [ "allow-negative-numbers" ] }

This patch implements feature flags only for struct types. We'll
implement them more widely as needed.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20190606153803.5278-2-armbru@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
docs/devel/qapi-code-gen.txt
qapi/introspect.json
scripts/qapi/common.py
scripts/qapi/doc.py
scripts/qapi/introspect.py
scripts/qapi/types.py
scripts/qapi/visit.py
tests/qapi-schema/double-type.err
tests/qapi-schema/test-qapi.py
tests/qapi-schema/unknown-expr-key.err