mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Cleanup nfs config for Vagrant 1.4+
Fix checks if a synced_folder should be nfs or not Reorder up and start actions
This commit is contained in:
parent
54408733e0
commit
25fe1ea2c2
@ -1,10 +1,12 @@
|
|||||||
require 'vagrant/action/builder'
|
require 'vagrant/action/builder'
|
||||||
|
require 'log4r'
|
||||||
|
|
||||||
module VagrantPlugins
|
module VagrantPlugins
|
||||||
module ProviderLibvirt
|
module ProviderLibvirt
|
||||||
module Action
|
module Action
|
||||||
# Include the built-in modules so we can use them as top-level things.
|
# Include the built-in modules so we can use them as top-level things.
|
||||||
include Vagrant::Action::Builtin
|
include Vagrant::Action::Builtin
|
||||||
|
@logger = Log4r::Logger.new('vagrant_libvirt::action')
|
||||||
|
|
||||||
# This action is called to bring the box up from nothing.
|
# This action is called to bring the box up from nothing.
|
||||||
def self.action_up
|
def self.action_up
|
||||||
@ -25,9 +27,13 @@ module VagrantPlugins
|
|||||||
b2.use CreateNetworks
|
b2.use CreateNetworks
|
||||||
b2.use CreateNetworkInterfaces
|
b2.use CreateNetworkInterfaces
|
||||||
|
|
||||||
|
b2.use StartDomain
|
||||||
|
b2.use WaitTillUp
|
||||||
|
|
||||||
if Vagrant::VERSION < "1.4.0"
|
if Vagrant::VERSION < "1.4.0"
|
||||||
b2.use NFS
|
b2.use NFS
|
||||||
else
|
else
|
||||||
|
b2.use PrepareNFSValidIds
|
||||||
b2.use SyncedFolderCleanup
|
b2.use SyncedFolderCleanup
|
||||||
b2.use SyncedFolders
|
b2.use SyncedFolders
|
||||||
end
|
end
|
||||||
@ -35,8 +41,6 @@ module VagrantPlugins
|
|||||||
b2.use PrepareNFSSettings
|
b2.use PrepareNFSSettings
|
||||||
b2.use ShareFolders
|
b2.use ShareFolders
|
||||||
b2.use SetHostname
|
b2.use SetHostname
|
||||||
b2.use StartDomain
|
|
||||||
b2.use WaitTillUp
|
|
||||||
b2.use SyncFolders
|
b2.use SyncFolders
|
||||||
else
|
else
|
||||||
b2.use action_start
|
b2.use action_start
|
||||||
@ -68,22 +72,24 @@ module VagrantPlugins
|
|||||||
# Ensure networks are created and active
|
# Ensure networks are created and active
|
||||||
b3.use CreateNetworks
|
b3.use CreateNetworks
|
||||||
|
|
||||||
# Handle shared folders
|
|
||||||
if Vagrant::VERSION < "1.4.0"
|
|
||||||
b3.use NFS
|
|
||||||
else
|
|
||||||
b3.use SyncedFolderCleanup
|
|
||||||
b3.use SyncedFolders
|
|
||||||
end
|
|
||||||
b3.use PrepareNFSSettings
|
|
||||||
b3.use ShareFolders
|
|
||||||
|
|
||||||
# Start it..
|
# Start it..
|
||||||
b3.use StartDomain
|
b3.use StartDomain
|
||||||
|
|
||||||
# Machine should gain IP address when comming up,
|
# Machine should gain IP address when comming up,
|
||||||
# so wait for dhcp lease and store IP into machines data_dir.
|
# so wait for dhcp lease and store IP into machines data_dir.
|
||||||
b3.use WaitTillUp
|
b3.use WaitTillUp
|
||||||
|
|
||||||
|
# Handle shared folders
|
||||||
|
if Vagrant::VERSION < "1.4.0"
|
||||||
|
b3.use NFS
|
||||||
|
else
|
||||||
|
b3.use PrepareNFSValidIds
|
||||||
|
b3.use SyncedFolderCleanup
|
||||||
|
b3.use SyncedFolders
|
||||||
|
end
|
||||||
|
b3.use PrepareNFSSettings
|
||||||
|
b3.use ShareFolders
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -308,6 +314,7 @@ module VagrantPlugins
|
|||||||
autoload :MessageNotRunning, action_root.join('message_not_running')
|
autoload :MessageNotRunning, action_root.join('message_not_running')
|
||||||
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
||||||
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
|
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
|
||||||
|
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
|
||||||
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
|
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
|
||||||
autoload :ReadSSHInfo, action_root.join('read_ssh_info')
|
autoload :ReadSSHInfo, action_root.join('read_ssh_info')
|
||||||
autoload :ReadState, action_root.join('read_state')
|
autoload :ReadState, action_root.join('read_state')
|
||||||
|
@ -9,25 +9,27 @@ module VagrantPlugins
|
|||||||
end
|
end
|
||||||
|
|
||||||
def call(env)
|
def call(env)
|
||||||
|
@machine = env[:machine]
|
||||||
@app.call(env)
|
@app.call(env)
|
||||||
|
|
||||||
using_nfs = false
|
if using_nfs?
|
||||||
env[:machine].config.vm.synced_folders.each do |id, opts|
|
|
||||||
if opts[:nfs]
|
|
||||||
using_nfs = true
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if using_nfs
|
|
||||||
@logger.info("Using NFS, preparing NFS settings by reading host IP and machine IP")
|
@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_host_ip] = read_host_ip(env[:machine],env)
|
||||||
env[:nfs_machine_ip] = env[:machine].ssh_info[:host]
|
env[:nfs_machine_ip] = env[:machine].ssh_info[:host]
|
||||||
|
|
||||||
raise Vagrant::Errors::NFSNoHostonlyNetwork if !env[:nfs_machine_ip]
|
@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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
def using_nfs?
|
||||||
|
@machine.config.vm.synced_folders.any? { |_, opts| opts[:type] == :nfs }
|
||||||
|
end
|
||||||
|
|
||||||
# Returns the IP address of the first host only network adapter
|
# Returns the IP address of the first host only network adapter
|
||||||
#
|
#
|
||||||
# @param [Machine] machine
|
# @param [Machine] machine
|
||||||
|
17
lib/vagrant-libvirt/action/prepare_nfs_valid_ids.rb
Normal file
17
lib/vagrant-libvirt/action/prepare_nfs_valid_ids.rb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
module VagrantPlugins
|
||||||
|
module ProviderLibvirt
|
||||||
|
module Action
|
||||||
|
class PrepareNFSValidIds
|
||||||
|
def initialize(app, env)
|
||||||
|
@app = app
|
||||||
|
@logger = Log4r::Logger.new("vagrant::action::vm::nfs")
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
env[:nfs_valid_ids] = env[:libvirt_compute].servers.all.map(&:id)
|
||||||
|
@app.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -26,10 +26,7 @@ module VagrantPlugins
|
|||||||
{}.tap do |result|
|
{}.tap do |result|
|
||||||
@env[:machine].config.vm.synced_folders.each do |id, data|
|
@env[:machine].config.vm.synced_folders.each do |id, data|
|
||||||
# Ignore NFS shared folders
|
# Ignore NFS shared folders
|
||||||
next if !data[:nfs]
|
next if !data[:type] == :nfs
|
||||||
|
|
||||||
# convert to NFS share
|
|
||||||
#data[:nfs] = true
|
|
||||||
|
|
||||||
# This to prevent overwriting the actual shared folders data
|
# This to prevent overwriting the actual shared folders data
|
||||||
result[id] = data.dup
|
result[id] = data.dup
|
||||||
|
@ -18,7 +18,7 @@ module VagrantPlugins
|
|||||||
ssh_info = env[:machine].ssh_info
|
ssh_info = env[:machine].ssh_info
|
||||||
|
|
||||||
env[:machine].config.vm.synced_folders.each do |id, data|
|
env[:machine].config.vm.synced_folders.each do |id, data|
|
||||||
next if data[:nfs]
|
next if data[:type] == :nfs
|
||||||
proxycommand = "-o ProxyCommand='#{ssh_info[:proxy_command]}'" if ssh_info[:proxy_command]
|
proxycommand = "-o ProxyCommand='#{ssh_info[:proxy_command]}'" if ssh_info[:proxy_command]
|
||||||
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
||||||
guestpath = data[:guestpath]
|
guestpath = data[:guestpath]
|
||||||
|
Loading…
Reference in New Issue
Block a user