class Bosh::Director::DeploymentDeleter

Public Class Methods

new(event_log, logger, dns_manager, max_threads) click to toggle source
# File lib/bosh/director/deployment_deleter.rb, line 3
def initialize(event_log, logger, dns_manager, max_threads)
  @event_log = event_log
  @logger = logger
  @dns_manager = dns_manager
  @max_threads = max_threads
end

Public Instance Methods

delete(deployment_model, instance_deleter, vm_deleter) click to toggle source
# File lib/bosh/director/deployment_deleter.rb, line 10
def delete(deployment_model, instance_deleter, vm_deleter)
  instance_plans = deployment_model.instances.map do |instance_model|
    DeploymentPlan::InstancePlan.new(
      existing_instance: instance_model,
      instance: nil,
      desired_instance: nil,
      network_plans: []
    )
  end
  event_log_stage = @event_log.begin_stage('Deleting instances', instance_plans.size)
  instance_deleter.delete_instance_plans(instance_plans, event_log_stage, max_threads: @max_threads)

  event_log_stage = @event_log.begin_stage('Removing deployment artifacts', 3)

  event_log_stage.advance_and_track('Detaching stemcells') do
    @logger.info('Detaching stemcells')
    deployment_model.remove_all_stemcells
  end

  event_log_stage.advance_and_track('Detaching releases') do
    @logger.info('Detaching releases')
    deployment_model.remove_all_release_versions
  end

  event_log_stage = @event_log.begin_stage('Deleting properties', deployment_model.properties.count)
  @logger.info('Deleting deployment properties')
  deployment_model.properties.each do |property|
    event_log_stage.advance_and_track(property.name) do
      property.destroy
    end
  end

  event_log_stage.advance_and_track('Destroying deployment') do
    @logger.info('Destroying deployment')
    deployment_model.destroy
  end
end