[Libguestfs] [PATCH] v2v: -o libvirt: always write pool names (RHBZ#1141631)

Richard W.M. Jones rjones at redhat.com
Thu Sep 15 12:20:21 UTC 2016


On Thu, Sep 15, 2016 at 01:49:00PM +0200, Pino Toscano wrote:
> When creating the XML for the new guest, always put the name of the pool
> containing the disks, even when -os specified a pool UUID: libvirt does
> not handle pool UUIDs for storage, but only names.
> ---
>  v2v/output_libvirt.ml | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/v2v/output_libvirt.ml b/v2v/output_libvirt.ml
> index 5fa338f..e934335 100644
> --- a/v2v/output_libvirt.ml
> +++ b/v2v/output_libvirt.ml
> @@ -340,6 +340,7 @@ class output_libvirt oc output_pool = object
>    inherit output
>  
>    val mutable capabilities_doc = None
> +  val mutable pool_name = None
>  
>    method as_options =
>      match oc with
> @@ -392,6 +393,15 @@ class output_libvirt oc output_pool = object
>        | Some dir when not (is_directory dir) ->
>           error (f_"-o libvirt: output pool '%s' has type='dir' but the /pool/target/path element is not a local directory.  See virt-v2v(1) section \"OUTPUT TO LIBVIRT\"") output_pool
>        | Some dir -> dir in
> +    (* Get the name of the pool, since we have to use that
> +     * (and not the UUID) in the XML of the guest.
> +     *)
> +    let name =
> +      match xpath_string "/pool/name/text()" with
> +      | None ->
> +         error (f_"-o libvirt: output pool '%s' does not have /pool/name element.  See virt-v2v(1) section \"OUTPUT TO LIBVIRT\"") output_pool
> +      | Some name -> name in
> +    pool_name <- Some name;
>  
>      (* Set up the targets. *)
>      List.map (
> @@ -426,6 +436,11 @@ class output_libvirt oc output_pool = object
>      if run_command cmd <> 0 then
>        warning (f_"could not refresh libvirt pool %s") output_pool;
>  
> +    let pool_name =
> +      match pool_name with
> +      | None -> output_pool
> +      | Some n -> n in
> +
>      (* Parse the capabilities XML in order to get the supported features. *)
>      let doc =
>        match capabilities_doc with
> @@ -436,7 +451,7 @@ class output_libvirt oc output_pool = object
>  
>      (* Create the metadata. *)
>      let doc =
> -      create_libvirt_xml ~pool:output_pool source target_buses
> +      create_libvirt_xml ~pool:pool_name source target_buses
>          guestcaps target_features target_firmware in
>  
>      let tmpfile, chan = Filename.open_temp_file "v2vlibvirt" ".xml" in

Looks good, ACK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW




More information about the Libguestfs mailing list