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 schema to fully
> exclude generation of the filesystem trimming commands 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-linux.c | 8 --------
>  qga/qapi-schema.json | 8 ++++----
>  2 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/qga/commands-linux.c b/qga/commands-linux.c
> index 73b13fbaf6..89bdcded01 100644
> --- a/qga/commands-linux.c
> +++ b/qga/commands-linux.c
> @@ -1049,14 +1049,6 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
>      return ret;
>  }
>
> -#else
> -
> -GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
> -{
> -    error_setg(errp, QERR_UNSUPPORTED);
> -    return NULL;
> -}
> -
>  #endif
>
>  /* Return a list of the disk device(s)' info which @mount lies on */
> diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
> index 0f27375ea0..0b7f911ca5 100644
> --- a/qga/qapi-schema.json
> +++ b/qga/qapi-schema.json
> @@ -985,7 +985,7 @@
>             'media-errors-hi': 'uint64',
>             'number-of-error-log-entries-lo': 'uint64',
>             'number-of-error-log-entries-hi': 'uint64' },
> -  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LINUX' ] } }
> +  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LIBUDEV' ] } }
>
>  ##
>  # @GuestDiskSmart:
> @@ -1000,7 +1000,7 @@
>    'base': { 'type': 'GuestDiskBusType' },
>    'discriminator': 'type',
>    'data': { 'nvme': 'GuestNVMeSmart' },
> -  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LINUX' ] } }
> +  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LIBUDEV' ] } }
>
>  ##
>  # @GuestDiskInfo:
> @@ -1026,7 +1026,7 @@
>    'data': {'name': 'str', 'partition': 'bool', '*dependencies': ['str'],
>             '*address': 'GuestDiskAddress', '*alias': 'str',
>             '*smart': 'GuestDiskSmart'},
> -  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LINUX' ] } }
> +  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LIBUDEV' ] } }
>
>  ##
>  # @guest-get-disks:
> @@ -1040,7 +1040,7 @@
>  ##
>  { 'command': 'guest-get-disks',
>    'returns': ['GuestDiskInfo'],
> -  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LINUX' ] } }
> +  'if': { 'any': [ 'CONFIG_WIN32', 'CONFIG_LIBUDEV' ] } }
>
>  ##
>  # @GuestFilesystemInfo:
> --
> 2.45.1
>
>

Reply via email to