From c40fc078537a8c104ae19db5348302fe405c5f4b Mon Sep 17 00:00:00 2001 From: Dominic Cleal Date: Mon, 29 Nov 2010 15:07:19 +0000 Subject: (#1423) Memory facts for Solaris Add total memory from prtconf output, free from vmstat plus swap free and total from swap -l listing. --- lib/facter/memory.rb | 51 ++++++++++++++++++++++++++++++++++++++++------- lib/facter/util/memory.rb | 12 +++++++++++ 2 files changed, 56 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/facter/memory.rb b/lib/facter/memory.rb index 06640e6..f744c3f 100644 --- a/lib/facter/memory.rb +++ b/lib/facter/memory.rb @@ -69,13 +69,7 @@ if Facter.value(:kernel) == "OpenBSD" end end - Facter.add("MemoryFree") do - confine :kernel => :openbsd - memfree = Facter::Util::Resolution.exec("vmstat | tail -n 1 | awk '{ print $5 }'") - setcode do - Facter::Memory.scale_number(memfree.to_f,"kB") - end - end + Facter::Memory.vmstat_find_free_memory() Facter.add("MemoryTotal") do confine :kernel => :openbsd @@ -85,3 +79,46 @@ if Facter.value(:kernel) == "OpenBSD" end end end + +if Facter.value(:kernel) == "SunOS" + swap = Facter::Util::Resolution.exec('/usr/sbin/swap -l') + swapfree, swaptotal = 0, 0 + swap.each do |dev| + if dev =~ /^\/\S+\s.*\s+(\d+)\s+(\d+)$/ + swaptotal += $1.to_i / 2 + swapfree += $2.to_i / 2 + end + end + + Facter.add("SwapSize") do + confine :kernel => :sunos + setcode do + Facter::Memory.scale_number(swaptotal.to_f,"kB") + end + end + + Facter.add("SwapFree") do + confine :kernel => :sunos + setcode do + Facter::Memory.scale_number(swapfree.to_f,"kB") + end + end + + # Total memory size available from prtconf + pconf = Facter::Util::Resolution.exec('/usr/sbin/prtconf') + phymem = "" + pconf.each do |line| + if line =~ /^Memory size:\s+(\d+) Megabytes/ + phymem = $1 + end + end + + Facter.add("MemorySize") do + confine :kernel => :sunos + setcode do + Facter::Memory.scale_number(phymem.to_f,"MB") + end + end + + Facter::Memory.vmstat_find_free_memory() +end diff --git a/lib/facter/util/memory.rb b/lib/facter/util/memory.rb index 2004491..43abec6 100644 --- a/lib/facter/util/memory.rb +++ b/lib/facter/util/memory.rb @@ -50,5 +50,17 @@ module Facter::Memory return "%.2f %s" % [size, s] end + + def self.vmstat_find_free_memory() + row = Facter::Util::Resolution.exec('vmstat').split("\n")[-1] + if row =~ /^\s*\d+\s*\d+\s*\d+\s*\d+\s*(\d+)/ + Facter.add("MemoryFree") do + memfree = $1 + setcode do + Facter::Memory.scale_number(memfree.to_f, "kB") + end + end + end + end end -- cgit From f0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac Mon Sep 17 00:00:00 2001 From: William Van Hevelingen Date: Fri, 20 Aug 2010 01:14:18 -0700 Subject: (#4575) win32 support for manufacturer, productname, & serialnumber Signed-off-by: William Van Hevelingen --- lib/facter/manufacturer.rb | 7 +++++++ lib/facter/util/manufacturer.rb | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'lib') 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 -- cgit From af9134c2d8911ee8bdd68ba95c64d51429ed6e16 Mon Sep 17 00:00:00 2001 From: Jacob Helwig Date: Mon, 29 Nov 2010 01:08:57 -0800 Subject: (#5086) Try using kstat before falling back to 'who -b' to determine uptime. 'who -b' doesn't report the year of the last system boot on (at least) Solaris 10, and OpenSolaris 2009.06. Try using 'kstat -p unix:::boot_time', which reports as seconds since the epoch on these systems before falling back to 'who -b'. Reviewed-by: Paul Berry --- lib/facter/util/uptime.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/facter/util/uptime.rb b/lib/facter/util/uptime.rb index 9a59d30..4e6a7b6 100644 --- a/lib/facter/util/uptime.rb +++ b/lib/facter/util/uptime.rb @@ -4,7 +4,7 @@ require 'time' # module Facter::Util::Uptime def self.get_uptime_seconds_unix - uptime_proc_uptime or uptime_sysctl or uptime_who_dash_b + uptime_proc_uptime or uptime_sysctl or uptime_kstat or uptime_who_dash_b end def self.get_uptime_seconds_win @@ -30,6 +30,12 @@ module Facter::Util::Uptime end end + def self.uptime_kstat + if output = Facter::Util::Resolution.exec("#{uptime_kstat_cmd} 2>/dev/null") + compute_uptime(Time.at(output.chomp.split(/\s/).last.to_i)) + end + end + def self.uptime_who_dash_b if output = Facter::Util::Resolution.exec("#{uptime_who_cmd} 2>/dev/null") compute_uptime(Time.parse(output)) @@ -48,6 +54,10 @@ module Facter::Util::Uptime 'sysctl -b kern.boottime' end + def self.uptime_kstat_cmd + 'kstat -p unix:::boot_time' + end + def self.uptime_who_cmd 'who -b' end -- cgit