On Wed, Jun 22, 2016 at 11:00:47AM +0200, Markus Armbruster wrote:
Eduardo Habkost <ehabkost(a)redhat.com> writes:
> Extend query-cpu-definitions schema to allow it to return two new
> optional fields: "runnable" and "unavailable-features".
> "runnable" will tell if the CPU model can be run in the current
> host. "unavailable-features" will contain a list of CPU
> properties that are preventing the CPU model from running in the
> current host.
>
> Cc: David Hildenbrand <dahi(a)linux.vnet.ibm.com>
> Cc: Michael Mueller <mimu(a)linux.vnet.ibm.com>
> Cc: Christian Borntraeger <borntraeger(a)de.ibm.com>
> Cc: Cornelia Huck <cornelia.huck(a)de.ibm.com>
> Cc: Jiri Denemark <jdenemar(a)redhat.com>
> Cc: libvir-list(a)redhat.com
> Signed-off-by: Eduardo Habkost <ehabkost(a)redhat.com>
> ---
> Changes v1 -> v2:
> * Remove @runnable field, non-empty @unavailable-features is
> enough to report CPU model as not runnable.
> * Documentation updates:
> * Changed to "(since 2.7)";
> * Add more details about the exact meaning of
> unavailable-features, and what it would mean to see
> read-only QOM properties in the list, and that
> implementations can return "type" if there's
> no extra information available;
> ---
> qapi-schema.json | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 8483bdf..43478e9 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -3005,11 +3005,32 @@
> # Virtual CPU definition.
> #
> # @name: the name of the CPU definition
> +# @unavailable-features: #optional List of properties that prevent
> +# the CPU model from running in the current
> +# host. (since 2.7)
> +#
> +# @unavailable-features is a list of QOM property names that
> +# represent CPU model attributes that prevent the CPU from running.
> +# If the QOM property is read-only, that means there's no known
> +# way to make the CPU model run in the current host. If
> +# absolutely no extra information will be returned to explain why
Suggest "can be returned".
I believe that "extra information can be returned" will always be
true (we just need an appropriate property name to represent that
information). But people writing architecture-specific code are
free to decide if the extra effort is worth it, or if "type" is
good enough for them.
> +# the CPU model is not runnable, implementations may simply
> +# return "type" as the property name.
> +# If the property is read-write, it means that it MAY be possible
> +# to run the CPU model in the current host if that property is
> +# changed. Management software can use it as hints to suggest or
> +# choose an alternative for the user, or just to generate meaningful
> +# error messages explaining why the CPU model can't be used.
> +# If @unavailable-features is an empty list, the CPU model is
> +# runnable using the current host and machine-type.
> +# If @unavailable-features is not present, runnability
> +# information for the CPU is not available.
> #
> # Since: 1.2.0
> ##
> { 'struct': 'CpuDefinitionInfo',
> - 'data': { 'name': 'str' } }
> + 'data': { 'name': 'str',
> + '*unavailable-features': [ 'str' ] } }
>
> ##
> # @query-cpu-definitions:
With the commit message tidied up as per your reply to Jiri:
Reviewed-by: Markus Armbruster <armbru(a)redhat.com>
Thanks!
--
Eduardo