class Bosh::Director::Jobs::DeleteVm

Public Class Methods

job_type() click to toggle source
# File lib/bosh/director/jobs/delete_vm.rb, line 7
def self.job_type
  :delete_vm
end
new(vm_cid) click to toggle source
# File lib/bosh/director/jobs/delete_vm.rb, line 11
def initialize(vm_cid)
  @vm_cid = vm_cid
  @cloud = Config.cloud
  @vm_deleter = Bosh::Director::VmDeleter.new(@cloud, logger, false, false)
  @deployment_name = nil
  @instance_name = nil
end

Public Instance Methods

perform() click to toggle source
# File lib/bosh/director/jobs/delete_vm.rb, line 19
def perform
  logger.info("deleting vm: #{@vm_cid}")
  begin
    instance = Bosh::Director::Api::InstanceLookup.new.by_filter(vm_cid: @vm_cid).first
    @deployment_name = instance.deployment.name
    @instance_name = instance.name
    parent_id = add_event
    @vm_deleter.delete_for_instance(instance, false)
  rescue InstanceNotFound
    parent_id = add_event
    @vm_deleter.delete_vm(@vm_cid)
  end
rescue Bosh::Clouds::VMNotFound
  logger.info("vm #{@vm_cid} does not exists")
rescue Exception => e
  raise e
ensure
  add_event(parent_id, e)
  return "vm #{@vm_cid} deleted" unless e
end

Private Instance Methods

add_event(parent_id = nil, error = nil) click to toggle source
# File lib/bosh/director/jobs/delete_vm.rb, line 41
def add_event(parent_id = nil, error = nil)
  event = Config.current_job.event_manager.create_event(
      {
          parent_id: parent_id,
          user: Config.current_job.username,
          action: 'delete',
          object_type: 'vm',
          object_name: @vm_cid,
          task: Config.current_job.task_id,
          deployment: @deployment_name,
          instance: @instance_name,
          error: error
      })
  event.id
end