blob: 3b196a1f86494ceb758dd7b9ce5067cc32e7c742 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
require 'puppet/checksum'
require 'puppet/indirector/file'
class Puppet::Checksum::File < Puppet::Indirector::File
desc "Store files in a directory set based on their checksums."
def initialize
Puppet.settings.use(:filebucket)
end
def path(checksum)
path = []
path << Puppet[:bucketdir] # Start with the base directory
path << checksum[0..7].split("").join(File::SEPARATOR) # Add sets of directories based on the checksum
path << checksum # And the full checksum name itself
path << "contents" # And the actual file name
path.join(File::SEPARATOR)
end
def save(file)
path = File.dirname(path(file.name))
# Make the directories if necessary.
unless FileTest.directory?(path)
Puppet::Util.withumask(0007) do
FileUtils.mkdir_p(path)
end
end
super
end
end
|