class VagrantPlugins::ProviderLibvirt::Provider
This is the base class for a provider for the V2 API. A provider is responsible for creating compute resources to match the needs of a Vagrant-configured system.
Public Class Methods
new(machine)
click to toggle source
# File lib/vagrant-libvirt/provider.rb, line 12 def initialize(machine) @machine = machine raise 'REQUIRE USE RUBY >= 1.9.3 VERSION' if RUBY_VERSION < '1.9.3' end
Public Instance Methods
action(name)
click to toggle source
This should return an action callable for the given name.
# File lib/vagrant-libvirt/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
driver()
click to toggle source
# File lib/vagrant-libvirt/provider.rb, line 27 def driver return @driver if @driver @driver = Driver.new(@machine) end
mac_addresses()
click to toggle source
# File lib/vagrant-libvirt/provider.rb, line 77 def mac_addresses # Run a custom action called "read_mac_addresses" which will return # a list of mac addresses used by the machine. The returned data will # be in the following format: # # { # <ADAPTER_ID>: <MAC> # } env = @machine.action('read_mac_addresses') env[:machine_mac_addresses] end
machine_id_changed()
click to toggle source
This method is called if the underying machine ID changes. Providers can use this method to load in new data for the actual backing machine or to realize that the machine is now gone (the ID can become `nil`).
# File lib/vagrant-libvirt/provider.rb, line 37 def machine_id_changed; end
ssh_info()
click to toggle source
This should return a hash of information that explains how to SSH into the machine. If the machine is not at a point where SSH is even possible, then `nil` should be returned.
# File lib/vagrant-libvirt/provider.rb, line 42 def ssh_info # Return the ssh_info if already retrieved otherwise call the driver # and save the result. # # Ssh info has following format.. # # { # :host => "1.2.3.4", # :port => "22", # :username => "mitchellh", # :private_key_path => "/path/to/my/key" # } # note that modifying @machine.id or accessing @machine.state is not # thread safe, so be careful to avoid these here as this method may # be called from other threads of execution. return nil if state.id != :running ip = driver.get_ipaddress(@machine) # if can't determine the IP, just return nil and let the core # deal with it, similar to the docker provider return nil unless ip ssh_info = { host: ip, port: @machine.config.ssh.guest_port, forward_agent: @machine.config.ssh.forward_agent, forward_x11: @machine.config.ssh.forward_x11 } ssh_info[:proxy_command] = @machine.provider_config.proxy_command if @machine.provider_config.proxy_command ssh_info end
state()
click to toggle source
This should return the state of the machine within this provider. The state must be an instance of {MachineState}.
# File lib/vagrant-libvirt/provider.rb, line 91 def state state_id = nil state_id = :not_created unless @machine.id state_id = :not_created if !state_id && (!@machine.id || !driver.created?(@machine)) # Query the driver for the current state of the machine state_id = driver.state(@machine) if @machine.id && !state_id state_id = :unknown unless state_id # This is a special pseudo-state so that we don't set the # NOT_CREATED_ID while we're setting up the machine. This avoids # clearing the data dir. state_id = :preparing if @machine.id == 'preparing' # Get the short and long description short = state_id.to_s.tr('_', ' ') long = I18n.t("vagrant_libvirt.states.#{state_id}") # If we're not created, then specify the special ID flag if state_id == :not_created state_id = Vagrant::MachineState::NOT_CREATED_ID end # Return the MachineState object Vagrant::MachineState.new(state_id, short, long) end
to_s()
click to toggle source
# File lib/vagrant-libvirt/provider.rb, line 118 def to_s id = @machine.id.nil? ? 'new' : @machine.id "Libvirt (#{id})" end