From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: jsnow@redhat.com, michael.roth@amd.com, marcandre.lureau@redhat.com
Subject: [PATCH 19/28] qapi: Rename pragma *-whitelist to *-exceptions
Date: Tue, 23 Mar 2021 10:40:16 +0100 [thread overview]
Message-ID: <20210323094025.3569441-20-armbru@redhat.com> (raw)
In-Reply-To: <20210323094025.3569441-1-armbru@redhat.com>
Rename pragma returns-whitelist to command-returns-exceptions, and
name-case-whitelist to member-name-case-exceptions.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
docs/devel/qapi-code-gen.txt | 21 ++++++++++---------
qapi/pragma.json | 4 ++--
qga/qapi-schema.json | 2 +-
scripts/qapi/expr.py | 4 ++--
scripts/qapi/parser.py | 8 +++----
scripts/qapi/schema.py | 2 +-
scripts/qapi/source.py | 8 +++----
tests/qapi-schema/enum-member-case.json | 2 +-
.../pragma-value-not-list-of-str.err | 2 +-
.../pragma-value-not-list-of-str.json | 2 +-
tests/qapi-schema/pragma-value-not-list.err | 2 +-
tests/qapi-schema/pragma-value-not-list.json | 3 +--
tests/qapi-schema/qapi-schema-test.json | 2 +-
tests/qapi-schema/returns-bad-type.json | 2 +-
14 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt
index 6906a06ad2..23e9823019 100644
--- a/docs/devel/qapi-code-gen.txt
+++ b/docs/devel/qapi-code-gen.txt
@@ -147,9 +147,10 @@ prevent incomplete include files.
=== Pragma directives ===
Syntax:
- PRAGMA = { 'pragma': { '*doc-required': BOOL,
- '*returns-whitelist': [ STRING, ... ],
- '*name-case-whitelist': [ STRING, ... ] } }
+ PRAGMA = { 'pragma': {
+ '*doc-required': BOOL,
+ '*command-returns-exceptions': [ STRING, ... ],
+ '*member-name-exceptions': [ STRING, ... ] } }
The pragma directive lets you control optional generator behavior.
@@ -159,11 +160,11 @@ pragma to different values in parts of the schema doesn't work.
Pragma 'doc-required' takes a boolean value. If true, documentation
is required. Default is false.
-Pragma 'returns-whitelist' takes a list of command names that may
+Pragma 'command-returns-exceptions' takes a list of commands that may
violate the rules on permitted return types. Default is none.
-Pragma 'name-case-whitelist' takes a list of names that may violate
-rules on use of upper- vs. lower-case letters. Default is none.
+Pragma 'member-name-exceptions' takes a list of types whose member
+names may contain uppercase letters. Default is none.
=== Enumeration types ===
@@ -490,9 +491,9 @@ are the arguments. A union type requires 'boxed': true.
Member 'returns' defines the command's return type. It defaults to an
empty struct type. It must normally be a complex type or an array of
a complex type. To return anything else, the command must be listed
-in pragma 'returns-whitelist'. If you do this, extending the command
-to return additional information will be harder. Use of
-'returns-whitelist' for new commands is strongly discouraged.
+in pragma 'commands-returns-exceptions'. If you do this, extending
+the command to return additional information will be harder. Use of
+the pragma for new commands is strongly discouraged.
A command's error responses are not specified in the QAPI schema.
Error conditions should be documented in comments.
@@ -755,7 +756,7 @@ Any name (command, event, type, member, or enum value) beginning with
"x-" is marked experimental, and may be withdrawn or changed
incompatibly in a future release.
-Pragma 'name-case-whitelist' lets you violate the rules on use of
+Pragma 'member-name-exceptions' lets you violate the rules on use of
upper and lower case. Use for new code is strongly discouraged.
diff --git a/qapi/pragma.json b/qapi/pragma.json
index 7f158e183d..4895848c5e 100644
--- a/qapi/pragma.json
+++ b/qapi/pragma.json
@@ -4,13 +4,13 @@
# add to them!
{ 'pragma': {
# Commands allowed to return a non-dictionary:
- 'returns-whitelist': [
+ 'command-returns-exceptions': [
'human-monitor-command',
'qom-get',
'query-tpm-models',
'query-tpm-types',
'ringbuf-read' ],
- 'name-case-whitelist': [
+ 'member-name-exceptions': [
'ACPISlotType', # DIMM, visible through query-acpi-ospm-status
'BlockdevVmdkSubformat', # all members, to match VMDK spec spellings
'BlockdevVmdkAdapterType', # legacyESX, to match VMDK spec spellings
diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index 9a82b7e952..2b08b761c2 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -20,7 +20,7 @@
# add to them!
{ 'pragma': {
# Commands allowed to return a non-dictionary:
- 'returns-whitelist': [
+ 'command-returns-exceptions': [
'guest-file-open',
'guest-fsfreeze-freeze',
'guest-fsfreeze-freeze-list',
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index e59e56292d..30fd37aa24 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -181,7 +181,7 @@ def check_type(value, info, source,
raise QAPISemError(info,
"%s should be an object or type name" % source)
- permit_upper = allow_dict in info.pragma.name_case_whitelist
+ permit_upper = allow_dict in info.pragma.member_name_exceptions
# value is a dictionary, check that each member is okay
for (key, arg) in value.items():
@@ -224,7 +224,7 @@ def check_enum(expr, info):
if prefix is not None and not isinstance(prefix, str):
raise QAPISemError(info, "'prefix' must be a string")
- permit_upper = name in info.pragma.name_case_whitelist
+ permit_upper = name in info.pragma.member_name_exceptions
members[:] = [m if isinstance(m, dict) else {'name': m}
for m in members]
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 8eed69333f..c16b8b6995 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -132,12 +132,12 @@ def _pragma(self, name, value, info):
raise QAPISemError(info,
"pragma 'doc-required' must be boolean")
info.pragma.doc_required = value
- elif name == 'returns-whitelist':
+ elif name == 'command-returns-exceptions':
self._check_pragma_list_of_str(name, value, info)
- info.pragma.returns_whitelist = value
- elif name == 'name-case-whitelist':
+ info.pragma.command_returns_exceptions = value
+ elif name == 'member-name-exceptions':
self._check_pragma_list_of_str(name, value, info)
- info.pragma.name_case_whitelist = value
+ info.pragma.member_name_exceptions = value
else:
raise QAPISemError(info, "unknown pragma '%s'" % name)
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index ff16578f6d..703b446fd2 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -779,7 +779,7 @@ def check(self, schema):
if self._ret_type_name:
self.ret_type = schema.resolve_type(
self._ret_type_name, self.info, "command's 'returns'")
- if self.name not in self.info.pragma.returns_whitelist:
+ if self.name not in self.info.pragma.command_returns_exceptions:
typ = self.ret_type
if isinstance(typ, QAPISchemaArrayType):
typ = self.ret_type.element_type
diff --git a/scripts/qapi/source.py b/scripts/qapi/source.py
index d7a79a9b8a..d8f9ec377f 100644
--- a/scripts/qapi/source.py
+++ b/scripts/qapi/source.py
@@ -21,10 +21,10 @@ class QAPISchemaPragma:
def __init__(self) -> None:
# Are documentation comments required?
self.doc_required = False
- # Whitelist of commands allowed to return a non-dictionary
- self.returns_whitelist: List[str] = []
- # Whitelist of entities allowed to violate case conventions
- self.name_case_whitelist: List[str] = []
+ # Commands allowed to return a non-dictionary
+ self.command_returns_exceptions: List[str] = []
+ # Types whose member names may violate case conventions
+ self.member_name_exceptions: List[str] = []
class QAPISourceInfo:
diff --git a/tests/qapi-schema/enum-member-case.json b/tests/qapi-schema/enum-member-case.json
index f8af3e4622..b8969d224d 100644
--- a/tests/qapi-schema/enum-member-case.json
+++ b/tests/qapi-schema/enum-member-case.json
@@ -1,4 +1,4 @@
# Member names should be 'lower-case' unless the enum is whitelisted
-{ 'pragma': { 'name-case-whitelist': [ 'UuidInfo' ] } }
+{ 'pragma': { 'member-name-exceptions': [ 'UuidInfo' ] } }
{ 'enum': 'UuidInfo', 'data': [ 'Value' ] } # UuidInfo is whitelisted
{ 'enum': 'NoWayThisWillGetWhitelisted', 'data': [ 'Value' ] }
diff --git a/tests/qapi-schema/pragma-value-not-list-of-str.err b/tests/qapi-schema/pragma-value-not-list-of-str.err
index 44870fe5d9..b81983dd85 100644
--- a/tests/qapi-schema/pragma-value-not-list-of-str.err
+++ b/tests/qapi-schema/pragma-value-not-list-of-str.err
@@ -1 +1 @@
-pragma-value-not-list-of-str.json:3: pragma returns-whitelist must be a list of strings
+pragma-value-not-list-of-str.json:3: pragma command-returns-exceptions must be a list of strings
diff --git a/tests/qapi-schema/pragma-value-not-list-of-str.json b/tests/qapi-schema/pragma-value-not-list-of-str.json
index 12bbbed2e8..27811cff73 100644
--- a/tests/qapi-schema/pragma-value-not-list-of-str.json
+++ b/tests/qapi-schema/pragma-value-not-list-of-str.json
@@ -1,3 +1,3 @@
# pragma value must be list of strings
-{ 'pragma': { 'returns-whitelist': [ 'good', [ 'bad' ] ] } }
+{ 'pragma': { 'command-returns-exceptions': [ 'good', [ 'bad' ] ] } }
diff --git a/tests/qapi-schema/pragma-value-not-list.err b/tests/qapi-schema/pragma-value-not-list.err
index 21736c5723..45dde1bf05 100644
--- a/tests/qapi-schema/pragma-value-not-list.err
+++ b/tests/qapi-schema/pragma-value-not-list.err
@@ -1 +1 @@
-pragma-value-not-list.json:3: pragma name-case-whitelist must be a list of strings
+pragma-value-not-list.json:2: pragma member-name-exceptions must be a list of strings
diff --git a/tests/qapi-schema/pragma-value-not-list.json b/tests/qapi-schema/pragma-value-not-list.json
index 2c61a97dd3..3faa340c3b 100644
--- a/tests/qapi-schema/pragma-value-not-list.json
+++ b/tests/qapi-schema/pragma-value-not-list.json
@@ -1,3 +1,2 @@
# pragma value must be list
-
-{ 'pragma': { 'name-case-whitelist': false } }
+{ 'pragma': { 'member-name-exceptions': false } }
diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json
index a355321258..16b03bf308 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -7,7 +7,7 @@
# Whitelists to permit QAPI rule violations
{ 'pragma': {
# Commands allowed to return a non-dictionary:
- 'returns-whitelist': [
+ 'command-returns-exceptions': [
'guest-get-time',
'guest-sync' ] } }
diff --git a/tests/qapi-schema/returns-bad-type.json b/tests/qapi-schema/returns-bad-type.json
index da209329b1..0dd96e739e 100644
--- a/tests/qapi-schema/returns-bad-type.json
+++ b/tests/qapi-schema/returns-bad-type.json
@@ -1,6 +1,6 @@
# we enforce that 'returns' be a dict or array of dict unless whitelisted
-{ 'pragma': { 'returns-whitelist': [
+{ 'pragma': { 'command-returns-exceptions': [
'human-monitor-command', 'query-tpm-models', 'guest-get-time' ] } }
{ 'command': 'human-monitor-command',
--
2.26.3
next prev parent reply other threads:[~2021-03-23 9:59 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-23 9:39 [PATCH 00/28] qapi: Enforce naming rules Markus Armbruster
2021-03-23 9:39 ` [PATCH 01/28] qapi/pragma: Tidy up after removal of deprecated commands Markus Armbruster
2021-03-23 12:50 ` John Snow
2021-03-23 9:39 ` [PATCH 02/28] tests/qapi-schema: Drop redundant flat-union-inline test Markus Armbruster
2021-03-23 12:54 ` John Snow
2021-03-23 9:40 ` [PATCH 03/28] tests/qapi-schema: Rework comments on longhand member definitions Markus Armbruster
2021-03-23 13:00 ` John Snow
2021-03-23 13:58 ` Eric Blake
2021-03-23 14:25 ` John Snow
2021-03-23 13:59 ` Eric Blake
2021-03-23 14:27 ` John Snow
2021-03-23 9:40 ` [PATCH 04/28] tests/qapi-schema: Belatedly update comment on alternate clash Markus Armbruster
2021-03-23 13:12 ` John Snow
2021-03-23 9:40 ` [PATCH 05/28] tests/qapi-schema: Drop TODO comment on simple unions Markus Armbruster
2021-03-23 13:16 ` John Snow
2021-03-23 9:40 ` [PATCH 06/28] tests/qapi-schema: Tweak to demonstrate buggy member name check Markus Armbruster
2021-03-23 13:20 ` John Snow
2021-03-23 15:44 ` Markus Armbruster
2021-03-23 17:09 ` John Snow
2021-03-23 20:42 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 07/28] qapi: Fix to reject optional members with reserved names Markus Armbruster
2021-03-23 13:27 ` John Snow
2021-03-23 15:50 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 08/28] qapi: Support flat unions tag values with leading digit Markus Armbruster
2021-03-23 14:11 ` Eric Blake
2021-03-23 14:49 ` John Snow
2021-03-23 16:18 ` Markus Armbruster
2021-03-23 21:07 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 09/28] qapi: Lift enum-specific code out of check_name_str() Markus Armbruster
2021-03-23 14:13 ` Eric Blake
2021-03-23 21:44 ` John Snow
2021-03-23 22:11 ` John Snow
2021-03-24 5:55 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 10/28] qapi: Rework name checking in preparation of stricter checking Markus Armbruster
2021-03-23 14:20 ` Eric Blake
2021-03-23 14:30 ` John Snow
2021-03-23 14:40 ` Eric Blake
2021-03-23 16:25 ` Markus Armbruster
2021-03-23 21:14 ` Markus Armbruster
2021-03-23 22:15 ` John Snow
2021-03-24 5:57 ` Markus Armbruster
2021-03-24 20:11 ` John Snow
2021-03-25 6:18 ` Markus Armbruster
2021-03-25 17:48 ` John Snow
2021-03-26 5:25 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 11/28] qapi: Move uppercase rejection to check_name_lower() Markus Armbruster
2021-03-23 14:29 ` Eric Blake
2021-03-23 22:21 ` John Snow
2021-03-23 9:40 ` [PATCH 12/28] qapi: Consistently permit any case in downstream prefixes Markus Armbruster
2021-03-23 14:30 ` Eric Blake
2021-03-23 22:26 ` John Snow
2021-03-23 9:40 ` [PATCH 13/28] qapi: Enforce event naming rules Markus Armbruster
2021-03-23 14:32 ` Eric Blake
2021-03-23 22:31 ` John Snow
2021-03-24 6:22 ` Markus Armbruster
2021-03-24 20:07 ` John Snow
2021-03-25 6:22 ` Markus Armbruster
2021-03-25 17:50 ` John Snow
2021-03-23 9:40 ` [PATCH 14/28] qapi: Enforce type " Markus Armbruster
2021-03-23 14:50 ` Eric Blake
2021-03-23 16:27 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 15/28] tests/qapi-schema: Rename redefined-builtin to redefined-predefined Markus Armbruster
2021-03-23 14:55 ` Eric Blake
2021-03-23 9:40 ` [PATCH 16/28] qapi: Factor out QAPISchemaParser._check_pragma_list_of_str() Markus Armbruster
2021-03-23 15:01 ` Eric Blake
2021-03-23 9:40 ` [PATCH 17/28] tests/qapi-schema: Rename pragma-*-crap to pragma-value-not-* Markus Armbruster
2021-03-23 15:02 ` Eric Blake
2021-03-23 9:40 ` [PATCH 18/28] tests/qapi-schema: Rename returns-whitelist to returns-bad-type Markus Armbruster
2021-03-23 15:06 ` Eric Blake
2021-03-23 9:40 ` Markus Armbruster [this message]
2021-03-23 15:09 ` [PATCH 19/28] qapi: Rename pragma *-whitelist to *-exceptions Eric Blake
2021-03-23 16:35 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 20/28] qapi/pragma: Streamline comments on member-name-exceptions Markus Armbruster
2021-03-23 15:10 ` Eric Blake
2021-03-23 9:40 ` [PATCH 21/28] tests-qmp-cmds: Drop unused and incorrect qmp_TestIfCmd() Markus Armbruster
2021-03-23 15:11 ` Eric Blake
2021-03-23 9:40 ` [PATCH 22/28] qapi: Prepare for rejecting underscore in command and member names Markus Armbruster
2021-03-23 15:15 ` Eric Blake
2021-03-23 9:40 ` [PATCH 23/28] qapi: Enforce feature naming rules Markus Armbruster
2021-03-23 15:16 ` Eric Blake
2021-03-23 9:40 ` [PATCH 24/28] qapi: Enforce command " Markus Armbruster
2021-03-23 15:23 ` Eric Blake
2021-03-23 21:19 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 25/28] tests/qapi-schema: Switch member name clash test to struct Markus Armbruster
2021-03-23 15:42 ` Eric Blake
2021-03-23 9:40 ` [PATCH 26/28] qapi: Enforce struct member naming rules Markus Armbruster
2021-03-23 15:46 ` Eric Blake
2021-03-23 21:23 ` Markus Armbruster
2021-03-23 9:40 ` [PATCH 27/28] qapi: Enforce enum " Markus Armbruster
2021-03-23 15:47 ` Eric Blake
2021-03-23 9:40 ` [PATCH 28/28] qapi: Enforce union and alternate branch " Markus Armbruster
2021-03-23 16:05 ` Eric Blake
2021-03-23 21:24 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210323094025.3569441-20-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=jsnow@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).