class CookbookOmnifetch::ArtifactoryLocation
def cache_key
def cache_key "#{dependency.name}-#{cookbook_version}-#{repo_host}" end
def cache_path
-
(Pathname)
-
def cache_path cache_root.join("#{cache_key}.tgz") end
def cache_root
-
(Pathname)
-
def cache_root Pathname.new(CookbookOmnifetch.cache_path).join(".cache", "artifactory") end
def cached_cookbook
-
(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
-
(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
-
(Pathname, nil)
-
def install_path @install_path ||= CookbookOmnifetch.storage_path.join(cache_key) end
def installed?
-
(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
-
(Pathname)
-
def staging_root Pathname.new(CookbookOmnifetch.cache_path).join(".cache_tmp", "artifactory") end
def to_lock
-
(string)
-
def to_lock raise AbstractFunction, "#to_lock must be implemented on #{self.class.name}!" end