diff options
author | Lamont Granquist <lamont@opscode.com> | 2013-03-27 13:19:17 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@opscode.com> | 2013-03-27 13:19:17 -0700 |
commit | 3f7eb37e71eae94d81981f193bd3b7757e69b0ab (patch) | |
tree | 05a841c49e714b79821147489801226452b5a17a /lib/chef/provider/remote_file.rb | |
parent | 289baefe9d8d034412ff2f56e9614c45dba286cc (diff) | |
download | chef-3f7eb37e71eae94d81981f193bd3b7757e69b0ab.tar.gz |
- debugging around etag/last-modified cache
- move checksumming current_resource back into l_c_r
- update new_resource.checksum immediately after deployingt
Diffstat (limited to 'lib/chef/provider/remote_file.rb')
-rw-r--r-- | lib/chef/provider/remote_file.rb | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/chef/provider/remote_file.rb b/lib/chef/provider/remote_file.rb index c3d98a27e7..fedd7ec5fd 100644 --- a/lib/chef/provider/remote_file.rb +++ b/lib/chef/provider/remote_file.rb @@ -31,11 +31,18 @@ class Chef def load_current_resource @current_resource = Chef::Resource::RemoteFile.new(@new_resource.name) super - fileinfo = load_fileinfo - if fileinfo && fileinfo["checksum"] == @current_resource.checksum - @current_resource.etag fileinfo["etag"] - @current_resource.last_modified fileinfo["last_modified"] - @current_resource.source fileinfo["src"] + unless fileinfo.nil? || fileinfo["checksum"].nil? || fileinfo["checksum"] == "" + Chef::Log.debug("found cached file information at #{Chef::Config[:file_cache_path]}/remote_file/#{new_resource.name}") + if fileinfo["checksum"] == @current_resource.checksum + @current_resource.etag fileinfo["etag"] + @current_resource.last_modified fileinfo["last_modified"] + @current_resource.source fileinfo["src"] + Chef::Log.debug("loaded etag %s, last_modified %s, source %s from file metadata cache" % [fileinfo["etag"], fileinfo["last_modified"], fileinfo["src"]]) + else + Chef::Log.debug("checksum of current resource does not match cached checksum, not loading metadata...") + end + else + Chef::Log.debug("no cached file information found") end end @@ -50,8 +57,8 @@ class Chef save_fileinfo(@content.raw_file_source) end - def load_fileinfo - begin + def fileinfo + @fileinfo ||= begin Chef::JSONCompat.from_json(Chef::FileCache.load("remote_file/#{new_resource.name}")) rescue Chef::Exceptions::FileNotFound nil @@ -66,6 +73,7 @@ class Chef cache["checksum"] = @new_resource.checksum cache_path = new_resource.name.sub(/^([A-Za-z]:)/, "") # strip drive letter on Windows Chef::FileCache.store("remote_file/#{cache_path}", cache.to_json) + Chef::Log.debug("stored etag '%s', last_modified '%s', checksum '%s' for source '%s' into %s" % [cache["etag"], cache["last_modified"], cache["checksum"], source, "#{Chef::Config[:file_cache_path]}/remote_file/#{cache_path}"] ) end end end |