Class: Bosh::Director::Jobs::ImportCompiledPackages

Inherits:
BaseJob show all
Defined in:
lib/bosh/director/jobs/import_compiled_packages.rb

Instance Attribute Summary

Attributes inherited from BaseJob

#task_id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseJob

#begin_stage, #event_log, #logger, perform, #result_file, #single_step_stage, #task_cancelled?, #task_checkpoint, #track_and_log

Constructor Details

#initialize(export_dir) ⇒ ImportCompiledPackages

Returns a new instance of ImportCompiledPackages.



13
14
15
16
17
# File 'lib/bosh/director/jobs/import_compiled_packages.rb', line 13

def initialize(export_dir)
  @export_dir = export_dir

  @blobstore_client = Bosh::Director::App.instance.blobstores.blobstore
end

Class Method Details

.job_typeObject



9
10
11
# File 'lib/bosh/director/jobs/import_compiled_packages.rb', line 9

def self.job_type
  :import_compiled_packages
end

Instance Method Details

#performObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/bosh/director/jobs/import_compiled_packages.rb', line 19

def perform
  export = Bosh::Director::CompiledPackage::CompiledPackagesExport.new(file: export_path)

  export.extract do |manifest, packages|
    release_name = manifest.fetch('release_name')
    release_version_version = manifest.fetch('release_version')

    release = Bosh::Director::Models::Release[name: release_name]
    if release.nil?
      raise ReleaseNotFound, "Release version `#{release}/#{release_version_version}' doesn't exist"
    end

    release_version = Bosh::Director::Api::ReleaseManager.new.find_version(release, release_version_version)
    inserter = Bosh::Director::CompiledPackage::CompiledPackageInserter.new(@blobstore_client)

    packages.each { |p| p.check_blob_sha }

    packages.each do |package|
      inserter.insert(package, release_version)
    end
  end
ensure
  FileUtils.rm_rf(@export_dir)
end