synced_folders/rsync: execute rsync_post cap if it exists [GH-3163]

This commit is contained in:
Mitchell Hashimoto 2014-03-12 18:43:59 -07:00
parent 67e9257332
commit a6eafd6a12
5 changed files with 29 additions and 0 deletions

View File

@ -20,6 +20,7 @@ BUG FIXES:
retryable to avoid spurious VirtualBox errors. [GH-2831]
- provisioners/ansible: Request SSH info within the provision method,
when we know its available. [GH-3111]
- synced\_folders/rsync: owner/group settings work. [GH-3163]
## 1.5.0 (March 10, 2014)

View File

@ -14,6 +14,12 @@ module VagrantPlugins
comm.sudo("chown -R #{username} '#{folder_opts[:guestpath]}'")
end
end
def self.rsync_post(machine, opts)
machine.communicate.tap do |comm|
comm.sudo("chown -R #{opts[:owner]}:#{opts[:group]} '#{opts[:guestpath]}'")
end
end
end
end
end

View File

@ -61,6 +61,11 @@ module VagrantPlugins
Cap::RSync
end
guest_capability("linux", "rsync_post") do
require_relative "cap/rsync"
Cap::RSync
end
guest_capability("linux", "rsync_pre") do
require_relative "cap/rsync"
Cap::RSync

View File

@ -24,6 +24,10 @@ module VagrantPlugins
hostpath += "/"
end
# Folder options
opts[:owner] ||= ssh_info[:username]
opts[:group] ||= ssh_info[:username]
# Connection information
username = ssh_info[:username]
host = ssh_info[:host]
@ -77,6 +81,11 @@ module VagrantPlugins
hostpath: hostpath,
stderr: r.stderr
end
# If we have tasks to do after rsyncing, do those.
if machine.guest.capability?(:rsync_post)
machine.guest.capability(:rsync_post, opts)
end
end
end
end

View File

@ -122,6 +122,14 @@ describe VagrantPlugins::SyncedFolderRSync::RsyncHelper do
subject.rsync_single(machine, ssh_info, opts)
end
it "executes the rsync_post capability after if it exists" do
guest.should_receive(:capability?).with(:rsync_post).and_return(true)
Vagrant::Util::Subprocess.should_receive(:execute).ordered.and_return(result)
guest.should_receive(:capability).with(:rsync_post, opts).ordered
subject.rsync_single(machine, ssh_info, opts)
end
context "excluding files" do
it "excludes files if given as a string" do
opts[:exclude] = "foo"