Use prtdiag output on Solaris/SPARC to determine manufacturer and productname as
smbios is unavailable.

Signed-off-by: Dominic Cleal <dcl...@redhat.com>
---
Local-branch: ticket/master/5325
 lib/facter/manufacturer.rb      |    2 ++
 lib/facter/util/manufacturer.rb |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/lib/facter/manufacturer.rb b/lib/facter/manufacturer.rb
index 9d66465..cbbb88b 100644
--- a/lib/facter/manufacturer.rb
+++ b/lib/facter/manufacturer.rb
@@ -13,6 +13,8 @@ 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()
 else
     query = {
         '[Ss]ystem [Ii]nformation' => [
diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb
index 112380b..5ac0585 100644
--- a/lib/facter/util/manufacturer.rb
+++ b/lib/facter/util/manufacturer.rb
@@ -60,4 +60,24 @@ module Facter::Manufacturer
             end
         end
     end
+
+    def self.prtdiag_sparc_find_system_info()
+        # Parses prtdiag for a SPARC architecture string, won't work with 
Solaris x86
+        output = Facter::Util::Resolution.exec('/usr/sbin/prtdiag')
+
+        # System Configuration:  Sun Microsystems  sun4u Sun SPARC Enterprise 
M3000 Server
+        sysconfig = output.split("\n")[0]
+        if sysconfig =~ /^System Configuration:\s+(.+?)\s+(sun\d+\S+)\s+(.+)/ 
then
+            Facter.add('manufacturer') do
+                setcode do
+                    $1
+                end
+            end
+            Facter.add('productname') do
+                setcode do
+                    $3
+                end
+            end
+        end
+    end
 end
-- 
1.7.3.2

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to