[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