[libvirt] [PATCH 2/2] VMware: Initial VMware Fusion support
Doug Goldstein
cardoe at cardoe.com
Mon Sep 23 16:39:30 UTC 2013
On Mon, Sep 23, 2013 at 5:28 AM, Daniel P. Berrange <berrange at redhat.com> wrote:
> On Fri, Sep 20, 2013 at 03:06:51PM -0500, Doug Goldstein wrote:
>> Add support for VMware Fusion in the existing VMware driver. Connect
>> via the URI vmwarefusion:///session
>> ---
>> docs/drvvmware.html.in | 15 +++++++++++----
>> src/vmware/vmware_conf.c | 8 +++++++-
>> src/vmware/vmware_conf.h | 1 +
>> src/vmware/vmware_driver.c | 3 +++
>> 4 files changed, 22 insertions(+), 5 deletions(-)
>>
>> diff --git a/docs/drvvmware.html.in b/docs/drvvmware.html.in
>> index 9ee0ebd..240afd0 100644
>> --- a/docs/drvvmware.html.in
>> +++ b/docs/drvvmware.html.in
>> @@ -2,10 +2,11 @@
>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
>> <html xmlns="http://www.w3.org/1999/xhtml">
>> <body>
>> - <h1>VMware Workstation / Player hypervisors driver</h1>
>> + <h1>VMware Workstation / Player / Fusion hypervisors driver</h1>
>> <p>
>> - The libvirt VMware Workstation driver should be able to manage any Workstation and
>> - Player version supported by the VMware VIX API. See the compatibility list
>> + The libvirt VMware driver should be able to manage any Workstation,
>> + Player, Fusion version supported by the VMware VIX API. See the
>> + compatibility list
>> <a href="http://www.vmware.com/support/developer/vix-api/vix110_reference/">here</a>.
>> </p>
>> <p>
>> @@ -21,17 +22,22 @@
>> The <a href="http://www.vmware.com/">VMware Workstation and
>> Player</a> hypervisors
>> </li>
>> + <li>
>> + The <a href="http://www.vmware.com/fusion">VMware Fusion</a>
>> + hypervisor
>> + </li>
>> </ul>
>>
>> <h2>Connections to VMware driver</h2>
>>
>> <p>
>> The libvirt VMware driver provides per-user drivers (the "session" instance).
>> - Two uris are available:
>> + Three uris are available:
>> </p>
>> <ul>
>> <li>"vmwareplayer" for VMware Player</li>
>> <li>"vmwarews" for VMware Workstation</li>
>> + <li>"vmwarefusion" for VMware Fusion</li>
>> </ul>
>> <p>
>> Some example connection URIs for the driver are:
>> @@ -40,6 +46,7 @@
>> <pre>
>> vmwareplayer:///session (local access to VMware Player per-user instance)
>> vmwarews:///session (local access to VMware Workstation per-user instance)
>> +vmwarefusion:///session (local access to VMware Fusion per-user instance)
>> vmwarews+tcp://user@example.com/session (remote access to VMware Workstation, SASl/Kerberos)
>> vmwarews+ssh://user@example.com/session (remote access to VMware Workstation, SSH tunnelled)
>> </pre>
>> diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c
>> index d7ea8c4..6d5b11b 100644
>> --- a/src/vmware/vmware_conf.c
>> +++ b/src/vmware/vmware_conf.c
>> @@ -37,7 +37,8 @@
>>
>> VIR_ENUM_IMPL(vmwareDriver, VMWARE_DRIVER_LAST,
>> "player",
>> - "ws");
>> + "ws",
>> + "fusion");
>>
>> /* Free all memory associated with a vmware_driver structure */
>> void
>> @@ -275,6 +276,11 @@ vmwareExtractVersion(struct vmware_driver *driver)
>> if (virAsprintf(&bin, "%s/%s", vmwarePath, "vmware"))
>> goto cleanup;
>> break;
>> +
>> + case VMWARE_DRIVER_FUSION:
>> + if (virAsprintf(&bin, "%s/%s", vmwarePath, "vmware-vmx"))
>> + goto cleanup;
>> + break;
>> }
>>
>> cmd = virCommandNewArgList(bin, "-v", NULL);
>> diff --git a/src/vmware/vmware_conf.h b/src/vmware/vmware_conf.h
>> index a4fd855..b9fca6c 100644
>> --- a/src/vmware/vmware_conf.h
>> +++ b/src/vmware/vmware_conf.h
>> @@ -33,6 +33,7 @@
>> enum vmwareDriverType {
>> VMWARE_DRIVER_PLAYER = 0, /* VMware Player */
>> VMWARE_DRIVER_WORKSTATION = 1, /* VMware Workstation */
>> + VMWARE_DRIVER_FUSION = 2, /* VMware Fusion */
>>
>> VMWARE_DRIVER_LAST, /* required last item */
>> };
>> diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c
>> index 01d65ed..abedacf 100644
>> --- a/src/vmware/vmware_driver.c
>> +++ b/src/vmware/vmware_driver.c
>> @@ -40,6 +40,8 @@
>> */
>> static const char * const vmrun_candidates[] = {
>> "vmrun",
>> + "/Applications/VMware Fusion.app/Contents/Library/vmrun",
>> + "/Library/Application Support/VMware Fusion/vmrun",
>> };
>
> Are these two paths standard on OS-X, or is this just a default
> that is user customizable ? They don't add these dirs to $PATH ?
They're hardcoded in the VMware Fusion installer so its only ever
possible to install to those two paths. Version 4 and lower used the
path /Library/Application Support/ for the command line tools while
version 5 and newer used /Applications VMware Fusion.app/
No they don't add anything in /Library or /Applications to PATH. Its
actually frowned upon in Mac world.
>
> Should we surround these in #if OSX (or whatever the right symbol
> is) ?
Sure I can do that.
>
>>
>> static void
>> @@ -103,6 +105,7 @@ vmwareConnectOpen(virConnectPtr conn,
>> } else {
>> if (conn->uri->scheme == NULL ||
>> (STRNEQ(conn->uri->scheme, "vmwareplayer") &&
>> + STRNEQ(conn->uri->scheme, "vmwarefusion") &&
>> STRNEQ(conn->uri->scheme, "vmwarews")))
>> return VIR_DRV_OPEN_DECLINED;
>
> Daniel
> --
> |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org -o- http://virt-manager.org :|
> |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
--
Doug Goldstein
More information about the libvir-list
mailing list