Reviewed-by: Konstantin Kostiuk <kkost...@redhat.com> On Thu, Jun 13, 2024 at 6:44 PM Daniel P. Berrangé <berra...@redhat.com> wrote:
> 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. > > Signed-off-by: Daniel P. Berrangé <berra...@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 700c5baa5a..2704b814ab 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 > >