[DRE-commits] [vagrant-libvirt] 40/104: improve nfs
Antonio Terceiro
terceiro at moszumanska.debian.org
Sun Apr 24 13:55:43 UTC 2016
This is an automated email from the git hooks/post-receive script.
terceiro pushed a commit to annotated tag 0.0.11
in repository vagrant-libvirt.
commit 36b71b78a714a09f766eb1c9e4a8f5c817bf0788
Author: dima <pronix.service at gmail.com>
Date: Tue May 14 01:16:28 2013 +0200
improve nfs
---
README.md | 2 ++
lib/vagrant-libvirt/action.rb | 3 +--
lib/vagrant-libvirt/action/prepare_nfs_settings.rb | 18 +++++++++++++++---
lib/vagrant-libvirt/action/prune_nfs_exports.rb | 7 ++++++-
lib/vagrant-libvirt/action/share_folders.rb | 4 ++--
lib/vagrant-libvirt/action/sync_folders.rb | 1 +
lib/vagrant-libvirt/config.rb | 16 ----------------
7 files changed, 27 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index 35dca08..63f1eaa 100644
--- a/README.md
+++ b/README.md
@@ -164,6 +164,8 @@ to the remote machine over SSH.
This is good enough for all built-in Vagrant provisioners (shell,
chef, and puppet) to work!
+if used options :nfs => true, folder will exported by nfs.
+
## Box Format
You can view an example box in the [example_box/directory](https://github.com/pradels/vagrant-libvirt/tree/master/example_box). That directory also contains instructions on how to build a box.
diff --git a/lib/vagrant-libvirt/action.rb b/lib/vagrant-libvirt/action.rb
index 6bd7327..7c7647b 100644
--- a/lib/vagrant-libvirt/action.rb
+++ b/lib/vagrant-libvirt/action.rb
@@ -25,7 +25,6 @@ module VagrantPlugins
b2.use CreateNetworks
b2.use CreateNetworkInterfaces
- b2.use PruneNFSExports
b2.use NFS
b2.use PrepareNFSSettings
b2.use ShareFolders
@@ -105,8 +104,8 @@ module VagrantPlugins
next
end
- b2.use PruneNFSExports
b2.use ConnectLibvirt
+ b2.use PruneNFSExports
b2.use DestroyDomain
b2.use DestroyNetworks
diff --git a/lib/vagrant-libvirt/action/prepare_nfs_settings.rb b/lib/vagrant-libvirt/action/prepare_nfs_settings.rb
index b00d790..bc0ffb7 100644
--- a/lib/vagrant-libvirt/action/prepare_nfs_settings.rb
+++ b/lib/vagrant-libvirt/action/prepare_nfs_settings.rb
@@ -1,3 +1,4 @@
+require 'nokogiri'
module VagrantPlugins
module Libvirt
module Action
@@ -20,7 +21,7 @@ module VagrantPlugins
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[:nfs_host_ip] = read_host_ip(env[:machine],env)
env[:nfs_machine_ip] = env[:machine].ssh_info[:host]
raise Vagrant::Errors::NFSNoHostonlyNetwork if !env[:nfs_machine_ip]
@@ -31,8 +32,19 @@ module VagrantPlugins
#
# @param [Machine] machine
# @return [String]
- def read_host_ip(machine)
- `ip addr show | grep -A 2 virbr0 | grep -i 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f 1`.chomp
+ 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
+ puts "network name = #{networkname}"
+ net = env[:libvirt_compute].list_networks.map {|netw| netw if netw[:name] == networkname}.first
+ end
+ # FIXME better implement by libvirt xml parsing
+ `ip addr show | grep -A 2 #{net[:bridge_name]} | grep -i 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f 1`.chomp
end
# Returns the IP address of the guest by looking at the first
diff --git a/lib/vagrant-libvirt/action/prune_nfs_exports.rb b/lib/vagrant-libvirt/action/prune_nfs_exports.rb
index dcc2d49..435a80e 100644
--- a/lib/vagrant-libvirt/action/prune_nfs_exports.rb
+++ b/lib/vagrant-libvirt/action/prune_nfs_exports.rb
@@ -3,6 +3,7 @@ module VagrantPlugins
module Libvirt
module Action
class PruneNFSExports
+
def initialize(app, env)
@app = app
end
@@ -10,7 +11,11 @@ module VagrantPlugins
def call(env)
if env[:host]
uuid = env[:machine].id
- env[:host].nfs_prune(uuid)
+ # get all uuids
+ uuids = env[:libvirt_compute].servers.all.map(&:id)
+ # not exiisted in array will removed from nfs
+ uuids.delete(uuid)
+ env[:host].nfs_prune(uuids)
end
@app.call(env)
diff --git a/lib/vagrant-libvirt/action/share_folders.rb b/lib/vagrant-libvirt/action/share_folders.rb
index c6b496d..285b4e7 100644
--- a/lib/vagrant-libvirt/action/share_folders.rb
+++ b/lib/vagrant-libvirt/action/share_folders.rb
@@ -26,10 +26,10 @@ module VagrantPlugins
{}.tap do |result|
@env[:machine].config.vm.synced_folders.each do |id, data|
# Ignore NFS shared folders
- #next if data[:nfs]
+ next if !data[:nfs]
# convert to NFS share
- data[:nfs] = true
+ #data[:nfs] = true
# This to prevent overwriting the actual shared folders data
result[id] = data.dup
diff --git a/lib/vagrant-libvirt/action/sync_folders.rb b/lib/vagrant-libvirt/action/sync_folders.rb
index f16fa02..af5af7d 100644
--- a/lib/vagrant-libvirt/action/sync_folders.rb
+++ b/lib/vagrant-libvirt/action/sync_folders.rb
@@ -18,6 +18,7 @@ module VagrantPlugins
ssh_info = env[:machine].ssh_info
env[:machine].config.vm.synced_folders.each do |id, data|
+ next if data[:nfs]
hostpath = File.expand_path(data[:hostpath], env[:root_path])
guestpath = data[:guestpath]
diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb
index 7422459..a8a151f 100644
--- a/lib/vagrant-libvirt/config.rb
+++ b/lib/vagrant-libvirt/config.rb
@@ -27,10 +27,7 @@ module VagrantPlugins
attr_accessor :cpus
attr_accessor :nested
- attr_reader :shared_folders
-
def initialize
- @shared_folders = {}
@driver = UNSET_VALUE
@host = UNSET_VALUE
@connect_via_ssh = UNSET_VALUE
@@ -58,19 +55,6 @@ module VagrantPlugins
@nested = false if @nested == UNSET_VALUE
end
- def share_folder(name, guestpath, hostpath, opts=nil)
- @shared_folders[name] = {
- :guestpath => guestpath.to_s,
- :hostpath => hostpath.to_s,
- :create => false,
- :owner => nil,
- :group => nil,
- :nfs => false,
- :transient => false,
- :extra => nil
- }.merge(opts || {})
- end
-
def validate(machine)
end
end
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/vagrant-libvirt.git
More information about the Pkg-ruby-extras-commits
mailing list