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|