]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/hardware/templates/default/ohai.rb.erb
Convert megaraid disk sizes to 1000 based units
[chef.git] / cookbooks / hardware / templates / default / ohai.rb.erb
index 20a2f7786bf1b4dd7669d69deb4ffcbc518d941e..a5c2d75059500733a653bb4b258a09bd29c1c794 100644 (file)
@@ -11,6 +11,14 @@ Ohai.plugin(:Hardware) do
   rescue Errno::ENOENT, Errno::EINVAL
   end
 
+  def parse_disk_size(size)
+    if size =~ /^(\d+(?:\.\d+))?\s*TB/i
+      sprintf "%dTB", $1.to_f * 2**40 / 1000000000000
+    elsif size =~ /^(\d+(?:\.\d+))?\s*GB/i
+      sprintf "%dGB", $1.to_f * 2**30 / 1000000000
+    end
+  end
+
   def pci_devices
     device = nil
 
@@ -240,7 +248,7 @@ Ohai.plugin(:Hardware) do
         when "Device Id" then disk[:smart_devlce] = "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] = Regexp.last_match(2).sub(/\s*\[.*\]$/, "")
+        when "Raw Size" then disk[:size] = parse_disk_size(Regexp.last_match(2).sub(/\s*\[.*\]$/, ""))
         when "Inquiry Data" then disk[:vendor], disk[:model], disk[:serial] = Regexp.last_match(2).split
         end
       elsif array && line =~ /^(\S.*\S)\s*:\s+(\S.*)$/
@@ -270,7 +278,7 @@ Ohai.plugin(:Hardware) do
         when "Device Id" then disk[:smart_devlce] = "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] = Regexp.last_match(2).sub(/\s*\[.*\]$/, "")
+        when "Raw Size" then disk[:size] = parse_disk_size(Regexp.last_match(2).sub(/\s*\[.*\]$/, ""))
         when "Inquiry Data" then disk[:vendor], disk[:model], disk[:serial] = Regexp.last_match(2).split
         end
       end