class Bosh::Director::DeploymentPlan::AgentStateMigrator

Public Class Methods

new(deployment_plan, logger) click to toggle source
# File lib/bosh/director/deployment_plan/agent_state_migrator.rb, line 4
def initialize(deployment_plan, logger)
  @deployment_plan = deployment_plan
  @logger = logger
end

Public Instance Methods

get_state(instance) click to toggle source
# File lib/bosh/director/deployment_plan/agent_state_migrator.rb, line 9
def get_state(instance)
  @logger.debug("Requesting current VM state for: #{instance.agent_id}")
  agent = AgentClient.with_vm_credentials_and_agent_id(instance.credentials, instance.agent_id)
  state = agent.get_state

  @logger.debug("Received VM state: #{state.pretty_inspect}")
  verify_state(instance, state)
  @logger.debug('Verified VM state')

  state.delete('release')
  if state.include?('job')
    state['job'].delete('release')
  end
  state
end
verify_state(instance, state) click to toggle source
# File lib/bosh/director/deployment_plan/agent_state_migrator.rb, line 25
def verify_state(instance, state)
  unless state.kind_of?(Hash)
    @logger.error("Invalid state for '#{instance.vm_cid}': #{state.pretty_inspect}")
    raise AgentInvalidStateFormat,
      "VM '#{instance.vm_cid}' returns invalid state: " +
        "expected Hash, got #{state.class}"
  end
end