Class: Bosh::Director::CompiledPackage::CompiledPackagesExport

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/compiled_package/compiled_packages_export.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CompiledPackagesExport

Returns a new instance of CompiledPackagesExport.



6
7
8
9
# File 'lib/bosh/director/compiled_package/compiled_packages_export.rb', line 6

def initialize(options={})
  @file = options.fetch(:file)
  @exec = options.fetch(:exec, Bosh::Exec)
end

Instance Method Details

#extract {|manifest, packages| ... } ⇒ Object

Yields:

  • (manifest, packages)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/bosh/director/compiled_package/compiled_packages_export.rb', line 11

def extract
  tmp_dir = Dir.mktmpdir
  
  @exec.sh("tar -C #{tmp_dir} -xf #{@file}")
  
  manifest = YAML.load_file("#{tmp_dir}/compiled_packages.MF")
  packages = []
  
  manifest['compiled_packages'].each do |p|
    packages << CompiledPackage.new(
      package_name: p['package_name'],
      package_fingerprint: p['package_fingerprint'],
      sha1: p['compiled_package_sha1'],
      stemcell_sha1: p['stemcell_sha1'],
      blobstore_id: p['blobstore_id'],
      blob_path: File.join(tmp_dir, 'compiled_packages', 'blobs', p['blobstore_id']),
    )
  end

  yield manifest, packages

  FileUtils.rm_rf(tmp_dir)
end