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
>
>

Reply via email to