Red Hat Bugzilla – Bug 1263574
vpx: Include dcpath output in libvirt XML
Last modified: 2016-11-03 14:23:55 EDT
Description of problem: vpx:// paths looks like this: vpx://vcenter.example.com/MyFolder/MyDatacenter/MyCluster/esxi but to connect to the datastore to read the underlying disk image, libguestfs must form a URL like this: https://vcenter.example.com/folder/data/guest/guest-flat.vmdk?dcPath=MyFolder/MyDatacenter&dsName=datastore All parts of this URL can be worked out from the URL or the libvirt XML *except* the ?dcPath=... parameter. The problem is that dcPath isn't a straight mapping from the vpx:// path. The particular problem is that if there is a cluster name in the path (eg 'MyCluster') it appears that we have to remove it. ie: dcPath=MyFolder/MyDatacenter/MyCluster - does not work dcPath=MyFolder/MyDatacenter - works That would be OK if there was always a cluster name at the end of the path, but there isn't. Clusters are completely optional, and AFAIK you can't tell if something is a cluster path element just by examining the name, since clusters can be given arbitrary names by the vCenter admin. Can we add some way to more easily map from vpx:// paths to datastore URLs? The whole process is very complex even without the ambiguity - it takes a couple of pages of code to do the mapping. A patch for this has been proposed and tested upstream: https://www.redhat.com/archives/libvir-list/2015-September/msg00433.html but is not yet included upstream nor in RHEL 7. Version-Release number of selected component (if applicable): libvirt-daemon-1.2.17-3.el7.x86_64 Additional info: https://www.redhat.com/archives/libvir-list/2015-September/thread.html#00201
Pushed upstream in commit 636a99058758a0447482f3baad94de8de3ab1151.
https://libvirt.org/git/?p=libvirt.git;a=commit;h=636a99058758a0447482f3baad94de8de3ab1151
Patches for libguestfs to use this field: https://www.redhat.com/archives/libguestfs/2015-October/msg00118.html This feature will be available in libguestfs RHEL 7.3. There is no separate bug for this, since it will be picked up in the libguestfs rebase (bug 1218766).
is this feasible for a 7.2.z backport?
The libvirt patch is fairly straightforward. It needs a libguestfs backport too, because I didn't include the patch to virt-v2v which gets the data from libvirt.
It needs another bug against libguestfs. Just backporting the libvirt fix is not sufficient.
Verify the bug with the build: libvirt-1.3.1-1.el7.x86_64 Steps: 1. Setting up some folder structure in vCenter. In vCenter I added this: v2v-vcenter -> Folder(my is called mxie) -> Datacenter(my is called mxie-data) -> Cluster(my is called mxie-cluster) -> vmware [ESXi node] 2.Check the dcpath of guest rhel6.7-mxie in via vCenter server's web address, eg: https://vcenter/folder 2.1 Read the underlying disk image,the URL is :https://10.66.145.47/folder/rhel6%2e7%2dmxie?dcPath=mxie%252fmxie%252ddata&dsName=datastore1 2.2 encode URL,dcpath=mxie/mxie-data 3.Check dcpath in libvirt xml: 3.1 #virsh -c vpx://root@10.66.145.47/mxie/mxie-data/mxie-cluster/10.66.144.40/?no_verify=1 Enter root's password for 10.66.145.47: Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # list --all Id Name State ---------------------------------------------------- 164 VMware-vcenter-server-app running - app_vcenter600 shut off - Auto-esx6.0-win7-efi shut off - bug1260689-win2008R2-GPO-Macfee shut off - rhel6.7-mxie shut off [etc] 3.2 Check dcpath in guest xml virsh # dumpxml rhel6.7-mxie <domain type='vmware' xmlns:vmware='http://libvirt.org/schemas/domain/vmware/1.0'> <name>rhel6.7-mxie</name> <uuid>423f07c2-18f5-6830-09bd-bff8e75c2f9b</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu placement='static'>1</vcpu> <cputune> <shares>1000</shares> </cputune> <os> <type arch='x86_64'>hvm</type> </os> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <disk type='file' device='disk'> <source file='[datastore1] rhel6.7-mxie/rhel6.7-mxie.vmdk'/> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='scsi' index='0' model='vmpvscsi'/> <interface type='bridge'> <mac address='00:50:56:bf:c1:73'/> <source bridge='VM Network'/> <model type='vmxnet3'/> </interface> <video> <model type='vmvga' vram='8192'/> </video> </devices> <vmware:datacenterpath>mxie/mxie-data</vmware:datacenterpath> </domain> Result now: dcpath "<vmware:datacenterpath>mxie/mxie-data</vmware:datacenterpath>" has added in libvirt xml and match with the above one encoded from URL So move the bug from ON_QA to VERIFIED
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/RHSA-2016-2577.html