class Chef::CookbookCacheCleaner

Keep track of the filenames that we use in both eager cookbook downloading (during sync_cookbooks) and lazy (during the run itself, through FileVendor). After the run is over, clean up the cache.

Attributes

skip_removal[RW]

Public Class Methods

new() click to toggle source
# File lib/chef/cookbook/synchronizer.rb, line 45
def initialize
  reset!
end

Public Instance Methods

cache() click to toggle source
# File lib/chef/cookbook/synchronizer.rb, line 57
def cache
  Chef::FileCache
end
cleanup_file_cache() click to toggle source
# File lib/chef/cookbook/synchronizer.rb, line 61
def cleanup_file_cache
  unless Chef::Config[:solo_legacy_mode] || skip_removal
    # Delete each file in the cache that we didn't encounter in the
    # manifest.
    cache.find(File.join(%w{cookbooks ** {*,.*}})).each do |cache_filename|
      unless @valid_cache_entries[cache_filename]
        Chef::Log.info("Removing #{cache_filename} from the cache; it is no longer needed by #{Chef::Dist::CLIENT}.")
        cache.delete(cache_filename)
      end
    end
  else
    Chef::Log.info("Skipping removal of unused files from the cache")
  end
end
mark_file_as_valid(cache_path) click to toggle source
# File lib/chef/cookbook/synchronizer.rb, line 53
def mark_file_as_valid(cache_path)
  @valid_cache_entries[cache_path] = true
end
reset!() click to toggle source
# File lib/chef/cookbook/synchronizer.rb, line 49
def reset!
  @valid_cache_entries = {}
end