diff options
| author | Luke Kanies <luke@madstop.com> | 2007-09-22 17:22:07 -0500 |
|---|---|---|
| committer | Luke Kanies <luke@madstop.com> | 2007-09-22 17:22:07 -0500 |
| commit | e552c83b2875dab60a5508bfae352e7aa9235746 (patch) | |
| tree | 3b7555352428bb701bc072be86a0535ca7fb02d6 /lib | |
| parent | d6e91ae78698bdbec818d383574f4c279735e172 (diff) | |
| download | puppet-e552c83b2875dab60a5508bfae352e7aa9235746.tar.gz puppet-e552c83b2875dab60a5508bfae352e7aa9235746.tar.xz puppet-e552c83b2875dab60a5508bfae352e7aa9235746.zip | |
Adding the base file terminus. This will, at the least,
be used as the back end for filebuckets and the
certificate authority.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/indirector/file.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/puppet/indirector/file.rb b/lib/puppet/indirector/file.rb new file mode 100644 index 000000000..75fcf1ddf --- /dev/null +++ b/lib/puppet/indirector/file.rb @@ -0,0 +1,40 @@ +require 'puppet/indirector/terminus' + +# An empty terminus type, meant to just return empty objects. +class Puppet::Indirector::File < Puppet::Indirector::Terminus + def destroy(file) + raise Puppet::Error.new("File %s does not exist; cannot destroy" % [file.name]) unless File.exist?(file.path) + + begin + File.unlink(file.path) + rescue => detail + raise Puppet::Error, "Could not remove %s: %s" % [file.path, detail] + end + end + + def find(path) + return nil unless File.exist?(path) + + begin + content = File.read(path) + rescue => detail + raise Puppet::Error, "Could not retrieve path %s: %s" % [path, detail] + end + + file = model.new(path) + file.content = content + return file + end + + def save(file) + dir = File.dirname(file.path) + + raise Puppet::Error.new("Cannot save %s; parent directory %s does not exist" % [file.name, dir]) unless File.directory?(dir) + + begin + File.open(file.path, "w") { |f| f.print file.content } + rescue => detail + raise Puppet::Error, "Could not write %s: %s" % [file.path, detail] + end + end +end |
