Class: VagrantPlugins::ProviderLibvirt::Provider

Inherits:
Object
  • Object
show all
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

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

#machine_id_changedObject

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_infoObject

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

#stateObject

This should return the state of the machine within this provider. The state must be an instance of MachineState.


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/vagrant-libvirt/provider.rb', line 54

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_sObject


70
71
72
73
# File 'lib/vagrant-libvirt/provider.rb', line 70

def to_s
  id = @machine.id.nil? ? "new" : @machine.id
  "Libvirt (#{id})"
end