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 other UNIX.
>
> 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>
> ---
>  meson.build          | 1 +
>  qga/commands-posix.c | 8 --------
>  qga/qapi-schema.json | 3 ++-
>  3 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index d9f3349b0a..92b8c02582 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2234,6 +2234,7 @@ config_host_data.set('CONFIG_ATTR', libattr.found())
>  config_host_data.set('CONFIG_BDRV_WHITELIST_TOOLS',
> get_option('block_drv_whitelist_in_tools'))
>  config_host_data.set('CONFIG_BRLAPI', brlapi.found())
>  config_host_data.set('CONFIG_BSD', host_os in bsd_oses)
> +config_host_data.set('CONFIG_FREEBSD', host_os == 'freebsd')
>  config_host_data.set('CONFIG_CAPSTONE', capstone.found())
>  config_host_data.set('CONFIG_COCOA', cocoa.found())
>  config_host_data.set('CONFIG_DARWIN', host_os == 'darwin')
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index a353f64ae6..f4104f2760 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -877,14 +877,6 @@ void qmp_guest_set_user_password(const char *username,
>          return;
>      }
>  }
> -#else /* __linux__ || __FreeBSD__ */
> -void qmp_guest_set_user_password(const char *username,
> -                                 const char *password,
> -                                 bool crypted,
> -                                 Error **errp)
> -{
> -    error_setg(errp, QERR_UNSUPPORTED);
> -}
>  #endif /* __linux__ || __FreeBSD__ */
>
>  #ifdef HAVE_GETIFADDRS
> diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
> index 70d4f173ad..571be3a914 100644
> --- a/qga/qapi-schema.json
> +++ b/qga/qapi-schema.json
> @@ -1108,7 +1108,8 @@
>  # Since: 2.3
>  ##
>  { 'command': 'guest-set-user-password',
> -  'data': { 'username': 'str', 'password': 'str', 'crypted': 'bool' } }
> +  'data': { 'username': 'str', 'password': 'str', 'crypted': 'bool' },
> +  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LINUX', 'CONFIG_FREEBSD'] } }
>
>  ##
>  # @GuestMemoryBlock:
> --
> 2.45.1
>
>

Reply via email to