class Bosh::Director::Jobs::DeleteRelease

Public Class Methods

job_type() click to toggle source
# File lib/bosh/director/jobs/delete_release.rb, line 8
def self.job_type
  :delete_release
end
new(name, options = {}) click to toggle source
# File lib/bosh/director/jobs/delete_release.rb, line 12
def initialize(name, options = {})
  @name = name
  @force = !!options['force']
  @version = options['version']

  blobstore = options.fetch(:blobstore) { App.instance.blobstores.blobstore }
  blob_deleter = Helpers::BlobDeleter.new(blobstore, logger)
  compiled_package_deleter = Helpers::CompiledPackageDeleter.new(blob_deleter, logger)
  package_deleter = Helpers::PackageDeleter.new(compiled_package_deleter, blob_deleter, logger)
  template_deleter = Helpers::TemplateDeleter.new(blob_deleter, logger)
  release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, Config.event_log, logger)
  release_version_deleter =
    Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, Config.event_log)
  release_manager = Api::ReleaseManager.new
  @name_version_release_deleter = Helpers::NameVersionReleaseDeleter.new(release_deleter, release_manager, release_version_deleter, logger)
end

Public Instance Methods

perform() click to toggle source
# File lib/bosh/director/jobs/delete_release.rb, line 29
def perform
  logger.info('Processing delete release')

  errors = nil

  with_release_lock(@name, :timeout => 10) do
    errors = @name_version_release_deleter.find_and_delete_release(@name, @version, @force)
  end

  unless errors.empty?
    error_strings = errors.map { |e| e.to_s }.join(', ')
    raise ReleaseDeleteFailed, "Can't delete release: #{error_strings}"
  end

  "/release/#{@name}"
end