[Libguestfs] [PATCH v2] v2v: -i libvirt: If <vcpu> is missing, calculate it from CPU topology.

Pino Toscano ptoscano at redhat.com
Fri Mar 17 09:47:57 UTC 2017


On Thursday, 16 March 2017 22:10:10 CET Richard W.M. Jones wrote:
> ---
>  v2v/parse_libvirt_xml.ml           | 18 ++++++++++++++++--
>  v2v/test-v2v-print-source.expected |  2 +-
>  2 files changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/v2v/parse_libvirt_xml.ml b/v2v/parse_libvirt_xml.ml
> index 6032c31..2dee274 100644
> --- a/v2v/parse_libvirt_xml.ml
> +++ b/v2v/parse_libvirt_xml.ml
> @@ -50,7 +50,7 @@ let parse_libvirt_xml ?conn xml =
>    let xpathctx = Xml.xpath_new_context doc in
>    let xpath_string = xpath_string xpathctx
>    and xpath_int = xpath_int xpathctx
> -  and xpath_int_default = xpath_int_default xpathctx
> +  (*and xpath_int_default = xpath_int_default xpathctx*)
>    and xpath_int64_default = xpath_int64_default xpathctx in
>  
>    let hypervisor =
> @@ -65,7 +65,6 @@ let parse_libvirt_xml ?conn xml =
>      | Some s -> s in
>    let memory = xpath_int64_default "/domain/memory/text()" (1024L *^ 1024L) in
>    let memory = memory *^ 1024L in
> -  let vcpu = xpath_int_default "/domain/vcpu/text()" 1 in
>  
>    let cpu_vendor = xpath_string "/domain/cpu/vendor/text()" in
>    let cpu_model = xpath_string "/domain/cpu/model/text()" in
> @@ -73,6 +72,21 @@ let parse_libvirt_xml ?conn xml =
>    let cpu_cores = xpath_int "/domain/cpu/topology/@cores" in
>    let cpu_threads = xpath_int "/domain/cpu/topology/@threads" in
>  
> +  (* Get the <vcpu> field from the input XML.  If not set then
> +   * try calculating it from the <cpu> <topology> node.  If that's
> +   * not set either, then assume 1 vCPU.
> +   *)
> +  let vcpu = xpath_int "/domain/vcpu/text()" in
> +  let vcpu =
> +    match vcpu, cpu_sockets, cpu_cores, cpu_threads with
> +    | Some vcpu, _,    _,    _    -> vcpu
> +    | None,      None, None, None -> 1
> +    | None,      _,    _,    _    ->
> +       let sockets = match cpu_sockets with None -> 1 | Some v -> v in
> +       let cores = match cpu_cores with None -> 1 | Some v -> v in
> +       let threads = match cpu_threads with None -> 1 | Some v -> v in
> +       sockets * cores * threads in

Should there be a sockets * cores * threads <> vcpu check as well?

LGTM otherwise.

Thanks,
-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20170317/d62d494a/attachment.sig>


More information about the Libguestfs mailing list