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 get-users command on POSIX > platforms lacking required APIs. > > 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 | 10 +--------- > qga/qapi-schema.json | 6 ++++-- > 2 files changed, 5 insertions(+), 11 deletions(-) > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index d92fa0ec87..a353f64ae6 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -1212,15 +1212,7 @@ GuestUserList *qmp_guest_get_users(Error **errp) > return head; > } > > -#else > - > -GuestUserList *qmp_guest_get_users(Error **errp) > -{ > - error_setg(errp, QERR_UNSUPPORTED); > - return NULL; > -} > - > -#endif > +#endif /* HAVE_UTMPX */ > > /* Replace escaped special characters with their real values. The > replacement > * is done in place -- returned value is in the original string. > diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json > index 0b7f911ca5..70d4f173ad 100644 > --- a/qga/qapi-schema.json > +++ b/qga/qapi-schema.json > @@ -1413,7 +1413,8 @@ > # Since: 2.10 > ## > { 'struct': 'GuestUser', > - 'data': { 'user': 'str', 'login-time': 'number', '*domain': 'str' } } > + 'data': { 'user': 'str', 'login-time': 'number', '*domain': 'str' }, > + 'if': { 'any': ['CONFIG_WIN32', 'HAVE_UTMPX' ] } } > > ## > # @guest-get-users: > @@ -1425,7 +1426,8 @@ > # Since: 2.10 > ## > { 'command': 'guest-get-users', > - 'returns': ['GuestUser'] } > + 'returns': ['GuestUser'], > + 'if': { 'any': ['CONFIG_WIN32', 'HAVE_UTMPX' ] } } > > ## > # @GuestTimezone: > -- > 2.45.1 > >