[libvirt PATCH 5/9] tools: Report hypervisor cpu model names

Daniel P. Berrangé berrange at redhat.com
Mon Jul 18 10:21:48 UTC 2022


On Tue, Jun 28, 2022 at 06:09:42PM +0200, Tim Wiederhake wrote:
> $ virsh hypervisor-cpu-models --arch x86_64
>  Name                        Alias
> ----------------------------------------------------
>  max
>  host
>  base
>  qemu64-v1
>  qemu64                      qemu64-v1
>  qemu32-v1
>  qemu32                      qemu32-v1
>  phenom-v1
>  phenom                      phenom-v1
> (...)
> 
> Note that this includes alias names and cpu models that currently
> do not exist in libvirt, e.g. Denverton and Knights Mill.
> 
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
>  docs/manpages/virsh.rst | 14 +++++++++
>  tools/virsh-host.c      | 67 +++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 81 insertions(+)
> 
> diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
> index 45469f2f35..a55792b0e2 100644
> --- a/docs/manpages/virsh.rst
> +++ b/docs/manpages/virsh.rst
> @@ -955,6 +955,20 @@ If *--validate* is specified, validates the format of the XML document against
>  an internal RNG schema.
>  
>  
> +hypervisor-cpu-models
> +---------------------
> +
> +**Syntax:**
> +
> +::
> +
> +   hypervisor-cpu-models [arch]
> +
> +List the names of cpu models known to the hypervisor. A hypervisor may define
> +alias names for some or all cpu models. Note that the cpu models may differ
> +from libvirt, even if named identically.
> +
> +
>  hypervisor-cpu-baseline
>  -----------------------
>  
> diff --git a/tools/virsh-host.c b/tools/virsh-host.c
> index ead966b500..cb8e1e8c6d 100644
> --- a/tools/virsh-host.c
> +++ b/tools/virsh-host.c
> @@ -32,6 +32,7 @@
>  #include "virstring.h"
>  #include "virfile.h"
>  #include "virenum.h"
> +#include "vsh-table.h"
>  
>  /*
>   * "capabilities" command
> @@ -1674,6 +1675,65 @@ cmdHypervisorCPUCompare(vshControl *ctl,
>  }
>  
>  
> +/*
> + * "hypervisor-cpu-models" command
> + */
> +static const vshCmdInfo info_hypervisor_cpu_models[] = {
> +    {.name = "help",
> +     .data = N_("return list of CPU models supported by a specific hypervisor")
> +    },
> +    {.name = "desc",
> +     .data = N_("Return list of CPU models supported by a specific hypervisor")
> +    },
> +    {.name = NULL}
> +};
> +
> +static const vshCmdOptDef opts_hypervisor_cpu_models[] = {
> +    {.name = "arch",
> +     .type = VSH_OT_STRING,
> +     .completer = virshArchCompleter,
> +     .help = N_("CPU architecture (/domain/os/type/@arch)"),
> +    },
> +    {.name = NULL}
> +};

This will need to be expanded to  add machine, virttype and
emulator to match the API params.


> +    nresults = virConnectGetHypervisorCPUModelNames(priv->conn, arch, &name,
> +                                                    &alias, 0);

Should we do sorting here or somewhere earlier in the flow ?

I notice the existing 'cpu-models' doesn't do sorting just returning
stuff in a pretty horrible random order.

I think both this new API and the old one should sort case insensitive.

> +    if (nresults >= 0) {
> +        size_t index;
> +        for (index = 0; index < nresults; ++index) {
> +            if (vshTableRowAppend(table, name[index], alias[index], NULL) < 0)
> +                return ret;
> +            g_free(name[index]);
> +            g_free(alias[index]);
> +        }
> +        ret = true;
> +    }
> +    vshTablePrintToStdout(table, ctl);
> +    g_free(name);
> +    g_free(alias);
> +
> +    return ret;
> +}
> +
>  /*
>   * "hypervisor-cpu-baseline" command
>   */
> @@ -1819,6 +1879,13 @@ const vshCmdDef hostAndHypervisorCmds[] = {
>       .info = info_hostname,
>       .flags = 0
>      },
> +    {
> +     .name = "hypervisor-cpu-models",
> +     .handler = cmdHypervisorCPUModels,
> +     .opts = opts_hypervisor_cpu_models,
> +     .info = info_hypervisor_cpu_models,
> +     .flags = 0
> +    },
>      {.name = "hypervisor-cpu-baseline",
>       .handler = cmdHypervisorCPUBaseline,
>       .opts = opts_hypervisor_cpu_baseline,
> -- 
> 2.31.1
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


More information about the libvir-list mailing list