Module: HashiCorp::VagrantVMwareDesktop

Defined in:
lib/vagrant-vmware-desktop.rb,
lib/vagrant-vmware-desktop/cap.rb,
lib/vagrant-vmware-desktop/action.rb,
lib/vagrant-vmware-desktop/config.rb,
lib/vagrant-vmware-desktop/driver.rb,
lib/vagrant-vmware-desktop/errors.rb,
lib/vagrant-vmware-desktop/plugin.rb,
lib/vagrant-vmware-desktop/cap/disk.rb,
lib/vagrant-vmware-desktop/provider.rb,
lib/vagrant-vmware-desktop/constants.rb,
lib/vagrant-vmware-desktop/guest_cap.rb,
lib/vagrant-vmware-desktop/action/boot.rb,
lib/vagrant-vmware-desktop/action/halt.rb,
lib/vagrant-vmware-desktop/driver/base.rb,
lib/vagrant-vmware-desktop/helper/lock.rb,
lib/vagrant-vmware-desktop/cap/provider.rb,
lib/vagrant-vmware-desktop/cap/snapshot.rb,
lib/vagrant-vmware-desktop/setup_plugin.rb,
lib/vagrant-vmware-desktop/action/common.rb,
lib/vagrant-vmware-desktop/action/export.rb,
lib/vagrant-vmware-desktop/action/import.rb,
lib/vagrant-vmware-desktop/synced_folder.rb,
lib/vagrant-vmware-desktop/action/created.rb,
lib/vagrant-vmware-desktop/action/destroy.rb,
lib/vagrant-vmware-desktop/action/network.rb,
lib/vagrant-vmware-desktop/action/running.rb,
lib/vagrant-vmware-desktop/action/suspend.rb,
lib/vagrant-vmware-desktop/guest_cap/linux.rb,
lib/vagrant-vmware-desktop/action/suspended.rb,
lib/vagrant-vmware-desktop/action/checkpoint.rb,
lib/vagrant-vmware-desktop/action/vmx_modify.rb,
lib/vagrant-vmware-desktop/checkpoint_client.rb,
lib/vagrant-vmware-desktop/action/check_vmware.rb,
lib/vagrant-vmware-desktop/action/machine_lock.rb,
lib/vagrant-vmware-desktop/action/compatibility.rb,
lib/vagrant-vmware-desktop/action/forward_ports.rb,
lib/vagrant-vmware-desktop/action/share_folders.rb,
lib/vagrant-vmware-desktop/action/snapshot_save.rb,
lib/vagrant-vmware-desktop/helper/routing_table.rb,
lib/vagrant-vmware-desktop/action/base_mac_to_ip.rb,
lib/vagrant-vmware-desktop/action/snapshot_delete.rb,
lib/vagrant-vmware-desktop/helper/vagrant_utility.rb,
lib/vagrant-vmware-desktop/action/set_display_name.rb,
lib/vagrant-vmware-desktop/action/snapshot_restore.rb,
lib/vagrant-vmware-desktop/action/wait_for_address.rb,
lib/vagrant-vmware-desktop/action/prune_nfs_exports.rb,
lib/vagrant-vmware-desktop/action/wait_for_vmx_halt.rb,
lib/vagrant-vmware-desktop/action/fix_old_machine_id.rb,
lib/vagrant-vmware-desktop/action/message_not_created.rb,
lib/vagrant-vmware-desktop/action/message_not_running.rb,
lib/vagrant-vmware-desktop/action/package_vagrantfile.rb,
lib/vagrant-vmware-desktop/action/clear_shared_folders.rb,
lib/vagrant-vmware-desktop/action/prepare_nfs_settings.rb,
lib/vagrant-vmware-desktop/action/prune_forwarded_ports.rb,
lib/vagrant-vmware-desktop/action/check_existing_network.rb,
lib/vagrant-vmware-desktop/action/base_mac_config_warning.rb,
lib/vagrant-vmware-desktop/action/discard_suspended_state.rb,
lib/vagrant-vmware-desktop/action/message_already_running.rb,
lib/vagrant-vmware-desktop/guest_cap/linux/verify_vmware_hgfs.rb,
lib/vagrant-vmware-desktop/action/wait_for_communicator_compat.rb,
lib/vagrant-vmware-desktop/action/prepare_synced_folder_cleanup.rb,
lib/vagrant-vmware-desktop/guest_cap/linux/mount_vmware_shared_folder.rb,
lib/vagrant-vmware-desktop/action/prepare_forwarded_port_collision_params.rb

Defined Under Namespace

Modules: Action, Cap, Driver, Errors, GuestCap, Helper Classes: CheckpointClient, Config, Plugin, Provider, SetupPlugin, SyncedFolder

Constant Summary collapse

CONFLICTING_GEMS =

List of plugins that are incompatible with this plugin. These are the deprecated versions of the VMware plugin that this plugin replaces.

[
  "vagrant-vmware-fusion",
  "vagrant-vmware-workstation"
].map(&:freeze).freeze
VERSION =
"STUB"
PRODUCT_NAME =

This is the name of the gem.

Returns:

  • (String)
RbConfig::CONFIG["host_os"].include?("darwin") ? "fusion" : "workstation"
PLUGIN_NAME =
"vagrant-vmware-desktop"

Class Method Summary collapse

Class Method Details

.case_insensitive_fs?(path) ⇒ Boolean

Check if path is case insensitive

Parameters:

  • path (String, Pathname)

    to check (must exist)

Returns:

  • (Boolean)


150
151
152
153
154
155
156
# File 'lib/vagrant-vmware-desktop.rb', line 150

def self.case_insensitive_fs?(path)
  begin
    FileUtils.compare_file(path.to_s, path.to_s.downcase)
  rescue Errno::ENOENT
    false
  end
end

.case_sensitive_fs?(path) ⇒ Boolean

Check if path is case sensitive

Parameters:

  • path (String, Pathname)

    to check (must exist)

Returns:

  • (Boolean)


142
143
144
# File 'lib/vagrant-vmware-desktop.rb', line 142

def self.case_sensitive_fs?(path)
  !case_sensitive_fs(path)
end

.init_i18nObject

This initializes the i18n load path so that the plugin-specific translations work.



34
35
36
37
# File 'lib/vagrant-vmware-desktop.rb', line 34

def self.init_i18n
  I18n.load_path << File.expand_path("locales/en.yml", source_root)
  I18n.reload!
end

.init_loggingObject

This initializes the logging so that our logs are outputted at the same level as Vagrant core logs.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/vagrant-vmware-desktop.rb', line 41

def self.init_logging
  # Initialize logging
  level = nil
  begin
    level = Log4r.const_get(ENV["VAGRANT_LOG"].upcase)
  rescue NameError
    # This means that the logging constant wasn't found,
    # which is fine. We just keep `level` as `nil`. But
    # we tell the user.
    level = nil
  end

  # Some constants, such as "true" resolve to booleans, so the
  # above error checking doesn't catch it. This will check to make
  # sure that the log level is an integer, as Log4r requires.
  level = nil if !level.is_a?(Integer)

  # Set the logging level on all "vagrant" namespaced
  # logs as long as we have a valid level.
  if level
    logger = Log4r::Logger.new("hashicorp")
    logger.outputters = Log4r::Outputter.stderr
    logger.level = level
    logger = nil
  end
end

.orphan_artifact_cleanup!Object

Check for any deprecated suid binaries from previous vmware plugin installations and remove them



181
182
183
184
185
186
187
188
# File 'lib/vagrant-vmware-desktop.rb', line 181

def self.orphan_artifact_cleanup!
  if !Vagrant::Util::Platform.windows?
    glob_path = Vagrant.user_data_path.join("gems", "**", "**", "vagrant-vmware-{workstation,fusion}*").to_s
    Dir.glob(glob_path).each do |del_path|
      FileUtils.rm_rf(del_path) if File.directory?(del_path)
    end
  end
end

.source_rootPathname

This returns the path to the source of this plugin.

Returns:

  • (Pathname)


71
72
73
# File 'lib/vagrant-vmware-desktop.rb', line 71

def self.source_root
  @source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
end

.validate_install!NilClass

Checks for a valid installation state. Raises exception if invalid state detected.

Returns:

  • (NilClass)


163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/vagrant-vmware-desktop.rb', line 163

def self.validate_install!
  CONFLICTING_GEMS.each do |libname|
    if !Gem::Specification.find_all_by_name(libname).empty?
      $stderr.puts <<-EOF
ERROR: Vagrant has detected an incompatible plugin installed. Please uninstall
the `#{libname}` plugin and run the command again. To uninstall the plugin,
run the command shown below:

  vagrant plugin uninstall #{libname}

EOF
      raise "Plugin conflict"
    end
  end
end

.windows_to_wsl_path(path) ⇒ String

Convert Windows path to WSL path

Parameters:

  • path (String, Pathname)

Returns:

  • (String)


112
113
114
115
116
117
118
119
120
121
# File 'lib/vagrant-vmware-desktop.rb', line 112

def self.windows_to_wsl_path(path)
  if wsl?
    if Vagrant::Util::Platform.respond_to?(:windows_to_wsl_path)
      return Vagrant::Util::Platform.windows_to_wsl_path(path.to_s)
    elsif path.match(/^[A-Za-z]:/)
      return "/mnt/#{path[0, 1].downcase}#{path[2..-1].tr(92.chr, '/')}"
    end
  end
  path.to_s
end

.wsl?Boolean

Detect if inside WSL

Returns:

  • (Boolean)


84
85
86
87
# File 'lib/vagrant-vmware-desktop.rb', line 84

def self.wsl?
  Vagrant::Util::Platform.respond_to?(:wsl?) &&
    Vagrant::Util::Platform.wsl?
end

.wsl_drvfs_path?(path) ⇒ Boolean

Check if path is located on DrvFs file system

Parameters:

  • (String, Pathname)

Returns:

  • (Boolean)


127
128
129
130
131
132
133
134
135
136
# File 'lib/vagrant-vmware-desktop.rb', line 127

def self.wsl_drvfs_path?(path)
  path = path.to_s
  if Vagrant::Util::Platform.respond_to?(:wsl_drvfs_path?)
    return Vagrant::Util::Platform.wsl_drvfs_path?(path)
  end
  if wsl?
    return Vagrant::Util::Platform.wsl_windows_access_bypass?(path)
  end
  false
end

.wsl_to_windows_path(path) ⇒ String

Convert WSL path to a Windows path

Parameters:

  • path (String, Pathname)

Returns:

  • (String)


93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/vagrant-vmware-desktop.rb', line 93

def self.wsl_to_windows_path(path)
  if wsl?
    oval = ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"]
    ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"] = "1"
    path = Vagrant::Util::Platform.wsl_to_windows_path(path.to_s)
    ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"] = oval
    return "//?/#{path}".tr("/", 92.chr)
  end
  if Vagrant::Util::Platform.windows?
    path.to_s.tr("/", 92.chr)
  else
    path.to_s
  end
end