class BoshJobDocker::ReleaseTarball

A BOSH release tarball.

Attributes

extracter[R]
resolver[R]
work_dir[R]

Public Class Methods

new(path) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 13
def initialize(path)
  @work_dir = Dir.mktmpdir
  @extracter = TarExtracter.new

  extracter.extract(path, work_dir)
  @resolver = PackageDepResolver.new(release_manifest)
end

Public Instance Methods

build_order(job) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 30
def build_order(job)
  job_packages(job).reduce([]) do |order, p|
    order + resolver.package_deps(p)
  end.uniq
end
extract_package(package, dest) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 25
def extract_package(package, dest)
  FileUtils.mkdir_p(dest)
  extracter.extract(package_tarball_path(package), dest)
end
release_manifest() click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 21
def release_manifest
  YAML.load_file(File.join(work_dir, 'release.MF'))
end

Private Instance Methods

job_packages(job) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 48
def job_packages(job)
  job_spec(job)['packages']
end
job_spec(job) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 42
def job_spec(job)
  job_work_dir = Dir.mktmpdir
  extracter.extract(job_tarball_path(job), job_work_dir)
  YAML.load_file(File.join(job_work_dir, 'job.MF'))
end
job_tarball_path(job) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 38
def job_tarball_path(job)
  File.join(work_dir, 'jobs', "#{job}.tgz")
end
package_tarball_path(package) click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 52
def package_tarball_path(package)
  File.join(work_dir, 'packages', "#{package}.tgz")
end