class CookbookOmnifetch::ArtifactoryLocation

def cache_key

def cache_key
  "#{dependency.name}-#{cookbook_version}-#{repo_host}"
end

def cache_path

Returns:
  • (Pathname) -
def cache_path
  cache_root.join("#{cache_key}.tgz")
end

def cache_root

Returns:
  • (Pathname) -
def cache_root
  Pathname.new(CookbookOmnifetch.cache_path).join(".cache", "artifactory")
end

def cached_cookbook

Returns:
  • (CachedCookbook) -
def cached_cookbook
  raise AbstractFunction,
    "#cached_cookbook must be implemented on #{self.class.name}!"
end

def cookbook_name

def cookbook_name
  dependency.name
end

def initialize(dependency, options = {})

def initialize(dependency, options = {})
  super
  @uri ||= options[:artifactory]
  @cookbook_version = options[:version]
  if options[:http_client]
    @http_client = options[:http_client]
  else
    headers = { "X-Jfrog-Art-API" => Chef::Config.artifactory_api_key || ENV["ARTIFACTORY_API_KEY"] }
    @http_client = Chef::HTTP::Simple.new(uri, headers: headers)
  end
end

def install

Returns:
  • (void) -
def install
  FileUtils.mkdir_p(cache_root) unless cache_root.exist?
  http_client.streaming_request(nil) do |tempfile|
    tempfile.close
    FileUtils.mv(tempfile.path, cache_path)
  end
  FileUtils.mkdir_p(staging_root) unless staging_root.exist?
  Dir.mktmpdir(nil, staging_root) do |staging_dir|
    Mixlib::Archive.new(cache_path).extract(staging_dir, perms: false)
    staged_cookbook_path = File.join(staging_dir, cookbook_name)
    validate_cached!(staged_cookbook_path)
    FileUtils.mv(staged_cookbook_path, install_path)
  end
end

def install_path

Returns:
  • (Pathname, nil) -
def install_path
  @install_path ||= CookbookOmnifetch.storage_path.join(cache_key)
end

def installed?

Returns:
  • (Boolean) -
def installed?
  install_path.exist?
end

def lock_data

def lock_data
  out = {}
  out["artifactory"] = uri
  out["version"] = cookbook_version
  out
end

def repo_host

def repo_host
  @host ||= URI.parse(uri).host
end

def sanitized_version

def sanitized_version
  cookbook_version
end

def staging_root

Returns:
  • (Pathname) -
def staging_root
  Pathname.new(CookbookOmnifetch.cache_path).join(".cache_tmp", "artifactory")
end

def to_lock

Returns:
  • (string) -
def to_lock
  raise AbstractFunction,
    "#to_lock must be implemented on #{self.class.name}!"
end