class Bosh::Director::Jobs::DeleteDeployment

Public Class Methods

job_type() click to toggle source
# File lib/bosh/director/jobs/delete_deployment.rb, line 8
def self.job_type
  :delete_deployment
end
new(deployment_name, options = {}) click to toggle source
# File lib/bosh/director/jobs/delete_deployment.rb, line 12
def initialize(deployment_name, options = {})
  @deployment_name = deployment_name
  @force = options['force']
  @keep_snapshots = options['keep_snapshots']
  @cloud = Config.cloud
  @deployment_manager = Api::DeploymentManager.new
end

Public Instance Methods

perform() click to toggle source
# File lib/bosh/director/jobs/delete_deployment.rb, line 20
def perform
  logger.info("Deleting: #{@deployment_name}")
  parent_id = add_event
  with_deployment_lock(@deployment_name) do
    deployment_model = @deployment_manager.find_by_name(@deployment_name)

    fail_if_ignored_instances_found(deployment_model)

    ip_provider = DeploymentPlan::IpProviderFactory.new(true, logger)

    dns_manager = DnsManagerProvider.create
    disk_manager = DiskManager.new(@cloud, logger)
    instance_deleter = InstanceDeleter.new(ip_provider, dns_manager, disk_manager, force: @force)
    deployment_deleter = DeploymentDeleter.new(Config.event_log, logger, dns_manager, Config.max_threads)

    vm_deleter = Bosh::Director::VmDeleter.new(@cloud, logger, @force, Config.enable_virtual_delete_vms)
    deployment_deleter.delete(deployment_model, instance_deleter, vm_deleter)
    add_event(parent_id)

    "/deployments/#{@deployment_name}"
  end
rescue Exception => e
  add_event(parent_id, e)
  raise e
end

Private Instance Methods

add_event(parent_id = nil, error = nil) click to toggle source
# File lib/bosh/director/jobs/delete_deployment.rb, line 48
def add_event(parent_id = nil, error = nil)
  event  = event_manager.create_event(
      {
          parent_id:   parent_id,
          user:        username,
          action:      "delete",
          object_type: "deployment",
          object_name: @deployment_name,
          deployment:  @deployment_name,
          task:        task_id,
          error:       error
      })
  event.id
end
fail_if_ignored_instances_found(deployment_model) click to toggle source
# File lib/bosh/director/jobs/delete_deployment.rb, line 63
def fail_if_ignored_instances_found(deployment_model)
  deployment_model.instances.each do |instance_model|
    if instance_model.ignore
      raise DeploymentIgnoredInstancesDeletion, "You are trying to delete deployment '#{deployment_model.name}', which " +
          'contains ignored instance(s). Operation not allowed.'
    end
  end
end