]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/hardware/templates/default/ohai.rb.erb
Extract correct device number for Adaptec disks
[chef.git] / cookbooks / hardware / templates / default / ohai.rb.erb
index 6d5e49fb1314606bbdae987c09b99dec0a3601a3..5916ecc06e4d9dcb60e54e18e65f34c31a150b2a 100644 (file)
@@ -434,6 +434,15 @@ Ohai.plugin(:Hardware) do
         devices[:disks] << disk
         controller[:disks] << disk[:id]
         array[:disks] << disk[:id]
+      elsif disk && line =~ /^Firmware state:\s+(.*\S)\s*$/
+        Regexp.last_match(1).split(/,\s*/).each do |state|
+          case state
+          when "Online" then disk[:status] = "online"
+          when "Hotspare" then disk[:status] = "hotspare"
+          when "Spun Up" then disk[:spun_down] = false
+          when "Spun down" then disk[:spun_down] = true
+          end
+        end
       elsif disk && line =~ /^(\S.*\S)\s*:\s+(\S.*)$/
         case Regexp.last_match(1)
         when "Device Id" then disk[:smart_device] = "megaraid,#{Regexp.last_match(2)}"
@@ -464,10 +473,18 @@ Ohai.plugin(:Hardware) do
 
           devices[:disks] << disk
         end
+      elsif disk && line =~ /^Firmware state:\s+(.*\S)\s*$/
+        Regexp.last_match(1).split(/,\s*/).each do |state|
+          case state
+          when "Online" then disk[:status] = "online"
+          when "Hotspare" then disk[:status] = "hotspare"
+          when "Spun Up" then disk[:state] = "spun_up"
+          when "Spun down" then disk[:state] = "spun_down"
+          end
+        end
       elsif disk && line =~ /^(\S.*\S)\s*:\s+(\S.*)$/
         case Regexp.last_match(1)
         when "Device Id" then disk[:smart_device] = "megaraid,#{Regexp.last_match(2)}"
-        when "WWN" then disk[:wwn] = Regexp.last_match(2)
         when "PD Type" then disk[:interface] = Regexp.last_match(2)
         when "Raw Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2).sub(/\s*\[.*\]$/, ""))
         when "Inquiry Data" then disk[:vendor], disk[:model], disk[:serial_number] = Regexp.last_match(2).split
@@ -615,7 +632,7 @@ 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)
-          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)