]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/hardware/templates/default/ohai.rb.erb
Handle unknown BMC manufacturers better
[chef.git] / cookbooks / hardware / templates / default / ohai.rb.erb
index e8e01845ecb5c6b2ef21b984063b17e21df16f9a..09a9bced0db3291733ee8ea10cdb66935e30f207 100644 (file)
@@ -792,6 +792,28 @@ Ohai.plugin(:Hardware) do
     end
   end
 
+  def mc_device
+    device = {}
+
+    IO.popen(["ipmitool", "mc", "info"]).each_with_object([]) do |line, devices|
+      if line =~ /(Manufacturer [A-Z ]+[A-Z])\s*:\s+(.*\S)\s+\(.*\)\s*$/i
+        device[Regexp.last_match(1).tr(" ", "_").downcase.to_sym] = Regexp.last_match(2)
+      elsif line =~ /(Product [A-Z ]+[A-Z])\s*:\s+(.*\S)\s+\(.*\)\s*$/i
+        device[Regexp.last_match(1).tr(" ", "_").downcase.to_sym] = Regexp.last_match(2)
+      elsif line =~ /([A-Z ]+[A-Z])\s*:\s+(.*\S)\s*$/i
+        device[Regexp.last_match(1).tr(" ", "_").downcase.to_sym] = Regexp.last_match(2)
+      end
+    end
+
+    IO.popen(["ipmitool", "mc", "guid"]).each_with_object([]) do |line, devices|
+      if line =~ /^System GUID\s*:\s+(\S+)\s*$/
+        device[:system_guid] = Regexp.last_match(1)
+      end
+    end
+
+    device
+  end
+
   collect_data(:default) do
     hardware Mash.new
 
@@ -800,5 +822,6 @@ Ohai.plugin(:Hardware) do
     hardware[:memory] = memory_devices
     hardware[:disk] = disk_devices
     hardware[:psu] = psu_devices
+    hardware[:mc] = mc_device
   end
 end