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.
11 12 13 14 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 11 def initialize(app, _env) @logger = Log4r::Logger.new('vagrant::action::vm::share_folders') @app = app end |
Instance Method Details
#call(env) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 16 def call(env) @env = env prepare_folders @app.call(env) end |
#create_metadata ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 58 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.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 41 def prepare_folders shared_folders.each do |_id, | hostpath = Pathname.new([:hostpath]).(@env[:root_path]) next unless !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 |
#shared_folders ⇒ Object
This method returns an actual list of shared folders to create and their proper path.
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/vagrant-libvirt/action/share_folders.rb', line 27 def shared_folders {}.tap do |result| @env[:machine].config.vm.synced_folders.each do |id, data| # Ignore NFS shared folders next if !data[:type] == :nfs # This to prevent overwriting the actual shared folders data result[id] = data.dup end end end |