Class: Bosh::Director::Jobs::Helpers::StemcellDeleter
- Includes:
- LockHelper
- Defined in:
- lib/bosh/director/jobs/helpers/stemcell_deleter.rb
Instance Method Summary collapse
- #delete(stemcell, options = {}) ⇒ Object
-
#initialize(cloud, compiled_package_deleter, logger, event_log) ⇒ StemcellDeleter
constructor
A new instance of StemcellDeleter.
Methods included from LockHelper
#with_compile_lock, #with_deployment_lock, #with_release_lock, #with_release_locks, #with_stemcell_lock
Constructor Details
#initialize(cloud, compiled_package_deleter, logger, event_log) ⇒ StemcellDeleter
Returns a new instance of StemcellDeleter.
6 7 8 9 10 11 |
# File 'lib/bosh/director/jobs/helpers/stemcell_deleter.rb', line 6 def initialize(cloud, compiled_package_deleter, logger, event_log) @cloud = cloud @compiled_package_deleter = compiled_package_deleter @logger = logger @event_log = event_log end |
Instance Method Details
#delete(stemcell, options = {}) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/bosh/director/jobs/helpers/stemcell_deleter.rb', line 13 def delete(stemcell, = {}) with_stemcell_lock(stemcell.name, stemcell.version) do @logger.info('Checking for any deployments still using the stemcell') deployments = stemcell.deployments unless deployments.empty? names = deployments.map { |d| d.name }.join(', ') raise Bosh::Director::StemcellInUse, "Stemcell `#{stemcell.name}/#{stemcell.version}' is still in use by: #{names}" end begin @cloud.delete_stemcell(stemcell.cid) rescue => e raise unless ['force'] @logger.warn(e.backtrace.join("\n")) @logger.info("Force deleting is set, ignoring exception: #{e.}") end @logger.info('Looking for any compiled packages on this stemcell') compiled_packages = Bosh::Director::Models::CompiledPackage.filter(:stemcell_id => stemcell.id) stage = @event_log.begin_stage('Deleting compiled packages', compiled_packages.count, [stemcell.name, stemcell.version]) @logger.info('Deleting compiled packages ' + "(#{compiled_packages.count}) for `#{stemcell.name}/#{stemcell.version}'") compiled_packages.each do |compiled_package| = "#{compiled_package.name}/#{compiled_package.version}" stage.advance_and_track() do @logger.info() @compiled_package_deleter.delete(compiled_package, ) end end stemcell.destroy end end |