Bug 1176591

Summary: virt-v2v -o vdsm doesn't work with multiple data domains
Product: Red Hat Enterprise Linux 7 Reporter: Shahar Havivi <shavivi>
Component: libguestfsAssignee: Shahar Havivi <shavivi>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: medium    
Version: 7.1CC: ahadas, ajia, juzhou, mbooth, michal.skrivanek, mzhan, ptoscano, rjones, shavivi, sherold, tzheng, xiaodwan
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: V2V
Fixed In Version: libguestfs-1.28.1-1.24.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 06:58:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1154205, 1172230, 1205796    

Description Shahar Havivi 2014-12-22 13:35:27 UTC
Description of problem:
When trying to run the following command:
------------------------------------------------------
$  /usr/bin/virt-v2v -ic vpx://root.0.0/MyDatacenter/0.0.0.0?no_verify=1 --no-copy -o vdsm -of raw --vdsm-image-uuid 9bba8916-0c32-47b4-9947-8a9891a2e520 --vdsm-vol-uuid bfd61548-8a1c-4ac4-9db3-7e94f13e0514 --vdsm-vm-uuid 3bd1885d-c6d7-468b-9ebb-129b1585d155 -os /tmp/v2v RHEL7
------------------------------------------------------

and under /tmp/v2v we have multiple directories (ie multiple data domain inside the same storage pool) we are getting the following error:
virt-v2v: error: there are multiple UUIDs in the Data Domain (/tmp/v2v)


it will be best if the -os [path] will get the storage id as well, ie:
-os /tmp/v2v/00000000-0000-1111-2222-1111222233334444/

Comment 1 Shahar Havivi 2015-01-20 14:40:19 UTC
posted at:
https://www.redhat.com/archives/libguestfs/2015-January/msg00072.html

Comment 3 zhoujunqin 2015-05-12 10:44:32 UTC
Try to verify this bug on new build:

libguestfs-1.28.1-1.33.el7.x86_64
libvirt-1.2.15-2.el7.x86_64
virt-v2v-1.28.1-1.33.el7.x86_64

Steps:
1. Check virt-v2v manual page:
# man virt-v2v 
       -o vdsm
           Set the output method to vdsm.

           This mode is similar to -o rhev, but the full path to the data domain must be given: "/rhev/data-center/<data-center-uuid>/<data-domain-uuid>".  This mode is only used when virt-v2v runs under
           VDSM control.

Result: vdsm has tell user assume data domain at -os path.

2. Run virt-v2v command with this new change:

2.1 Check rhev Data Center path and mount it to local:

Path: 10.66.90.115:/vol/v2v_auto/nfs_export
# mount 10.66.90.115:/vol/v2v_auto /mnt

2.2 Create 2 new path:
images/12345678-1234-1234-1234-123456789001
master/vms/12345678-1234-1234-1234-123456789003

2.3 Run virt-v2v command:

# virt-v2v -ic vpx://root.111.25/tzheng-demo/10.66.106.63/?no_verify=1  --password-file /tmp/passwd2 --no-copy  -o vdsm -of raw --vdsm-image-uuid 12345678-1234-1234-1234-123456789001  --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003 --vdsm-ovf-output /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe/master/vms/12345678-1234-1234-1234-123456789003 -os /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe  esx5.5-rhel7.1-x86_64 
[   0.0] Opening the source -i libvirt -ic vpx://root.111.25/tzheng-demo/10.66.106.63/?no_verify=1 esx5.5-rhel7.1-x86_64
[   1.0] Creating an overlay to protect the source from being modified
[   2.0] Opening the overlay
[  13.0] Initializing the target -o vdsm -os /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe --vdsm-image-uuid 12345678-1234-1234-1234-123456789001 --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003 --vdsm-ovf-output /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe/master/vms/12345678-1234-1234-1234-123456789003
[  13.0] Inspecting the overlay
[  78.0] Checking for sufficient free disk space in the guest
[  78.0] Estimating space required on target for each disk
[  78.0] Converting Red Hat Enterprise Linux Server release 7.1 (Maipo) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[ 457.0] Closing the overlay
[ 457.0] Creating output metadata
[ 457.0] Finishing off

Result: Conversion finished without no error.

3. Retest step2 without nfs mounted to local:
# virt-v2v  -o vdsm -of raw --vdsm-image-uuid 12345678-1234-1234-1234-123456789001  --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003 -os 10.66.90.115:/vol/v2v_auto/nfs_export/   rhel6.6-juzhou-smartcard -on  vdsm-test2  
[   0.0] Opening the source -i libvirt rhel6.6-juzhou-smartcard
[   0.0] Creating an overlay to protect the source from being modified
[   0.0] Opening the overlay
[   2.0] Initializing the target -o vdsm -os 10.66.90.115:/vol/v2v_auto/nfs_export/ --vdsm-image-uuid 12345678-1234-1234-1234-123456789001 --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003 --vdsm-ovf-output .
virt-v2v: error: vdsm: invalid -os parameter does not contain a valid UUID: 
10.66.90.115:/vol/v2v_auto/nfs_export/

If reporting bugs, run virt-v2v with debugging enabled and include the 
complete output:

  virt-v2v -v -x [...]

Result: Failed in conversion. 
Question: Whether this result is as expected, must we mount nfs path to local?

So  Scott Herold,please help me have a look, whether above steps is enough to veify this bug and please pay attention to my question, thanks.

Comment 4 Richard W.M. Jones 2015-05-12 11:00:51 UTC
Hi Junquin, I think the -os parameter you supplied is wrong.  You
used:

  -os 10.66.90.115:/vol/v2v_auto/nfs_export/

but virt-v2v -o vdsm expects that the -os parameter will contain the
full path to the data domain.  It would look something like this:

  -os /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe

Also it must be mounted (cannot contain NFS <server>: prefix)

Comment 5 zhoujunqin 2015-05-13 03:00:11 UTC
(In reply to Richard W.M. Jones from comment #4)
> Hi Junquin, I think the -os parameter you supplied is wrong.  You
> used:
> 
>   -os 10.66.90.115:/vol/v2v_auto/nfs_export/
> 
> but virt-v2v -o vdsm expects that the -os parameter will contain the
> full path to the data domain.  It would look something like this:
> 
>   -os /mnt/nfs_export/8a94984a-a1e2-465d-83e7-a2f8165aaffe
> 
> Also it must be mounted (cannot contain NFS <server>: prefix)

Hi rjones, 
thanks for your kind help, i have understood well now.
Try to reproduce and verify this bug again.

I can reproduce this issue with packages:
libguestfs-1.28.1-1.18.el7.x86_64
virt-v2v-1.28.1-1.18.el7.x86_64

Steps:
1. Check rhev Data Center path and mount it to local:

Path: 10.66.90.115:/vol/v2v_auto/nfs_export
# mount 10.66.90.115:/vol/v2v_auto /mnt

2. Check there is more than one data domain under /mnt/nfs_export
]# ll /mnt/nfs_export/
total 8
drwxr-xr-x. 5 nobody nobody 4096 Apr 21 10:13 8a94984a-a1e2-465d-83e7-a2f8165aaffe
drwxr-xr-x. 2 nobody nobody 4096 May 13 03:30 8a94984a-a1e2-465d-83e7-a2f8165atest

3. Run virt-v2v command to convert guest to rhev.
# virt-v2v -ic vpx://root.111.25/tzheng-demo/10.66.106.63/?no_verify=1  --password-file /tmp/passwd2 --no-copy  -o vdsm -of raw --vdsm-image-uuid 12345678-1234-1234-1234-123456789001  --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003  -os /mnt/nfs_export/  esx5.5-rhel7.1-x86_64 
[   0.0] Opening the source -i libvirt -ic vpx://root.111.25/tzheng-demo/10.66.106.63/?no_verify=1 esx5.5-rhel7.1-x86_64
[   2.0] Creating an overlay to protect the source from being modified
[   2.0] Opening the overlay
[  13.0] Initializing the target -o vdsm -os /mnt/nfs_export/ --vdsm-image-uuid 12345678-1234-1234-1234-123456789001 --vdsm-vol-uuid 12345678-1234-1234-1234-123456789002 --vdsm-vm-uuid 12345678-1234-1234-1234-123456789003
virt-v2v: error: there are multiple UUIDs in the Data Domain 
(/mnt/nfs_export/).  This is unexpected, and may be a bug in virt-v2v or 
OVirt.

If reporting bugs, run virt-v2v with debugging enabled and include the 
complete output:

  virt-v2v -v -x [...]


Result: Get same result with bug description.

Then try to verify this bug with new build:
libguestfs-1.28.1-1.33.el7.x86_64
libvirt-1.2.15-2.el7.x86_64
virt-v2v-1.28.1-1.33.el7.x86_64

Steps same with last Comment 3.

Result: In step2.3, after specify a full path to the data domain, conversion finished with no error.

According to above steps, move this bug from ON_QA to VERIFIED.

Comment 7 errata-xmlrpc 2015-11-19 06:58:40 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2183.html