class Chef::Knife::HmcServerDelete

Public Instance Methods

destroy_chef_node(objectClass,name,type) click to toggle source

Extracted from Chef::Knife.delete_object. That function requires an extra confirmation before proceeding, which seems overly cautious of an operation that will destroy the server that the node represents.

# File lib/chef/knife/hmc_server_delete.rb, line 59
def destroy_chef_node(objectClass,name,type)
  object = objectClass.load(name)
  object.destroy
  puts "Deleted #{type} #{name}"
end
run() click to toggle source
# File lib/chef/knife/hmc_server_delete.rb, line 65
def run
            Chef::Log.debug("Deleting server...")

  validate!([:frame_name,:lpar_name])
 
  hmc = Hmc.new(get_config(:hmc_host), get_config(:hmc_username) , {:password => get_config(:hmc_password)}) 
  hmc.connect
  lpar_hash = hmc.get_lpar_options(get_config(:frame_name),get_config(:lpar_name))
  lpar = Lpar.new(lpar_hash)
     
  if get_config(:vio1_name).nil? and get_config(:vio2_name).nil?
    lpar.delete()
    puts "#{get_config(:lpar_name)} destroyed"
  else
    validate!([:vio1_name, :vio2_name])
    vio1 = Vio.new(hmc, get_config(:frame_name), get_config(:vio1_name))
    vio2 = Vio.new(hmc, get_config(:frame_name), get_config(:vio2_name))
    lpar.delete([vio1,vio2])
    puts "#{get_config(:lpar_name)} destroyed"
  end

  Chef::Log.debug("Server #{lpar.name} has been deleted.")

  #If :purge option was specified, delete the Chef node that
  #represents the LPAR we just deleted
  if get_config(:purge)
    Chef::Log.debug("Removing Chef node for #{lpar.name}")
    node_name = get_config(:chef_node_name) || lpar.name
    puts "Removing Chef node for #{lpar.name}"
    destroy_chef_node(Chef::Node, node_name, "node")
    destroy_chef_node(Chef::ApiClient, node_name, "client")
  end

  hmc.disconnect
end