class Bosh::Director::Jobs::Helpers::StemcellDeleter

Public Class Methods

new(cloud, compiled_package_deleter, logger) click to toggle source
# File lib/bosh/director/jobs/helpers/stemcell_deleter.rb, line 6
def initialize(cloud, compiled_package_deleter, logger)
  @cloud = cloud
  @compiled_package_deleter = compiled_package_deleter
  @logger = logger
end

Public Instance Methods

delete(stemcell, options = {}) click to toggle source
# File lib/bosh/director/jobs/helpers/stemcell_deleter.rb, line 12
def delete(stemcell, options = {})
  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 options['force']
      @logger.warn(e.backtrace.join("\n"))
      @logger.info("Force deleting is set, ignoring exception: #{e.message}")
    end

    stemcell.destroy
  end
end