class HashiCorp::VagrantVMwareDesktop::Provider
Attributes
driver[R]
Public Class Methods
new(machine)
click to toggle source
# File lib/vagrant-vmware-desktop/provider.rb, line 10 def initialize(machine) @logger = Log4r::Logger.new("hashicorp::vagrant::vmware") @machine = machine # Force a load of the driver machine_id_changed end
Public Instance Methods
action(name)
click to toggle source
# File lib/vagrant-vmware-desktop/provider.rb, line 18 def action(name) # Attempt to get the action method from the Action class if it # exists, otherwise return nil to show that we don't support the # given action. action_method = "action_#{name}" return Action.send(action_method) if Action.respond_to?(action_method) nil end
machine_id_changed()
click to toggle source
# File lib/vagrant-vmware-desktop/provider.rb, line 27 def machine_id_changed begin id = @machine.id id = id.chomp if id @logger.debug("Re-initializing driver for new ID: #{id.inspect}") @driver = Driver.create(id, @machine.provider_config) rescue Errors::DriverMissingVMX # Delete the VM. This will trigger a machine_id_changed again that # should never fail. @machine.id = nil end end
ssh_info()
click to toggle source
Returns the SSH info for accessing the VMware VM.
# File lib/vagrant-vmware-desktop/provider.rb, line 41 def ssh_info # We can't SSH if it isn't running return nil if state.id != :running # Try to read the IP of the machine so we can access it. If # this returns nil then we report that we're not ready for SSH. # We retry this a few times because sometimes VMware doesn't have # an IP ready right away. machine_ip = nil 10.times do |i| machine_ip = @driver.read_ip( @machine.provider_config.enable_vmrun_ip_lookup ) break if machine_ip sleep i+1 end return nil if !machine_ip if !@machine.provider_config.ssh_info_public @logger.debug("Using localhost lookup for SSH info.") host_port = @driver.host_port_forward(machine_ip, :tcp, @machine.config.ssh.guest_port) if host_port return { :host => "127.0.0.1", :port => host_port } else @logger.error("Failed localhost SSH info lookup. Using public address.") end end @logger.debug("Using public address lookup for SSH info.") return { :host => machine_ip, :port => @machine.config.ssh.guest_port } end
state()
click to toggle source
# File lib/vagrant-vmware-desktop/provider.rb, line 79 def state state_id = @driver.read_state @logger.debug("VM state requested. Current state: #{state_id}") # Get the short and long description short = I18n.t("hashicorp.vagrant_vmware_desktop.states.short_#{state_id}") long = I18n.t("hashicorp.vagrant_vmware_desktop.states.long_#{state_id}") # Return the MachineState object Vagrant::MachineState.new(state_id, short, long) end
to_s()
click to toggle source
# File lib/vagrant-vmware-desktop/provider.rb, line 91 def to_s "VMware #{PRODUCT_NAME.capitalize}" end