[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