class Chef::Knife::HmcDiskAdd
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/hmc_disk_add.rb, line 49 def run Chef::Log.debug("Adding disk...") validate!([:frame_name,:lpar_name,:vio2_name,:vio1_name,:size]) hmc = Hmc.new(get_config(:hmc_host), get_config(:hmc_username) , {:password => get_config(:hmc_password)}) hmc.connect #Populate hash to make LPAR object lpar_hash = hmc.get_lpar_options(get_config(:frame_name),get_config(:lpar_name)) #Create LPAR object based on hash, and VIO objects lpar = Lpar.new(lpar_hash) vio1 = Vio.new(hmc, get_config(:frame_name), get_config(:vio1_name)) vio2 = Vio.new(hmc, get_config(:frame_name), get_config(:vio2_name)) #Get vSCSI Information lpar_vscsi = lpar.get_vscsi_adapters first_slot = nil second_slot = nil adapter_cnt = 0 if lpar_vscsi.empty? == true #Add vSCSI Adapters lpar.add_vscsi(vio1) lpar.add_vscsi(vio2) lpar_vscsi = lpar.get_vscsi_adapters else lpar_vscsi.each do |adapter| if adapter.remote_lpar_name == vio1.name first_slot = adapter.remote_slot_num adapter_cnt += 1 elsif adapter.remote_lpar_name == vio2.name second_slot = adapter.remote_slot_num adapter_cnt += 1 end end if first_slot.nil? or second_slot.nil? or adapter_cnt != 2 #Could not determine which vSCSIs to use error = "Unable to determine which vSCSI adapters to use" puts "#{error}" ui.error(error) exit 1 end end #Find the vHosts first_vhost = vio1.find_vhost_given_virtual_slot(lpar_vscsi[0].remote_slot_num) second_vhost = vio2.find_vhost_given_virtual_slot(lpar_vscsi[1].remote_slot_num) #Check for volume group flag and add LUN to LPAR if validate([:volume_group]) if get_config(:volume_group).to_s.downcase == "rootvg" vio1.map_single_disk_by_size(first_vhost,vio2,second_vhost,get_config(:size).to_i) puts "Successfully attached LUN to #{get_config(:lpar_name)}" else vio1.map_by_size(first_vhost,vio2,second_vhost,get_config(:size).to_i) puts "Successfully attached LUN(s) to #{get_config(:lpar_name)}" end else vio1.map_by_size(first_vhost,vio2,second_vhost,get_config(:size).to_i) puts "Successfully attached LUN(s) to #{get_config(:lpar_name)}" end hmc.disconnect end