[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC 0/5] Subject: [PATCH RFC 0/5] qapi: Add feature flags to
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [PATCH RFC 0/5] Subject: [PATCH RFC 0/5] qapi: Add feature flags to enum members |
Date: |
Thu, 16 Sep 2021 10:18:20 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 |
Great! Thanks for working on this!
15.09.2021 22:24, Markus Armbruster wrote:
PATCH 1+2 add feature flags to enum members. Awkward due to an
introspection design mistake; see PATCH 1 for details. Feedback
welcome, in particular from management application guys.
PATCH 3+4 implement policy deprecated-input={reject,crash} for enum
values.
Policy deprecated-output=hide is not implemented, because we can't
hide a value without hiding the entire member, which is almost
certainly more than the requester of this policy bargained for.
Perhaps we want a new policy deprecated-output=crash to help us catch
unwanted use of deprecated enum values. Thoughts?
I think crash policy for output is doubtful. If we have query-* command that returns a
lot of things and some of them are deprecated the whole command will always crash..
Deprecated is "use" of the deprecated field, but we can't control does user use
a specific field or not.
If some deprecated output is a consequence of deprecated input, we'd better
always show it.. Or in other words, we shouldn't deprecate such output,
deprecating of the corresponding input is enough.
So, we are saying about showing some internal state to the user. And part of
this state becomes deprecated because internal implementation changed. I think
the only correct thing to do is handle deprecated=hide by hand, in the place
where we set this deprecated field. Only at this place we can decide, should we
simulate old deprecated output value or not. For this we'll need a possibility
to get current policy at any place, but that doesn't seem to be a problem, I
see, it's just a global variable compat_policy.
PATCH 5 puts the new feature flags to use. It makes sense only on top
of Vladimir's deprecation of drive-backup. See its commit message for
a reference.
Based on my "[PATCH 00/22] qapi: Remove simple unions from the schema
language".
Based-on: Message-Id: <20210913123932.3306639-1-armbru@redhat.com>
Markus Armbruster (5):
qapi: Enable enum member introspection to show more than name
qapi: Add feature flags to enum members
qapi: Move compat policy from QObject to generic visitor
qapi: Implement deprecated-input={reject,crash} for enum values
block: Deprecate transaction type drive-backup
docs/devel/qapi-code-gen.rst | 4 ++-
qapi/compat.json | 3 +++
qapi/introspect.json | 23 ++++++++++++++--
qapi/transaction.json | 5 +++-
include/qapi/qobject-input-visitor.h | 4 ---
include/qapi/qobject-output-visitor.h | 4 ---
include/qapi/util.h | 6 ++++-
include/qapi/visitor-impl.h | 3 +++
include/qapi/visitor.h | 9 +++++++
qapi/qapi-visit-core.c | 27 ++++++++++++++++---
qapi/qmp-dispatch.c | 4 +--
qapi/qobject-input-visitor.c | 14 +---------
qapi/qobject-output-visitor.c | 14 +---------
scripts/qapi/expr.py | 3 ++-
scripts/qapi/introspect.py | 19 ++++++++++---
scripts/qapi/schema.py | 22 +++++++++++++--
scripts/qapi/types.py | 17 +++++++++++-
tests/qapi-schema/doc-good.json | 5 +++-
tests/qapi-schema/doc-good.out | 3 +++
tests/qapi-schema/doc-good.txt | 3 +++
.../qapi-schema/enum-dict-member-unknown.err | 2 +-
tests/qapi-schema/qapi-schema-test.json | 3 ++-
tests/qapi-schema/qapi-schema-test.out | 1 +
tests/qapi-schema/test-qapi.py | 1 +
24 files changed, 144 insertions(+), 55 deletions(-)
--
Best regards,
Vladimir
- [PATCH RFC 0/5] Subject: [PATCH RFC 0/5] qapi: Add feature flags to enum members, Markus Armbruster, 2021/09/15
- [PATCH RFC 4/5] qapi: Implement deprecated-input={reject, crash} for enum values, Markus Armbruster, 2021/09/15
- [PATCH RFC 1/5] qapi: Enable enum member introspection to show more than name, Markus Armbruster, 2021/09/15
- [PATCH RFC 2/5] qapi: Add feature flags to enum members, Markus Armbruster, 2021/09/15
- [PATCH RFC 5/5] block: Deprecate transaction type drive-backup, Markus Armbruster, 2021/09/15
- [PATCH RFC 3/5] qapi: Move compat policy from QObject to generic visitor, Markus Armbruster, 2021/09/15
- Re: [PATCH RFC 0/5] Subject: [PATCH RFC 0/5] qapi: Add feature flags to enum members,
Vladimir Sementsov-Ogievskiy <=