mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
qapi: Implement deprecated-input=reject for QMP commands
This policy rejects deprecated input, and thus permits "testing the future". Implement it for QMP commands: make deprecated ones fail. Example: when QEMU is run with -compat deprecated-input=reject, then {"execute": "query-cpus"} fails like this {"error": {"class": "CommandNotFound", "desc": "Deprecated command query-cpus disabled by policy"}} When the deprecated command is removed, the error will change to {"error": {"class": "CommandNotFound", "desc": "The command query-cpus has not been found"}} Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20210318155519.1224118-10-armbru@redhat.com>
This commit is contained in:
parent
130d482422
commit
d2032598c4
4 changed files with 45 additions and 3 deletions
|
@ -167,6 +167,19 @@ QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
|
|||
"The command %s has not been found", command);
|
||||
goto out;
|
||||
}
|
||||
if (cmd->options & QCO_DEPRECATED) {
|
||||
switch (compat_policy.deprecated_input) {
|
||||
case COMPAT_POLICY_INPUT_ACCEPT:
|
||||
break;
|
||||
case COMPAT_POLICY_INPUT_REJECT:
|
||||
error_set(&err, ERROR_CLASS_COMMAND_NOT_FOUND,
|
||||
"Deprecated command %s disabled by policy",
|
||||
command);
|
||||
goto out;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
if (!cmd->enabled) {
|
||||
error_set(&err, ERROR_CLASS_COMMAND_NOT_FOUND,
|
||||
"Command %s has been disabled%s%s",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue