summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/facter/manufacturer.rb11
-rw-r--r--lib/facter/util/manufacturer.rb18
2 files changed, 23 insertions, 6 deletions
diff --git a/lib/facter/manufacturer.rb b/lib/facter/manufacturer.rb
index 1fbc38d..b217fdc 100644
--- a/lib/facter/manufacturer.rb
+++ b/lib/facter/manufacturer.rb
@@ -5,6 +5,15 @@
require 'facter/util/manufacturer'
-query = { 'System Information' => [ 'Manufacturer:', 'Product Name:' , 'Serial Number:'], 'Chassis Information' => 'Type:'}
+query = {
+ '[Ss]ystem [Ii]nformation' => [
+ { 'Manufacturer:' => 'manufacturer' },
+ { 'Product(?: Name)?:' => 'productname' },
+ { 'Serial Number:' => 'serialnumber' }
+ ],
+ '(Chassis Information|system enclosure or chassis)' => [
+ { '(?:Chassis )?Type:' => 'type' }
+ ]
+}
Facter::Manufacturer.dmi_find_system_info(query)
diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb
index 665fa76..657901d 100644
--- a/lib/facter/util/manufacturer.rb
+++ b/lib/facter/util/manufacturer.rb
@@ -3,6 +3,7 @@
module Facter::Manufacturer
def self.dmi_find_system_info(name)
+ splitstr="Handle"
case Facter.value(:kernel)
when 'Linux'
return nil unless FileTest.exists?("/usr/sbin/dmidecode")
@@ -16,16 +17,22 @@ module Facter::Manufacturer
return nil unless FileTest.exists?("/usr/pkg/sbin/dmidecode")
output=%x{/usr/pkg/sbin/dmidecode 2>/dev/null}
+ when 'SunOS'
+ return nil unless FileTest.exists?("/usr/sbin/smbios")
+ splitstr="ID SIZE TYPE"
+ output=%x{/usr/sbin/smbios 2>/dev/null}
+
else
return
end
name.each_pair do |key,v|
- v.each do |value|
- output.split("Handle").each do |line|
- if line =~ /#{key}/ and line =~ /#{value} ([-\w].*)\n*./
+ v.each do |v2|
+ v2.each_pair do |value,facterkey|
+ output.split(splitstr).each do |line|
+ if line =~ /#{key}/ and ( line =~ /#{value} 0x\d+ \(([-\w].*)\)\n*./ or line =~ /#{value} ([-\w].*)\n*./ )
result = $1
- Facter.add(value.chomp(':').gsub(' ','')) do
- confine :kernel => [ :linux, :freebsd, :netbsd, :openbsd ]
+ Facter.add(facterkey) do
+ confine :kernel => [ :linux, :freebsd, :netbsd, :openbsd, :sunos ]
setcode do
result
end
@@ -36,4 +43,5 @@ module Facter::Manufacturer
end
end
end
+end