class Bosh::Director::ProblemHandlers::MountInfoMismatch

Public Class Methods

new(disk_id, data) click to toggle source
# File lib/bosh/director/problem_handlers/mount_info_mismatch.rb, line 10
def initialize(disk_id, data)
  @disk = Models::PersistentDisk[disk_id]
  @data = data

  if @disk.nil?
    handler_error("Disk '#{disk_id}' is no longer in the database")
  end

  @disk_cid = @disk.disk_cid
  @vm_cid = @disk.instance.vm_cid if @disk.instance
  handler_error("Can't find corresponding vm-cid for disk '#{@disk_cid}'") if @vm_cid.nil?

  @instance = @disk.instance

  @disk_owners = @data['owner_vms']
end

Public Instance Methods

description() click to toggle source
# File lib/bosh/director/problem_handlers/mount_info_mismatch.rb, line 27
def description
  out =  "Inconsistent mount information:\n"
  out += "Record shows that disk '#{@disk_cid}' should be mounted on #{@vm_cid}.\n"
  out += "However it is currently :\n"

  if @disk_owners.size == 0
    out += "\tNot mounted in any VM"
  else
    out += "\tMounted on: #{@disk_owners.join(", ")}"
  end
  out
end
reattach_disk(reboot = false) click to toggle source
# File lib/bosh/director/problem_handlers/mount_info_mismatch.rb, line 55
def reattach_disk(reboot = false)
  cloud.attach_disk(@vm_cid, @disk_cid)
  if reboot
    reboot_vm(@instance)
  else
    agent_timeout_guard(@instance.vm_cid, @instance.credentials, @instance.agent_id) do |agent|
      agent.mount_disk(@disk_cid)
    end
  end
end