class VagrantPlugins::ProviderLibvirt::Action::PrepareNFSSettings
Public Class Methods
new(app,env)
click to toggle source
# File lib/vagrant-libvirt/action/prepare_nfs_settings.rb, line 8 def initialize(app,env) @app = app @logger = Log4r::Logger.new("vagrant::action::vm::nfs") end
Public Instance Methods
call(env)
click to toggle source
# File lib/vagrant-libvirt/action/prepare_nfs_settings.rb, line 13 def call(env) @machine = env[:machine] @app.call(env) if using_nfs? @logger.info("Using NFS, preparing NFS settings by reading host IP and machine IP") env[:nfs_host_ip] = read_host_ip(env[:machine],env) env[:nfs_machine_ip] = env[:machine].ssh_info[:host] @logger.info("host IP: #{env[:nfs_host_ip]} machine IP: #{env[:nfs_machine_ip]}") raise Vagrant::Errors::NFSNoHostonlyNetwork if !env[:nfs_machine_ip] || !env[:nfs_host_ip] end end
read_host_ip(machine,env)
click to toggle source
Returns the IP address of the first host only network adapter
@param [Machine] machine @return [String]
# File lib/vagrant-libvirt/action/prepare_nfs_settings.rb, line 39 def read_host_ip(machine,env) nets = env[:libvirt_compute].list_networks if nets.size == 1 net = nets.first else domain = env[:libvirt_compute].servers.get(machine.id.to_s) xml=Nokogiri::XML(domain.to_xml) networkname = xml.xpath('/domain/devices/interface/source').first.attributes['network'].value.to_s @logger.info("Using network named #{networkname}") net = env[:libvirt_compute].list_networks.find {|netw| netw[:name] == networkname} end # FIXME better implement by libvirt xml parsing %xip addr show | grep -A 2 #{net[:bridge_name]} | grep -i 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f 1`.chomp end
read_machine_ip(machine)
click to toggle source
Returns the IP address of the guest by looking at the first enabled host only network.
@return [String]
# File lib/vagrant-libvirt/action/prepare_nfs_settings.rb, line 58 def read_machine_ip(machine) machine.config.vm.networks.each do |type, options| if type == :private_network && options[:ip].is_a?(String) return options[:ip] end end nil end
using_nfs?()
click to toggle source
We're using NFS if we have any synced folder with NFS configured. If we are not using NFS we don't need to do the extra work to populate these fields in the environment.
# File lib/vagrant-libvirt/action/prepare_nfs_settings.rb, line 31 def using_nfs? !!synced_folders(@machine)[:nfs] end