[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