[libvirt] VMware: Map vpx:// to dcPath
Richard W.M. Jones
rjones at redhat.com
Fri Sep 11 14:38:59 UTC 2015
On Fri, Sep 11, 2015 at 03:55:03PM +0200, Matthias Bolte wrote:
> 2015-09-07 22:04 GMT+02:00 Richard W.M. Jones <rjones at redhat.com>:
> > On Mon, Sep 07, 2015 at 02:29:22PM +0200, Matthias Bolte wrote:
> >> I think the datacenter path could be exposed
> >> as part of the domain XML as
> >> <vmware:datacenterpath>/path/to/dc</vmware:datacenterpath> similar to
> >> the way <qemu:commandline> works. But it would be ignored on parsing.
> >>
> >> Would that work for you? If yes, I can propose a patch that does this.
> >
> > Absolutely this would be brilliant.
>
> Okay, here's patch that does this. It's only tested using the test
> suite, as I don't have an ESX setup at hand at the moment. Do you have
> the possibility to test this properly?
I tried it against two vCenter instances, and I see the additional XML
like this:
<domain type='vmware' xmlns:vmware='http://libvirt.org/schemas/domain/vmware/1.0'>
...
<vmware:datacenterpath>Folder/Datacenter</vmware:datacenterpath>
</domain>
That seems fine and it's something we can use in libguestfs.
Looks good to me, so ACK.
Minor comment on the patch below.
> diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c
> index 21cf333..f3cbbf5 100644
> --- a/src/vmware/vmware_conf.c
> +++ b/src/vmware/vmware_conf.c
> @@ -145,6 +145,9 @@ vmwareLoadDomains(struct vmware_driver *driver)
> virCommandPtr cmd;
>
> ctx.parseFileName = vmwareCopyVMXFileName;
> + ctx.formatFileName = NULL;
> + ctx.autodetectSCSIControllerModel = NULL;
> + ctx.datacenterPath = NULL;
>
> cmd = virCommandNewArgList(driver->vmrun, "-T",
> vmwareDriverTypeToString(driver->type),
> diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c
> index ec74fe3..e228aaa 100644
> --- a/src/vmware/vmware_driver.c
> +++ b/src/vmware/vmware_driver.c
> @@ -381,7 +381,10 @@ vmwareDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
> if (flags & VIR_DOMAIN_DEFINE_VALIDATE)
> parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE;
>
> + ctx.parseFileName = NULL;
> ctx.formatFileName = vmwareCopyVMXFileName;
> + ctx.autodetectSCSIControllerModel = NULL;
> + ctx.datacenterPath = NULL;
>
> vmwareDriverLock(driver);
> if ((vmdef = virDomainDefParseString(xml, driver->caps, driver->xmlopt,
> @@ -671,7 +674,10 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml,
> if (flags & VIR_DOMAIN_START_VALIDATE)
> parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE;
>
> + ctx.parseFileName = NULL;
> ctx.formatFileName = vmwareCopyVMXFileName;
> + ctx.autodetectSCSIControllerModel = NULL;
> + ctx.datacenterPath = NULL;
>
> vmwareDriverLock(driver);
>
> @@ -1022,6 +1028,9 @@ vmwareConnectDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
> }
>
> ctx.parseFileName = vmwareCopyVMXFileName;
> + ctx.formatFileName = NULL;
> + ctx.autodetectSCSIControllerModel = NULL;
> + ctx.datacenterPath = NULL;
This appears to be an unrelated fix? Perhaps it should go in a
separate commit.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/
More information about the libvir-list
mailing list