Class: VagrantPlugins::ProviderLibvirt::Provider
- Inherits:
-
Object
- Object
- VagrantPlugins::ProviderLibvirt::Provider
- Defined in:
- lib/vagrant-libvirt/provider.rb
Overview
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.
Instance Method Summary collapse
-
#action(name) ⇒ Object
This should return an action callable for the given name.
-
#initialize(machine) ⇒ Provider
constructor
A new instance of Provider.
- #mac_addresses ⇒ Object
-
#machine_id_changed ⇒ Object
This method is called if the underying machine ID changes.
-
#ssh_info ⇒ Object
This should return a hash of information that explains how to SSH into the machine.
-
#state ⇒ Object
This should return the state of the machine within this provider.
- #to_s ⇒ Object
Constructor Details
#initialize(machine) ⇒ Provider
Returns a new instance of Provider.
10 11 12 13 |
# File 'lib/vagrant-libvirt/provider.rb', line 10 def initialize(machine) @machine = machine raise 'REQUIRE USE RUBY >= 1.9.3 VERSION' if RUBY_VERSION < '1.9.3' end |
Instance Method Details
#action(name) ⇒ Object
This should return an action callable for the given name.
16 17 18 19 20 21 22 23 |
# File 'lib/vagrant-libvirt/provider.rb', line 16 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 |
#mac_addresses ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/vagrant-libvirt/provider.rb', line 52 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 ⇒ Object
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`).
29 30 |
# File 'lib/vagrant-libvirt/provider.rb', line 29 def machine_id_changed end |
#ssh_info ⇒ Object
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.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/vagrant-libvirt/provider.rb', line 35 def ssh_info # Run a custom action called "read_ssh_info" which does what it says # and puts the resulting SSH info into the `:machine_ssh_info` key in # the environment. # # Ssh info has following format.. # #{ # :host => "1.2.3.4", # :port => "22", # :username => "mitchellh", # :private_key_path => "/path/to/my/key" #} env = @machine.action('read_ssh_info') env[:machine_ssh_info] end |
#state ⇒ Object
This should return the state of the machine within this provider. The state must be an instance of MachineState.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/vagrant-libvirt/provider.rb', line 66 def state # Run a custom action we define called "read_state" which does # what it says. It puts the state in the `:machine_state_id` # key in the environment. env = @machine.action('read_state') state_id = env[:machine_state_id] # Get the short and long description short = I18n.t("vagrant_libvirt.states.short_#{state_id}") long = I18n.t("vagrant_libvirt.states.long_#{state_id}") # Return the MachineState object Vagrant::MachineState.new(state_id, short, long) end |
#to_s ⇒ Object
82 83 84 85 |
# File 'lib/vagrant-libvirt/provider.rb', line 82 def to_s id = @machine.id.nil? ? "new" : @machine.id "Libvirt (#{id})" end |