summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Robinson <matt@puppetlabs.com>2010-12-21 16:32:20 -0800
committerMatt Robinson <matt@puppetlabs.com>2010-12-21 16:32:20 -0800
commit4ce611ffc27b7697882e85ad9a686b33c1cf6852 (patch)
tree29fad0c841ce8b0e9b34a4853b77b88dc2559090
parentfb2f1dc3413f6b9f4b6547abd957c976049e56c5 (diff)
parentf0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac (diff)
downloadfacter-4ce611ffc27b7697882e85ad9a686b33c1cf6852.tar.gz
facter-4ce611ffc27b7697882e85ad9a686b33c1cf6852.tar.xz
facter-4ce611ffc27b7697882e85ad9a686b33c1cf6852.zip
Merge branch 'feature/next/4575' into next
* feature/next/4575: (#4575) win32 support for manufacturer, productname, & serialnumber
-rw-r--r--lib/facter/manufacturer.rb7
-rw-r--r--lib/facter/util/manufacturer.rb17
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/facter/manufacturer.rb b/lib/facter/manufacturer.rb
index cbbb88b..4f2df98 100644
--- a/lib/facter/manufacturer.rb
+++ b/lib/facter/manufacturer.rb
@@ -15,6 +15,13 @@ if Facter.value(:kernel) == "OpenBSD"
Facter::Manufacturer.sysctl_find_system_info(mfg_keys)
elsif Facter.value(:kernel) == "SunOS" and Facter.value(:hardwareisa) == "sparc"
Facter::Manufacturer.prtdiag_sparc_find_system_info()
+elsif Facter.value(:kernel) == "windows"
+ win32_keys = {
+ 'manufacturer' => ['Manufacturer', 'Bios'],
+ 'serialNumber' => ['Serialnumber', 'Bios'],
+ 'productname' => ['Name', 'ComputerSystemProduct']
+ }
+ Facter::Manufacturer.win32_find_system_info(win32_keys)
else
query = {
'[Ss]ystem [Ii]nformation' => [
diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb
index 5ac0585..22359ea 100644
--- a/lib/facter/util/manufacturer.rb
+++ b/lib/facter/util/manufacturer.rb
@@ -80,4 +80,21 @@ module Facter::Manufacturer
end
end
end
+
+ def self.win32_find_system_info(name)
+ require 'win32ole'
+ value = ""
+ wmi = WIN32OLE.connect("winmgmts://")
+ name.each do |facterkey, win32key|
+ query = wmi.ExecQuery("select * from Win32_#{win32key.last}")
+ Facter.add(facterkey) do
+ confine :kernel => :windows
+ setcode do
+ query.each { |x| value = x.__send__( (win32key.first).to_sym) }
+ value
+ end
+ end
+ end
+ end
+
end