Description of problem:
vpx:// paths looks like this:
but to connect to the datastore to read the underlying disk image,
libguestfs must form a URL like this:
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
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:
but is not yet included upstream nor in RHEL 7.
Version-Release number of selected component (if applicable):
Pushed upstream in commit 636a99058758a0447482f3baad94de8de3ab1151.
Patches for libguestfs to use this field:
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:
1. Setting up some folder structure in vCenter. In vCenter I added this:
-> 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://email@example.com/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
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'>
<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'/>
<controller type='scsi' index='0' model='vmpvscsi'/>
<source bridge='VM Network'/>
<model type='vmvga' vram='8192'/>
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.