summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/facter/manufacturer.rb7
-rw-r--r--lib/facter/memory.rb51
-rw-r--r--lib/facter/util/manufacturer.rb17
-rw-r--r--lib/facter/util/memory.rb12
-rw-r--r--lib/facter/util/uptime.rb12
5 files changed, 91 insertions, 8 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/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/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
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
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