[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 12/22] qga: conditionalize schema for commands only supported
From: |
Daniel P . Berrangé |
Subject: |
[PATCH v3 12/22] qga: conditionalize schema for commands only supported on Windows |
Date: |
Fri, 12 Jul 2024 14:24:49 +0100 |
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
- [PATCH v3 03/22] qga: move linux suspend command impls to commands-linux.c, (continued)
- [PATCH v3 03/22] qga: move linux suspend command impls to commands-linux.c, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 06/22] qga: move linux memory block command impls to commands-linux.c, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 04/22] qga: move linux fs/disk command impls to commands-linux.c, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 07/22] qga: move CONFIG_FSFREEZE/TRIM to be meson defined options, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 08/22] qga: conditionalize schema for commands unsupported on Windows, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 05/22] qga: move linux disk/cpu stats command impls to commands-linux.c, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 09/22] qga: conditionalize schema for commands unsupported on non-Linux POSIX, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 11/22] qga: conditionalize schema for commands requiring linux/win32, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 12/22] qga: conditionalize schema for commands only supported on Windows,
Daniel P . Berrangé <=
- [PATCH v3 13/22] qga: conditionalize schema for commands requiring fsfreeze, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 15/22] qga: conditionalize schema for commands requiring libudev, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 16/22] qga: conditionalize schema for commands requiring utmpx, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 10/22] qga: conditionalize schema for commands requiring getifaddrs, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 17/22] qga: conditionalize schema for commands not supported on other UNIX, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 14/22] qga: conditionalize schema for commands requiring fstrim, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 19/22] qga: move declare of QGAConfig struct to top of file, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 20/22] qga: remove pointless 'blockrpcs_key' variable, Daniel P . Berrangé, 2024/07/12
- [PATCH v3 21/22] qga: allow configuration file path via the cli, Daniel P . Berrangé, 2024/07/12