Class: Bosh::Director::Jobs::ExportRelease
- Includes:
- LockHelper
- Defined in:
- lib/bosh/director/jobs/export_release.rb
Instance Attribute Summary
Attributes inherited from BaseJob
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(deployment_name, release_name, release_version, stemcell_os, stemcell_version, options = {}) ⇒ ExportRelease
constructor
A new instance of ExportRelease.
- #perform ⇒ void
Methods included from LockHelper
#with_compile_lock, #with_deployment_lock, #with_release_lock, #with_release_locks, #with_stemcell_lock
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(deployment_name, release_name, release_version, stemcell_os, stemcell_version, options = {}) ⇒ ExportRelease
Returns a new instance of ExportRelease.
18 19 20 21 22 23 24 |
# File 'lib/bosh/director/jobs/export_release.rb', line 18 def initialize(deployment_name, release_name, release_version, stemcell_os, stemcell_version, = {}) @deployment_name = deployment_name @release_name = release_name @release_version = release_version @stemcell_os = stemcell_os @stemcell_version = stemcell_version end |
Class Method Details
.job_type ⇒ Object
14 15 16 |
# File 'lib/bosh/director/jobs/export_release.rb', line 14 def self.job_type :export_release end |
Instance Method Details
#perform ⇒ void
This method returns an undefined value.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/bosh/director/jobs/export_release.rb', line 27 def perform logger.info("Exporting release: #{@release_name}/#{@release_version} for #{@stemcell_os}/#{@stemcell_version}") stemcell_manager = Bosh::Director::Api::StemcellManager.new @stemcell = stemcell_manager.find_by_os_and_version(@stemcell_os, @stemcell_version) logger.info "Will compile with stemcell: #{@stemcell.desc}" deployment_manager = Bosh::Director::Api::DeploymentManager.new @targeted_deployment = deployment_manager.find_by_name(@deployment_name) @deployment_manifest = Psych.load(@targeted_deployment.manifest) release_manager = Bosh::Director::Api::ReleaseManager.new release = release_manager.find_by_name(@release_name) @release_version_model = release_manager.find_version(release, @release_version) unless deployment_manifest_has_release? raise ReleaseNotMatchingManifest, "Release version `#{@release_name}/#{@release_version}' not found in deployment `#{@deployment_name}' manifest" end validate_release_packages lock_timeout = 15 * 60 # 15 minutes with_deployment_lock(@deployment_name, :timeout => lock_timeout) do with_release_lock(@release_name, :timeout => lock_timeout) do with_stemcell_lock(@stemcell.name, @stemcell.version, :timeout => lock_timeout) do planner = create_planner(stemcell_manager) package_compile_step = DeploymentPlan::Steps::PackageCompileStep.new( planner, Config.cloud, # CPI Config.logger, Config.event_log, self ) package_compile_step.perform tarball_state = create_tarball result_file.write(tarball_state.to_json + "\n") end end end "Exported release: #{@release_name}/#{@release_version} for #{@stemcell_os}/#{@stemcell_version}" end |