summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominic Cleal <dcleal@redhat.com>2010-11-29 15:07:19 +0000
committerMatt Robinson <matt@puppetlabs.com>2010-12-06 11:39:12 -0800
commitc40fc078537a8c104ae19db5348302fe405c5f4b (patch)
treee111ca7db719b0578ec8808b496d412b6b928cf9
parent3ebb5a550a6ce474dbc8edffbf15f90d60d3b711 (diff)
downloadfacter-c40fc078537a8c104ae19db5348302fe405c5f4b.tar.gz
facter-c40fc078537a8c104ae19db5348302fe405c5f4b.tar.xz
facter-c40fc078537a8c104ae19db5348302fe405c5f4b.zip
(#1423) Memory facts for Solaris
Add total memory from prtconf output, free from vmstat plus swap free and total from swap -l listing.
-rw-r--r--lib/facter/memory.rb51
-rw-r--r--lib/facter/util/memory.rb12
2 files changed, 56 insertions, 7 deletions
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