]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/hardware/templates/default/ohai.rb.erb
Fix collection of PSU details from dmidecode
[chef.git] / cookbooks / hardware / templates / default / ohai.rb.erb
index b2d56c7d86698e2dc8cbd16eb398b3aa0efcab1a..bec49f967f38ed1151f00819f3ad533e8de65b25 100644 (file)
@@ -190,7 +190,7 @@ Ohai.plugin(:Hardware) do
     Dir.glob("/sys/class/scsi_host/host*") do |host|
       driver = read_sysctl_file("#{host}/proc_name")
 
     Dir.glob("/sys/class/scsi_host/host*") do |host|
       driver = read_sysctl_file("#{host}/proc_name")
 
-      if driver == "ahci" || driver == "mptsas"
+      if %w(ahci mptsas sata_mv sata_nv).include?(driver)
         bus = host.sub("/sys/class/scsi_host/host", "")
 
         Dir.glob("/sys/bus/scsi/devices/#{bus}:0:*").each do |device|
         bus = host.sub("/sys/class/scsi_host/host", "")
 
         Dir.glob("/sys/bus/scsi/devices/#{bus}:0:*").each do |device|
@@ -586,7 +586,7 @@ Ohai.plugin(:Hardware) do
   end
 
   def find_adaptec_disks(devices)
   end
 
   def find_adaptec_disks(devices)
-    controller_count = IO.popen(%w(arcconf getconfig 0)).first.scan(/^Controllers found: (\d+)$/).first.first.to_i
+    controller_count = IO.popen(%w(arcconf getconfig 0)).first.scan(/^Controllers Found: (\d+)$/i).first.first.to_i
 
     1.upto(controller_count).each do |controller_number|
       controller = {
 
     1.upto(controller_count).each do |controller_number|
       controller = {
@@ -605,7 +605,7 @@ Ohai.plugin(:Hardware) do
       disk = nil
 
       IO.popen(["arcconf", "getconfig", controller_number.to_s]).each do |line|
       disk = nil
 
       IO.popen(["arcconf", "getconfig", controller_number.to_s]).each do |line|
-        if line =~ /^Logical device number (\d+)$/
+        if line =~ /^Logical Device Number (\d+)$/i
           array = {
             :id => devices[:arrays].count,
             :controller => controller[:id],
           array = {
             :id => devices[:arrays].count,
             :controller => controller[:id],
@@ -632,23 +632,26 @@ Ohai.plugin(:Hardware) do
           disks << disk
         elsif disk && line =~ /^         Reported Channel,Device\(T:L\)\s*:\s+(\d+),(\d+)\(\d+:0\)\s*$/
           disk[:channel_number] = Regexp.last_match(1)
           disks << disk
         elsif disk && line =~ /^         Reported Channel,Device\(T:L\)\s*:\s+(\d+),(\d+)\(\d+:0\)\s*$/
           disk[:channel_number] = Regexp.last_match(1)
-          disk[:device_number] = Regexp.last_match(1)
+          disk[:device_number] = Regexp.last_match(2)
         elsif disk && line =~ /^         (\S.*\S)\s*:\s+(\S.*\S)\s*$/
           case Regexp.last_match(1)
           when "Reported Location" then disk[:location] = Regexp.last_match(2)
           when "Vendor" then disk[:vendor] = Regexp.last_match(2)
           when "Model" then disk[:model] = Regexp.last_match(2)
           when "Firmware" then disk[:firmware_version] = Regexp.last_match(2)
         elsif disk && line =~ /^         (\S.*\S)\s*:\s+(\S.*\S)\s*$/
           case Regexp.last_match(1)
           when "Reported Location" then disk[:location] = Regexp.last_match(2)
           when "Vendor" then disk[:vendor] = Regexp.last_match(2)
           when "Model" then disk[:model] = Regexp.last_match(2)
           when "Firmware" then disk[:firmware_version] = Regexp.last_match(2)
-          when "Serial" then disk[:serial_number] = Regexp.last_match(2)
+          when "Serial number" then disk[:serial_number] = Regexp.last_match(2)
+          when "Serial Number" then disk[:serial_number] = Regexp.last_match(2)
           when "World-wide name" then disk[:wwn] = Regexp.last_match(2)
           when "World-wide name" then disk[:wwn] = Regexp.last_match(2)
+          when "World-wide Name" then disk[:wwn] = Regexp.last_match(2)
           when "Total Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2))
           when "Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2))
           end
           when "Total Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2))
           when "Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2))
           end
-        elsif array && line =~ / Present \(Controller:\d+,((?:Connector|Enclosure):\d+,(?:Device|Slot):\d+)\) /
-          array[:disks] << Regexp.last_match(1).tr(":", " ").gsub(",", ", ")
+        elsif array && line =~ / Present \(.*((?:Connector|Enclosure):\d+,\s*(?:Device|Slot):\d+)\) /
+          array[:disks] << Regexp.last_match(1).tr(":", " ").gsub(/,\s*/, ", ")
         elsif array && line =~ /^   (\S.*\S)\s*:\s+(\S.*\S)\s*$/
           case Regexp.last_match(1)
           when "RAID level" then array[:raid_level] = Regexp.last_match(2)
         elsif array && line =~ /^   (\S.*\S)\s*:\s+(\S.*\S)\s*$/
           case Regexp.last_match(1)
           when "RAID level" then array[:raid_level] = Regexp.last_match(2)
+          when "RAID Level" then array[:raid_level] = Regexp.last_match(2)
           when "Size" then array[:size] = memory_to_disk_size(Regexp.last_match(2))
           end
         elsif line =~ /^   (\S.*\S)\s*:\s+(\S.*\S)\s*$/
           when "Size" then array[:size] = memory_to_disk_size(Regexp.last_match(2))
           end
         elsif line =~ /^   (\S.*\S)\s*:\s+(\S.*\S)\s*$/
@@ -659,6 +662,8 @@ Ohai.plugin(:Hardware) do
           when "BIOS" then controller[:bios_version] = Regexp.last_match(2)
           when "Firmware" then controller[:firmware_version] = Regexp.last_match(2)
           end
           when "BIOS" then controller[:bios_version] = Regexp.last_match(2)
           when "Firmware" then controller[:firmware_version] = Regexp.last_match(2)
           end
+        elsif line =~ /^         Serial Number\s*:\s+(\S.*\S)\s*$/
+          controller[:serial_number] = Regexp.last_match(1)
         end
       end
 
         end
       end
 
@@ -860,6 +865,7 @@ Ohai.plugin(:Hardware) do
   end
 
   def psu_devices
   end
 
   def psu_devices
+    devices = {}
     device = nil
 
     IO.popen(["dmidecode", "-t", "39"]).each_with_object([]) do |line, devices|
     device = nil
 
     IO.popen(["dmidecode", "-t", "39"]).each_with_object([]) do |line, devices|
@@ -872,6 +878,8 @@ Ohai.plugin(:Hardware) do
         device = nil
       end
     end
         device = nil
       end
     end
+
+    devices
   end
 
   def mc_device
   end
 
   def mc_device