guests/omnios: Update NFS folder mounting in one command

This commit is contained in:
Seth Vargo 2016-06-05 16:19:19 -04:00
parent 95972c1527
commit c441732c59
No known key found for this signature in database
GPG Key ID: 905A90C2949E8787
2 changed files with 57 additions and 4 deletions

View File

@ -3,11 +3,17 @@ module VagrantPlugins
module Cap
class MountNFSFolder
def self.mount_nfs_folder(machine, ip, folders)
su_cmd = machine.config.solaris.suexec_cmd
folders.each do |name, opts|
machine.communicate.execute("#{su_cmd} mkdir -p #{opts[:guestpath]}")
machine.communicate.execute("#{su_cmd} /sbin/mount '#{ip}:#{opts[:hostpath]}' '#{opts[:guestpath]}'")
comm = machine.communicate
commands = []
folders.each do |_, opts|
commands << <<-EOH.gsub(/^ {14}/, '')
mkdir -p '#{opts[:guestpath]}'
/sbin/mount '#{ip}:#{opts[:hostpath]}' '#{opts[:guestpath]}'
EOH
end
comm.sudo(commands.join("\n"))
end
end
end

View File

@ -0,0 +1,47 @@
require_relative "../../../../base"
describe "VagrantPlugins::GuestOmniOS::Cap:RSync" do
let(:caps) do
VagrantPlugins::GuestOmniOS::Plugin
.components
.guest_capabilities[:omnios]
end
let(:machine) { double("machine") }
let(:comm) { VagrantTests::DummyCommunicator::Communicator.new(machine) }
before do
allow(machine).to receive(:communicate).and_return(comm)
end
after do
comm.verify_expectations!
end
describe ".mount_nfs_folder" do
let(:cap) { caps.get(:mount_nfs_folder) }
let(:ip) { "1.2.3.4" }
let(:hostpath) { "/host" }
let(:guestpath) { "/guest" }
it "mounts the folder" do
folders = {
"/vagrant-nfs" => {
type: :nfs,
guestpath: "/guest",
hostpath: "/host",
}
}
cap.mount_nfs_folder(machine, ip, folders)
expect(comm.received_commands[0]).to match(/mkdir -p '#{guestpath}'/)
expect(comm.received_commands[0]).to match(/'1.2.3.4:#{hostpath}' '#{guestpath}'/)
end
it "mounts with options" do
pending "not yet implemented"
end
end
end