class HashiCorp::VagrantVMwareDesktop::SyncedFolder
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/vagrant-vmware-desktop/synced_folder.rb, line 4 def initialize(*args) super @logger = Log4r::Logger.new("hashicorp::provider::vmware::synced_folder") end
Public Instance Methods
cleanup(machine, opts)
click to toggle source
# File lib/vagrant-vmware-desktop/synced_folder.rb, line 85 def cleanup(machine, opts) if machine.id && machine.id != "" @logger.info("Clearing shared folders") machine.provider.driver.clear_shared_folders end end
enable(machine, folders, _opts)
click to toggle source
# File lib/vagrant-vmware-desktop/synced_folder.rb, line 20 def enable(machine, folders, _opts) # Verify that the machine can actually support sharing folders # if we can. if machine.guest.capability?(:verify_vmware_hgfs) machine.ui.info I18n.t("hashicorp.vagrant_vmware_desktop.waiting_for_hgfs") if !machine.guest.capability(:verify_vmware_hgfs) raise Errors::GuestMissingHGFS end end # Get the SSH info which we'll use later. We retry a few times # since sometimes it seems to return nil. ssh_info = nil 10.times do |i| ssh_info = machine.ssh_info break if ssh_info sleep 1 end if ssh_info == nil raise Errors::CannotGetSSHInfo end # short guestpaths first, so we don't step on ourselves shared_folders = folders.dup.sort_by do |id, data| if data[:guestpath] data[:guestpath].length else # A long enough path to just do this at the end. 10000 end end @logger.info("Preparing shared folders with VMX...") machine.ui.info I18n.t("hashicorp.vagrant_vmware_desktop.sharing_folders") machine.provider.driver.enable_shared_folders shared_folders.each do |id, data| id = id.gsub(%r{[:\\/]}, machine.provider_config.shared_folder_special_char) path = data[:hostpath] guestpath = data[:guestpath] message = I18n.t("hashicorp.vagrant_vmware_desktop.sharing_folder_single", hostpath: path, guestpath: guestpath) if Vagrant::VERSION < "1.5.0" machine.ui.info(message) else machine.ui.detail(message) end machine.provider.driver.share_folder(id, path) # Remove trailing slashes guestpath = guestpath.gsub(/\/+$/, "") # Calculate the owner and group data[:owner] ||= ssh_info[:username] data[:group] ||= ssh_info[:username] # Mount it! machine.guest.capability( :mount_vmware_shared_folder, id, data[:guestpath], data) end end
prepare(machine, folders, _opts)
click to toggle source
# File lib/vagrant-vmware-desktop/synced_folder.rb, line 16 def prepare(machine, folders, _opts) # We don't do anything prior to the machine booting end
usable?(machine)
click to toggle source
# File lib/vagrant-vmware-desktop/synced_folder.rb, line 10 def usable?(machine) # These synced folders only work if the provider is VMware [Plugin.provider_name, :vmware_desktop].include?(machine.provider_name) && machine.provider_config.functional_hgfs end