lib/vagrant-libvirt/cap/synced_folder.rb in vagrant-libvirt-0.0.30 vs lib/vagrant-libvirt/cap/synced_folder.rb in vagrant-libvirt-0.0.31

- old
+ new

@@ -1,8 +1,9 @@ require 'log4r' require 'ostruct' require 'nokogiri' +require "digest/md5" require 'vagrant/util/subprocess' require 'vagrant/errors' require 'vagrant-libvirt/errors' # require_relative "helper" @@ -22,25 +23,30 @@ # bail now if not using libvirt since checking version would throw error return false unless machine.provider_name == :libvirt # <filesystem/> support in device attach/detach introduced in 1.2.2 # version number format is major * 1,000,000 + minor * 1,000 + release - libvirt_version = ProviderLibvirt.libvirt_connection.client.libversion + libvirt_version = machine.provider.driver.connection.client.libversion libvirt_version >= 1_002_002 end def prepare(machine, folders, _opts) - raise Vagrant::Errors::Error('No libvirt connection') if ProviderLibvirt.libvirt_connection.nil? - @conn = ProviderLibvirt.libvirt_connection.client + raise Vagrant::Errors::Error('No libvirt connection') if machine.provider.driver.connection.nil? + @conn = machine.provider.driver.connection.client begin # loop through folders folders.each do |id, folder_opts| folder_opts.merge!({ target: id, accessmode: 'passthrough', readonly: nil }) { |_k, ov, _nv| ov } + + mount_tag = Digest::MD5.new.update(folder_opts[:hostpath]).to_s[0,31] + folder_opts[:mount_tag] = mount_tag + machine.ui.info "================\nMachine id: #{machine.id}\nShould be mounting folders\n #{id}, opts: #{folder_opts}" + xml = to_xml('filesystem', folder_opts) # puts "<<<<< XML:\n #{xml}\n >>>>>" @conn.lookup_domain_by_uuid(machine.id).attach_device(xml, 0) end rescue => e @@ -65,13 +71,13 @@ machine.guest.capability( :mount_p9_shared_folder, mount_folders) end def cleanup(machine, _opts) - if ProviderLibvirt.libvirt_connection.nil? + if machine.provider.driver.connection.nil? raise Vagrant::Errors::Error('No libvirt connection') end - @conn = ProviderLibvirt.libvirt_connection.client + @conn = machine.provider.driver.connection.client begin if machine.id && machine.id != '' dom = @conn.lookup_domain_by_uuid(machine.id) Nokogiri::XML(dom.xml_desc).xpath( '/domain/devices/filesystem').each do |xml|