summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/indirector/file_bucket_file/file.rb11
-rw-r--r--lib/puppet/indirector/indirection.rb2
-rw-r--r--lib/puppet/network/http/handler.rb6
3 files changed, 16 insertions, 3 deletions
diff --git a/lib/puppet/indirector/file_bucket_file/file.rb b/lib/puppet/indirector/file_bucket_file/file.rb
index 318858aaf..9d9cee793 100644
--- a/lib/puppet/indirector/file_bucket_file/file.rb
+++ b/lib/puppet/indirector/file_bucket_file/file.rb
@@ -15,7 +15,16 @@ module Puppet::FileBucketFile
def find( request )
checksum, path = request_to_checksum_and_path( request )
- find_by_checksum( checksum, request.options )
+ file = find_by_checksum( checksum, request.options )
+
+ if file && request.options[:diff_with]
+ hash_protocol = sumtype(checksum)
+ file2 = find_by_checksum( "{#{hash_protocol}}#{request.options[:diff_with]}", request.options )
+ raise "could not find diff_with #{request.options[:diff_with]}" unless file2
+ return `diff #{path_for(file).inspect}/contents #{path_for(file2).inspect}/contents`
+ end
+
+ file
end
def save( request )
diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb
index 309eed7b6..a010c4e40 100644
--- a/lib/puppet/indirector/indirection.rb
+++ b/lib/puppet/indirector/indirection.rb
@@ -191,7 +191,7 @@ class Puppet::Indirector::Indirection
# Otherwise, return the result from the terminus, caching if appropriate.
if ! request.ignore_terminus? and result = terminus.find(request)
- result.expiration ||= self.expiration
+ result.expiration ||= self.expiration if result.respond_to?(:expiration)
if cache? and request.use_cache?
Puppet.info "Caching #{self.name} for #{request.key}"
cache.save request(:save, result, *args)
diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb
index 61ae2d2fc..f22498b70 100644
--- a/lib/puppet/network/http/handler.rb
+++ b/lib/puppet/network/http/handler.rb
@@ -109,7 +109,11 @@ module Puppet::Network::HTTP::Handler
format = format_to_use(request)
set_content_type(response, format)
- set_response(response, result.render(format))
+ if result.respond_to?(:render)
+ set_response(response, result.render(format))
+ else
+ set_response(response, result)
+ end
end
# Execute our search.