Parent

Included Modules

Class/Module Index [+]

Quicksearch

Chef::ChecksumCache

Attributes

moneta[R]

Public Class Methods

all_cached_checksums() click to toggle source
# File lib/chef/checksum_cache.rb, line 72
def self.all_cached_checksums
  all_checksums_with_filenames = {}

  Dir[File.join(Chef::Config[:cache_options][:path], '*')].each do |cksum_file|
    all_checksums_with_filenames[File.basename(cksum_file)] = cksum_file
  end
  all_checksums_with_filenames
end
checksum_for_file(*args) click to toggle source
# File lib/chef/checksum_cache.rb, line 101
def self.checksum_for_file(*args)
  instance.checksum_for_file(*args)
end
cleanup_checksum_cache() click to toggle source
# File lib/chef/checksum_cache.rb, line 81
def self.cleanup_checksum_cache
  Chef::Log.debug("Cleaning the checksum cache")
  if (Chef::Config[:cache_type].to_s == "BasicFile")
    all_cached_checksums.each do |cache_key, cksum_cache_file|
      unless valid_cached_checksums.include?(cache_key)
        remove_unused_checksum(cksum_cache_file)
      end
    end
  end
end
generate_md5_checksum_for_file(*args) click to toggle source
# File lib/chef/checksum_cache.rb, line 136
def self.generate_md5_checksum_for_file(*args)
  instance.generate_md5_checksum_for_file(*args)
end
new(*args) click to toggle source
# File lib/chef/checksum_cache.rb, line 37
def initialize(*args)
  self.reset!(*args)
end
remove_unused_checksum(checksum_file) click to toggle source
# File lib/chef/checksum_cache.rb, line 96
def self.remove_unused_checksum(checksum_file)
  Chef::Log.debug("Removing unused checksum cache file #{checksum_file}")
  FileUtils.rm(checksum_file)
end
reset_cache_validity() click to toggle source
# File lib/chef/checksum_cache.rb, line 56
def self.reset_cache_validity
  @valid_cached_checksums = nil
end
valid_cached_checksums() click to toggle source
# File lib/chef/checksum_cache.rb, line 64
def self.valid_cached_checksums
  @valid_cached_checksums ||= Set.new
end
validate_checksum(checksum_key) click to toggle source
# File lib/chef/checksum_cache.rb, line 68
def self.validate_checksum(checksum_key)
  valid_cached_checksums << checksum_key
end

Public Instance Methods

checksum_for_file(file, key=nil) click to toggle source
# File lib/chef/checksum_cache.rb, line 109
def checksum_for_file(file, key=nil)
  key ||= generate_key(file)
  fstat = File.stat(file)
  lookup_checksum(key, fstat) || generate_checksum(key, file, fstat)
end
generate_checksum(key, file, fstat) click to toggle source
# File lib/chef/checksum_cache.rb, line 125
def generate_checksum(key, file, fstat)
  checksum = checksum_file(file, Digest::SHA256.new)
  moneta.store(key, {"mtime" => fstat.mtime.to_f, "checksum" => checksum})
  validate_checksum(key)
  checksum
end
generate_key(file, group="chef") click to toggle source
# File lib/chef/checksum_cache.rb, line 132
def generate_key(file, group="chef")
  "#{group}-file-#{file.gsub(/(#{File::SEPARATOR}|\.)/, '-')}"
end
generate_md5_checksum(io) click to toggle source
# File lib/chef/checksum_cache.rb, line 144
def generate_md5_checksum(io)
  checksum_io(io, Digest::MD5.new)
end
generate_md5_checksum_for_file(file) click to toggle source
# File lib/chef/checksum_cache.rb, line 140
def generate_md5_checksum_for_file(file)
  checksum_file(file, Digest::MD5.new)
end
lookup_checksum(key, fstat) click to toggle source
# File lib/chef/checksum_cache.rb, line 115
def lookup_checksum(key, fstat)
  cached = fetch(key)
  if cached && file_unchanged?(cached, fstat)
    validate_checksum(key)
    cached["checksum"]
  else
    nil
  end
end
reset!(backend=nil, options=nil) click to toggle source
# File lib/chef/checksum_cache.rb, line 41
def reset!(backend=nil, options=nil)
  backend ||= Chef::Config[:cache_type]
  options ||= Chef::Config[:cache_options]

  begin
    require "moneta/#{convert_to_snake_case(backend, 'Moneta')}"
    require 'chef/monkey_patches/moneta'
  rescue LoadError => e
    Chef::Log.fatal("Could not load Moneta back end #{backend.inspect}")
    raise e
  end

  @moneta = Moneta.const_get(backend).new(options)
end
validate_checksum(*args) click to toggle source
# File lib/chef/checksum_cache.rb, line 105
def validate_checksum(*args)
  self.class.validate_checksum(*args)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.