From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Konstantin Kostiuk" <kkostiuk@redhat.com>
Subject: [PATCH v3 12/22] qga: conditionalize schema for commands only supported on Windows
Date: Fri, 12 Jul 2024 14:24:49 +0100 [thread overview]
Message-ID: <20240712132459.3974109-13-berrange@redhat.com> (raw)
In-Reply-To: <20240712132459.3974109-1-berrange@redhat.com>
Rather than creating stubs for every command that just return
QERR_UNSUPPORTED, use 'if' conditions in the QAPI schema to
fully exclude generation of the commands on non-Windows.
The command will be rejected at QMP dispatch time instead,
avoiding reimplementing rejection by blocking the stub commands.
This changes the error message for affected commands from
{"class": "CommandNotFound", "desc": "Command FOO has been disabled"}
to
{"class": "CommandNotFound", "desc": "The command FOO has not been found"}
This has the additional benefit that the QGA protocol reference
now documents what conditions enable use of the command.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
qga/commands-posix.c | 9 ---------
qga/qapi-schema.json | 15 ++++++++++-----
2 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 838dc3cf98..b7f96aa005 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -1207,8 +1207,6 @@ GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-fstrim"));
#endif
- blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-get-devices"));
-
return blockedrpcs;
}
@@ -1419,13 +1417,6 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
return info;
}
-GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
-{
- error_setg(errp, QERR_UNSUPPORTED);
-
- return NULL;
-}
-
#ifndef HOST_NAME_MAX
# ifdef _POSIX_HOST_NAME_MAX
# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index 9bd5aa53bc..de3fc46d2e 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -1527,7 +1527,8 @@
# @pci: PCI device
##
{ 'enum': 'GuestDeviceType',
- 'data': [ 'pci' ] }
+ 'data': [ 'pci' ],
+ 'if': 'CONFIG_WIN32' }
##
# @GuestDeviceIdPCI:
@@ -1539,7 +1540,8 @@
# Since: 5.2
##
{ 'struct': 'GuestDeviceIdPCI',
- 'data': { 'vendor-id': 'uint16', 'device-id': 'uint16' } }
+ 'data': { 'vendor-id': 'uint16', 'device-id': 'uint16' },
+ 'if': 'CONFIG_WIN32' }
##
# @GuestDeviceId:
@@ -1553,7 +1555,8 @@
{ 'union': 'GuestDeviceId',
'base': { 'type': 'GuestDeviceType' },
'discriminator': 'type',
- 'data': { 'pci': 'GuestDeviceIdPCI' } }
+ 'data': { 'pci': 'GuestDeviceIdPCI' },
+ 'if': 'CONFIG_WIN32' }
##
# @GuestDeviceInfo:
@@ -1574,7 +1577,8 @@
'*driver-date': 'int',
'*driver-version': 'str',
'*id': 'GuestDeviceId'
- } }
+ },
+ 'if': 'CONFIG_WIN32' }
##
# @guest-get-devices:
@@ -1586,7 +1590,8 @@
# Since: 5.2
##
{ 'command': 'guest-get-devices',
- 'returns': ['GuestDeviceInfo'] }
+ 'returns': ['GuestDeviceInfo'],
+ 'if': 'CONFIG_WIN32' }
##
# @GuestAuthorizedKeys:
--
2.45.1
next prev parent reply other threads:[~2024-07-12 13:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-12 13:24 [PATCH v3 00/22] qga: clean up command source locations and conditionals Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 01/22] qga: drop blocking of guest-get-memory-block-size command Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 02/22] qga: move linux vcpu command impls to commands-linux.c Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 03/22] qga: move linux suspend " Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 04/22] qga: move linux fs/disk " Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 05/22] qga: move linux disk/cpu stats " Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 06/22] qga: move linux memory block " Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 07/22] qga: move CONFIG_FSFREEZE/TRIM to be meson defined options Daniel P. Berrangé
2024-07-19 7:34 ` Konstantin Kostiuk
2024-07-12 13:24 ` [PATCH v3 08/22] qga: conditionalize schema for commands unsupported on Windows Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 09/22] qga: conditionalize schema for commands unsupported on non-Linux POSIX Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 10/22] qga: conditionalize schema for commands requiring getifaddrs Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 11/22] qga: conditionalize schema for commands requiring linux/win32 Daniel P. Berrangé
2024-07-19 7:35 ` Konstantin Kostiuk
2024-07-12 13:24 ` Daniel P. Berrangé [this message]
2024-07-12 13:24 ` [PATCH v3 13/22] qga: conditionalize schema for commands requiring fsfreeze Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 14/22] qga: conditionalize schema for commands requiring fstrim Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 15/22] qga: conditionalize schema for commands requiring libudev Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 16/22] qga: conditionalize schema for commands requiring utmpx Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 17/22] qga: conditionalize schema for commands not supported on other UNIX Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 18/22] qga: don't disable fsfreeze commands if vss_init fails Daniel P. Berrangé
2024-07-19 7:35 ` Konstantin Kostiuk
2024-07-12 13:24 ` [PATCH v3 19/22] qga: move declare of QGAConfig struct to top of file Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 20/22] qga: remove pointless 'blockrpcs_key' variable Daniel P. Berrangé
2024-07-12 13:24 ` [PATCH v3 21/22] qga: allow configuration file path via the cli Daniel P. Berrangé
2024-07-19 7:35 ` Konstantin Kostiuk
2024-07-12 13:24 ` [PATCH v3 22/22] qga: centralize logic for disabling/enabling commands Daniel P. Berrangé
2024-07-19 7:36 ` Konstantin Kostiuk
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=20240712132459.3974109-13-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=kkostiuk@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/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).