Extract os friendly mount name for vbox shared folders
This commit is contained in:
parent
81b7d1524b
commit
b30a87ce6c
@ -34,13 +34,12 @@ module VagrantPlugins
|
||||
mount_options, _, _ = data[:plugin].capability(
|
||||
:mount_options, name, guest_path, data)
|
||||
if data[:plugin].capability?(:mount_name)
|
||||
name = data[:plugin].capability(:mount_name, data)
|
||||
name = data[:plugin].capability(:mount_name, name, data)
|
||||
end
|
||||
else
|
||||
next
|
||||
end
|
||||
|
||||
mount_options = "#{mount_options},nofail"
|
||||
{
|
||||
name: name,
|
||||
mount_point: guest_path,
|
||||
|
||||
@ -22,6 +22,7 @@ module VagrantPlugins
|
||||
|
||||
mount_options << "uid=#{mount_uid}"
|
||||
mount_options << "gid=#{mount_gid}"
|
||||
mount_options << "_netdev"
|
||||
mount_options = mount_options.join(',')
|
||||
return mount_options, mount_uid, mount_gid
|
||||
end
|
||||
@ -29,6 +30,10 @@ module VagrantPlugins
|
||||
def self.mount_type(machine)
|
||||
return VB_MOUNT_TYPE
|
||||
end
|
||||
|
||||
def self.mount_name(machine, name, data)
|
||||
name.gsub(/[\s\/\\]/,'_').sub(/^_/, '')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -78,6 +78,11 @@ module VagrantPlugins
|
||||
require_relative "cap/mount_options"
|
||||
Cap::MountOptions
|
||||
end
|
||||
|
||||
synced_folder_capability(:virtualbox, "mount_name") do
|
||||
require_relative "cap/mount_options"
|
||||
Cap::MountOptions
|
||||
end
|
||||
end
|
||||
|
||||
autoload :Action, File.expand_path("../action", __FILE__)
|
||||
|
||||
@ -36,7 +36,7 @@ module VagrantPlugins
|
||||
end
|
||||
mnt_opts << "_netdev"
|
||||
mnt_opts = merge_mount_options(mnt_opts, options[:mount_options] || [])
|
||||
|
||||
mnt_opts << "nofail"
|
||||
mount_options = mnt_opts.join(",")
|
||||
return mount_options, mount_uid, mount_gid
|
||||
end
|
||||
@ -45,7 +45,7 @@ module VagrantPlugins
|
||||
return MOUNT_TYPE
|
||||
end
|
||||
|
||||
def self.mount_name(machine, data)
|
||||
def self.mount_name(machine, name, data)
|
||||
data[:smb_host] ||= machine.guest.capability(
|
||||
:choose_addressable_ip_addr, candidate_ips)
|
||||
"//#{data[:smb_host]}/#{data[:smb_id]}"
|
||||
|
||||
@ -29,7 +29,7 @@ describe "VagrantPlugins::GuestLinux::Cap::PersistMountSharedFolder" do
|
||||
let (:folders) { {
|
||||
:folder_type => fstab_folders
|
||||
} }
|
||||
let(:expected_mount_options) { "uid=#{options_uid},gid=#{options_gid},nofail" }
|
||||
let(:expected_mount_options) { "uid=#{options_uid},gid=#{options_gid}" }
|
||||
|
||||
before do
|
||||
allow(machine).to receive(:communicate).and_return(comm)
|
||||
|
||||
@ -49,7 +49,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
let(:mount_owner){ 2000 }
|
||||
it "generates the expected mount command using mount_owner directly" do
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_mount_options).to eq("uid=#{mount_owner},gid=#{mount_gid}")
|
||||
expect(out_mount_options).to eq("uid=#{mount_owner},gid=#{mount_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_owner)
|
||||
expect(out_mount_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -59,7 +59,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
let(:mount_owner){ "2000" }
|
||||
it "generates the expected mount command using mount_owner directly" do
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_mount_options).to eq("uid=#{mount_owner},gid=#{mount_gid}")
|
||||
expect(out_mount_options).to eq("uid=#{mount_owner},gid=#{mount_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_owner)
|
||||
expect(out_mount_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -78,7 +78,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
|
||||
it "generates the expected mount command using mount_group directly" do
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{mount_group}")
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{mount_group},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_uid)
|
||||
expect(out_mount_gid).to eq(mount_group)
|
||||
end
|
||||
@ -89,7 +89,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
|
||||
it "generates the expected mount command using mount_group directly" do
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{mount_group}")
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{mount_group},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_uid)
|
||||
expect(out_mount_gid).to eq(mount_group)
|
||||
end
|
||||
@ -103,7 +103,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
expect(comm).to receive(:execute).with("getent group #{mount_group}", anything).and_raise(Vagrant::Errors::VirtualBoxMountFailed, {command: '', output: ''})
|
||||
expect(comm).to receive(:execute).with("id -g #{mount_owner}", anything).and_yield(:stdout, "1").and_return(0)
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=1")
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=1,_netdev")
|
||||
end
|
||||
end
|
||||
|
||||
@ -122,7 +122,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
expect(comm).to receive(:execute).with("id -u #{mount_owner}", anything).and_yield(:stdout, mount_uid)
|
||||
expect(comm).to receive(:execute).with("getent group #{mount_group}", anything).and_yield(:stdout, "vagrant:x:#{mount_gid}:")
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options.merge(mount_options: ["ro"]))
|
||||
expect(out_mount_options).to eq("ro,uid=#{mount_uid},gid=#{mount_gid}")
|
||||
expect(out_mount_options).to eq("ro,uid=#{mount_uid},gid=#{mount_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_uid)
|
||||
expect(out_mount_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -142,7 +142,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
expect(comm).not_to receive(:execute).with("id -u #{mount_owner}", anything).and_yield(:stdout, mount_uid)
|
||||
expect(comm).to receive(:execute).with("getent group #{mount_group}", anything).and_yield(:stdout, "vagrant:x:#{mount_gid}:")
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options.merge(mount_options: ["uid=#{options_uid}"]) )
|
||||
expect(out_mount_options).to eq("uid=#{options_uid},gid=#{mount_gid}")
|
||||
expect(out_mount_options).to eq("uid=#{options_uid},gid=#{mount_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(options_uid)
|
||||
expect(out_mount_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -155,7 +155,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
expect(comm).to receive(:execute).with("id -u #{mount_owner}", anything).and_yield(:stdout, mount_uid)
|
||||
expect(comm).not_to receive(:execute).with("getent group #{mount_group}", anything).and_yield(:stdout, "vagrant:x:#{mount_gid}:")
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options.merge(mount_options: ["gid=#{options_gid}"]) )
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{options_gid}")
|
||||
expect(out_mount_options).to eq("uid=#{mount_uid},gid=#{options_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(mount_uid)
|
||||
expect(out_mount_gid).to eq(options_gid)
|
||||
end
|
||||
@ -169,7 +169,7 @@ describe "VagrantPlugins::ProviderVirtualBox::Cap::MountOptions" do
|
||||
expect(comm).not_to receive(:execute).with("id -u #{mount_owner}", anything).and_yield(:stdout, mount_uid)
|
||||
expect(comm).not_to receive(:execute).with("getent group #{mount_group}", anything).and_yield(:stdout, "vagrant:x:#{options_gid}:")
|
||||
out_mount_options, out_mount_uid, out_mount_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options.merge(mount_options: ["uid=#{options_uid}", "gid=#{options_gid}"]) )
|
||||
expect(out_mount_options).to eq("uid=#{options_uid},gid=#{options_gid}")
|
||||
expect(out_mount_options).to eq("uid=#{options_uid},gid=#{options_gid},_netdev")
|
||||
expect(out_mount_uid).to eq(options_uid)
|
||||
expect(out_mount_gid).to eq(options_gid)
|
||||
end
|
||||
|
||||
@ -44,7 +44,7 @@ describe VagrantPlugins::SyncedFolderSMB::Cap::MountOptions do
|
||||
|
||||
it "generates the expected default mount command" do
|
||||
out_opts, out_uid, out_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev")
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev,nofail")
|
||||
expect(out_uid).to eq(mount_uid)
|
||||
expect(out_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -52,7 +52,7 @@ describe VagrantPlugins::SyncedFolderSMB::Cap::MountOptions do
|
||||
it "includes provided mount options" do
|
||||
folder_options[:mount_options] =["ro"]
|
||||
out_opts, out_uid, out_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev,ro")
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev,ro,nofail")
|
||||
expect(out_uid).to eq(mount_uid)
|
||||
expect(out_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -60,7 +60,7 @@ describe VagrantPlugins::SyncedFolderSMB::Cap::MountOptions do
|
||||
it "overwrites default mount options" do
|
||||
folder_options[:mount_options] =["ro", "sec=custom"]
|
||||
out_opts, out_uid, out_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_opts).to eq("sec=custom,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev,ro")
|
||||
expect(out_opts).to eq("sec=custom,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,_netdev,ro,nofail")
|
||||
expect(out_uid).to eq(mount_uid)
|
||||
expect(out_gid).to eq(mount_gid)
|
||||
end
|
||||
@ -68,7 +68,7 @@ describe VagrantPlugins::SyncedFolderSMB::Cap::MountOptions do
|
||||
it "does not add mfsymlinks option if env var VAGRANT_DISABLE_SMBMFSYMLINKS exists" do
|
||||
expect(ENV).to receive(:[]).with("VAGRANT_DISABLE_SMBMFSYMLINKS").and_return(false)
|
||||
out_opts, out_uid, out_gid = cap.mount_options(machine, mount_name, mount_guest_path, folder_options)
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,mfsymlinks,_netdev")
|
||||
expect(out_opts).to eq("sec=ntlmssp,credentials=/etc/smb_creds_vagrant,uid=1000,gid=1000,mfsymlinks,_netdev,nofail")
|
||||
expect(out_uid).to eq(mount_uid)
|
||||
expect(out_gid).to eq(mount_gid)
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user