[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