Class: VagrantPlugins::ProviderLibvirt::Action::ShareFolders
- Inherits:
-
Object
- Object
- VagrantPlugins::ProviderLibvirt::Action::ShareFolders
- Defined in:
- lib/vagrant-libvirt/action/share_folders.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
- #create_metadata ⇒ Object
-
#initialize(app, env) ⇒ ShareFolders
constructor
A new instance of ShareFolders.
-
#prepare_folders ⇒ Object
Prepares the shared folders by verifying they exist and creating them if they don’t.
-
#shared_folders ⇒ Object
This method returns an actual list of shared folders to create and their proper path.
Constructor Details
#initialize(app, env) ⇒ ShareFolders
Returns a new instance of ShareFolders.
9 10 11 12 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 9 def initialize(app, env) @logger = Log4r::Logger.new("vagrant::action::vm::share_folders") @app = app end |
Instance Method Details
#call(env) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 14 def call(env) @env = env prepare_folders @app.call(env) end |
#create_metadata ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 60 def @env[:ui].info I18n.t("vagrant.actions.vm.share_folders.creating") folders = [] shared_folders.each do |id, data| folders << { :name => id, :hostpath => File.(data[:hostpath], @env[:root_path]), :transient => data[:transient] } end end |
#prepare_folders ⇒ Object
Prepares the shared folders by verifying they exist and creating them if they don’t.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 42 def prepare_folders shared_folders.each do |id, | hostpath = Pathname.new([:hostpath]).(@env[:root_path]) if !hostpath.directory? && [:create] # Host path doesn't exist, so let's create it. @logger.debug("Host path doesn't exist, creating: #{hostpath}") begin hostpath.mkpath rescue Errno::EACCES raise Vagrant::Errors::SharedFolderCreateFailed, :path => hostpath.to_s end end end end |
#shared_folders ⇒ Object
This method returns an actual list of shared folders to create and their proper path.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 25 def shared_folders {}.tap do |result| @env[:machine].config.vm.synced_folders.each do |id, data| # Ignore NFS shared folders next if !data[:nfs] # convert to NFS share #data[:nfs] = true # This to prevent overwriting the actual shared folders data result[id] = data.dup end end end |