qga: conditionalize schema for commands only supported on Windows
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> Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Message-ID: <20240712132459.3974109-13-berrange@redhat.com> Signed-off-by: Konstantin Kostiuk <kkostiuk@redhat.com>
This commit is contained in:
parent
83a7a1ab9a
commit
dedf99f303
@ -1207,8 +1207,6 @@ GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
|
|||||||
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-fstrim"));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-fstrim"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-get-devices"));
|
|
||||||
|
|
||||||
return blockedrpcs;
|
return blockedrpcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1419,13 +1417,6 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
|
|
||||||
{
|
|
||||||
error_setg(errp, QERR_UNSUPPORTED);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef HOST_NAME_MAX
|
#ifndef HOST_NAME_MAX
|
||||||
# ifdef _POSIX_HOST_NAME_MAX
|
# ifdef _POSIX_HOST_NAME_MAX
|
||||||
# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
|
# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
|
||||||
|
@ -1527,7 +1527,8 @@
|
|||||||
# @pci: PCI device
|
# @pci: PCI device
|
||||||
##
|
##
|
||||||
{ 'enum': 'GuestDeviceType',
|
{ 'enum': 'GuestDeviceType',
|
||||||
'data': [ 'pci' ] }
|
'data': [ 'pci' ],
|
||||||
|
'if': 'CONFIG_WIN32' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @GuestDeviceIdPCI:
|
# @GuestDeviceIdPCI:
|
||||||
@ -1539,7 +1540,8 @@
|
|||||||
# Since: 5.2
|
# Since: 5.2
|
||||||
##
|
##
|
||||||
{ 'struct': 'GuestDeviceIdPCI',
|
{ 'struct': 'GuestDeviceIdPCI',
|
||||||
'data': { 'vendor-id': 'uint16', 'device-id': 'uint16' } }
|
'data': { 'vendor-id': 'uint16', 'device-id': 'uint16' },
|
||||||
|
'if': 'CONFIG_WIN32' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @GuestDeviceId:
|
# @GuestDeviceId:
|
||||||
@ -1553,7 +1555,8 @@
|
|||||||
{ 'union': 'GuestDeviceId',
|
{ 'union': 'GuestDeviceId',
|
||||||
'base': { 'type': 'GuestDeviceType' },
|
'base': { 'type': 'GuestDeviceType' },
|
||||||
'discriminator': 'type',
|
'discriminator': 'type',
|
||||||
'data': { 'pci': 'GuestDeviceIdPCI' } }
|
'data': { 'pci': 'GuestDeviceIdPCI' },
|
||||||
|
'if': 'CONFIG_WIN32' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @GuestDeviceInfo:
|
# @GuestDeviceInfo:
|
||||||
@ -1574,7 +1577,8 @@
|
|||||||
'*driver-date': 'int',
|
'*driver-date': 'int',
|
||||||
'*driver-version': 'str',
|
'*driver-version': 'str',
|
||||||
'*id': 'GuestDeviceId'
|
'*id': 'GuestDeviceId'
|
||||||
} }
|
},
|
||||||
|
'if': 'CONFIG_WIN32' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @guest-get-devices:
|
# @guest-get-devices:
|
||||||
@ -1586,7 +1590,8 @@
|
|||||||
# Since: 5.2
|
# Since: 5.2
|
||||||
##
|
##
|
||||||
{ 'command': 'guest-get-devices',
|
{ 'command': 'guest-get-devices',
|
||||||
'returns': ['GuestDeviceInfo'] }
|
'returns': ['GuestDeviceInfo'],
|
||||||
|
'if': 'CONFIG_WIN32' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @GuestAuthorizedKeys:
|
# @GuestAuthorizedKeys:
|
||||||
|
Loading…
Reference in New Issue
Block a user