[Libguestfs] [PATCH] v2v: -o vdsm should assume data domain at -os path

Richard W.M. Jones rjones at redhat.com
Mon Jan 26 09:11:51 UTC 2015


On Tue, Jan 20, 2015 at 05:19:54PM +0200, Shahar Havivi wrote:
> >From ff9261b201283f7bff16dc41721480e2e0a9f80f Mon Sep 17 00:00:00 2001
> From: Shahar Havivi <shaharh at redhat.com>
> Date: Tue, 20 Jan 2015 14:41:23 +0200
> Subject: [PATCH] v2v: -o vdsm should assume data domain at -os path
> 
> Unlike -o rhev which have only one data domin, -o vdsm can and usually
> does have multiple data domain.
> The path to vdsm is pre mounted so no need to assume nfs path with -os
> Example:
> -o vdsm -os /rhev/data-center/<data-center-uuid>/<data-domain-uuid>
> 
> Bug-Url: https://bugzilla.redhat.com/1176591
> Signed-off-by: Shahar Havivi <shaharh at redhat.com>
> ---
>  v2v/output_vdsm.ml | 18 ++++++++++++++----
>  v2v/virt-v2v.pod   |  6 ++++--
>  2 files changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/v2v/output_vdsm.ml b/v2v/output_vdsm.ml
> index 492f586..c7a243e 100644
> --- a/v2v/output_vdsm.ml
> +++ b/v2v/output_vdsm.ml
> @@ -63,9 +63,8 @@ object
>     * name of the target files that eventually get written by the main
>     * code.
>     *
> -   * 'os' is the output storage (-os nfs:/export).  'source' contains a
> -   * few useful fields such as the guest name.  'targets' describes the
> -   * destination files.  We modify and return this list.
> +   * 'os' is the output storage domain (-os /rhev/data/<data center>/<data domain>)
> +   * this is already mounted path.
>     *
>     * Note it's good to fail here (early) if there are any problems, since
>     * the next time we are called (in {!create_metadata}) we have already
> @@ -79,7 +78,18 @@ object
>          (List.length targets);
>  
>      let mp, uuid =
> -      Output_rhev.mount_and_check_storage_domain verbose (s_"Data Domain") os in
> +      let fields = string_nsplit "/" os in (* ... "data-center" "UUID" *)
> +      let fields = List.rev fields in      (* "UUID" "data-center" ... *)
> +      match fields with
> +      | "" :: uuid :: rest                 (* handles trailing "/" case *)
> +      | uuid :: rest
> +          when String.length uuid = 36 ->
> +        let mp = String.concat "/" (List.rev rest) in
> +        mp, uuid
> +      | _ ->
> +        error (f_"vdsm: invalid -os parameter does not contain a valid UUID: %s")
> +          os in
> +
>      dd_mp <- mp;
>      dd_uuid <- uuid;
>      if verbose then
> diff --git a/v2v/virt-v2v.pod b/v2v/virt-v2v.pod
> index a48bf59..2eb0079 100644
> --- a/v2v/virt-v2v.pod
> +++ b/v2v/virt-v2v.pod
> @@ -456,8 +456,10 @@ See L</OUTPUT TO RHEV> below.
>  
>  Set the output method to I<vdsm>.
>  
> -This mode is similar to I<-o rhev> but is only used by RHEV VDSM
> -when it runs virt-v2v under VDSM control.
> +This mode is similar to I<-o rhev>, but the full path to the
> +data domain must be given:
> +C</rhev/data-center/E<lt>data-center-uuidE<gt>/E<lt>data-domain-uuidE<gt>>.
> +This mode is only used when virt-v2v runs under VDSM control.
>  
>  =item B<-oa sparse>

Sorry for forgetting about this patch.  The tests don't pass when this
patch is applied.  I'm not sure if the tests need to be modified or if
the patch itself contains a mistake.

Also the patch itself doesn't apply without hand-editing.  Please
install 'git-email' and use the 'git send-email' command to send
patches to the list.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list