def set_boot_sources(boot_mode, boot_source_settings, nic_first = true)
puts "Setting boot sources - #{boot_mode}, #{nic_first}"
boot_source_list = []
emb_nics = []
int_nics = []
all_other_nics = []
other_boot_srcs = []
enable_nic_srcs = []
return boot_source_list if not boot_source_settings or boot_source_settings.length == 0
return boot_source_list if boot_mode != "UEFI" and boot_mode != "BIOS"
if nic_first
boot_source_settings.each do |bss|
boot_src_instance_id = bss['InstanceID']
puts "DBG: Processing boot source - #{boot_src_instance_id}"
emb_nics << boot_src_instance_id if boot_src_instance_id.include?("NIC.Embedded")
int_nics << boot_src_instance_id if boot_src_instance_id.include?("NIC.Integrated")
all_other_nics << boot_src_instance_id if boot_src_instance_id.include?("NIC") and !emb_nics.include?(boot_src_instance_id) and !int_nics.include?(boot_src_instance_id)
other_boot_srcs << boot_src_instance_id if !emb_nics.include?(boot_src_instance_id) and !int_nics.include?(boot_src_instance_id) and !all_other_nics.include?(boot_src_instance_id)
if boot_src_instance_id and !other_boot_srcs.include?(boot_src_instance_id)
if boot_mode == "UEFI"
puts "DBG: Current state of #{boot_src_instance_id} is #{bss['CurrentEnabledStatus'].to_i}"
enable_nic_srcs << boot_src_instance_id if bss['CurrentEnabledStatus'].to_i == 0
else
puts "Not enabling or checking disabled boot sources for BIOS boot mode"
end
end
end
boot_source_list = emb_nics.sort if emb_nics and emb_nics.length > 0
boot_source_list = boot_source_list | int_nics.sort if int_nics and int_nics.length > 0
boot_source_list = boot_source_list | all_other_nics.sort if all_other_nics and all_other_nics.length > 0
boot_source_list = boot_source_list | other_boot_srcs.sort if other_boot_srcs and other_boot_srcs.length > 0
else
puts "nic_first = false. Returning current boot order"
boot_source_list = boot_source_settings
end
puts "DBG: Re-ordered boot source settings list is #{boot_source_list}"
puts "DBG: Disabled boot source list is #{enable_nic_srcs}"
[boot_source_list, enable_nic_srcs]
end