Darwin guest: mount_vmware_shared_folder cap for use with vmware_fusion provider
- It's not clear whether it's possible to mount individual shares using 'mount -t vmhgfs', as the vagrant-vmware-fusion provider now does for Linux guests. Any mount from '.host', even if not a valid share name, succeeds and mounts _all_ shares in their respective directories at the root of the mountpoint. Instead, we symlink each directory from its place in '/Volumes/VMware Shared Folders'
This commit is contained in:
parent
7d0a92c5b4
commit
300d151608
|
@ -0,0 +1,36 @@
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestDarwin
|
||||||
|
module Cap
|
||||||
|
class MountVmwareSharedFolder
|
||||||
|
|
||||||
|
# we seem to be unable to ask 'mount -t vmhgfs' to mount the roots
|
||||||
|
# of specific shares, so instead we symlink from what is already
|
||||||
|
# mounted by the guest tools
|
||||||
|
# (ie. the behaviour of the VMware_fusion provider prior to 0.8.x)
|
||||||
|
|
||||||
|
def self.mount_vmware_shared_folder(machine, name, guestpath, options)
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
# clear prior symlink
|
||||||
|
if comm.test("sudo test -L \"#{guestpath}\"")
|
||||||
|
comm.sudo("rm \"#{guestpath}\"")
|
||||||
|
end
|
||||||
|
|
||||||
|
# clear prior directory if exists
|
||||||
|
if comm.test("sudo test -d \"#{guestpath}\"")
|
||||||
|
comm.sudo("rm -Rf \"#{guestpath}\"")
|
||||||
|
end
|
||||||
|
|
||||||
|
# create intermediate directories if needed
|
||||||
|
intermediate_dir = File.dirname(guestpath)
|
||||||
|
if !comm.test("sudo test -d \"#{intermediate_dir}\"")
|
||||||
|
comm.sudo("mkdir -p \"#{intermediate_dir}\"")
|
||||||
|
end
|
||||||
|
|
||||||
|
# finally make the symlink
|
||||||
|
comm.sudo("ln -s \"/Volumes/VMware Shared Folders/#{name}\" \"#{guestpath}\"")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -31,6 +31,11 @@ module VagrantPlugins
|
||||||
Cap::MountNFSFolder
|
Cap::MountNFSFolder
|
||||||
end
|
end
|
||||||
|
|
||||||
|
guest_capability("darwin", "mount_vmware_shared_folder") do
|
||||||
|
require_relative "cap/mount_vmware_shared_folder"
|
||||||
|
Cap::MountVmwareSharedFolder
|
||||||
|
end
|
||||||
|
|
||||||
guest_capability("darwin", "shell_expand_guest_path") do
|
guest_capability("darwin", "shell_expand_guest_path") do
|
||||||
require_relative "cap/shell_expand_guest_path"
|
require_relative "cap/shell_expand_guest_path"
|
||||||
Cap::ShellExpandGuestPath
|
Cap::ShellExpandGuestPath
|
||||||
|
|
Loading…
Reference in New Issue