summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@1f5c1d6a-bddf-0310-8f58-fc49e503516a>2006-06-27 05:28:17 +0000
committerluke <luke@1f5c1d6a-bddf-0310-8f58-fc49e503516a>2006-06-27 05:28:17 +0000
commitace180f3ecfac50fe0cef9bd3e11ff7e209f8f9a (patch)
tree9ef9c0628c806b7b6a9101b0a5c9f04014c5f1a0
parentba2e18916d8c1071ee0b983b6e9f1fc4dbfbcbb9 (diff)
downloadfacter-ace180f3ecfac50fe0cef9bd3e11ff7e209f8f9a.tar.gz
facter-ace180f3ecfac50fe0cef9bd3e11ff7e209f8f9a.tar.xz
facter-ace180f3ecfac50fe0cef9bd3e11ff7e209f8f9a.zip
Re-adding these files, since Matt has found a solution to the hanging problem.
git-svn-id: http://reductivelabs.com/svn/facter/trunk@146 1f5c1d6a-bddf-0310-8f58-fc49e503516a
-rw-r--r--lib/facter/memory.rb58
-rw-r--r--lib/facter/processor.rb48
2 files changed, 106 insertions, 0 deletions
diff --git a/lib/facter/memory.rb b/lib/facter/memory.rb
new file mode 100644
index 0000000..405d61e
--- /dev/null
+++ b/lib/facter/memory.rb
@@ -0,0 +1,58 @@
+#
+# memory.rb
+# Additional Facts for memory/swap usage
+#
+# Copyright (C) 2006 Mooter Media Ltd
+# Author: Matthew Palmer <matt@solutionsfirst.com.au>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation (version 2 of the License)
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston MA 02110-1301 USA
+
+module Facter::Memory
+ def self.meminfo_number(tag)
+ memsize = ""
+ File.readlines("/proc/meminfo").each do |l|
+ if l =~ /^#{tag}:\s+(\d+)\s+(\S+)/
+ memsize = scale_number($1.to_f, $2)
+ end
+ end
+
+ memsize
+ end
+
+ def self.scale_number(size, multiplier)
+ suffixes = ['', 'kB', 'MB', 'GB', 'TB']
+
+ s = suffixes.shift
+ while s != multiplier
+ s = suffixes.shift
+ end
+
+ while size > 1024.0
+ size /= 1024.0
+ s = suffixes.shift
+ end
+
+ return "%.2f %s" % [size, s]
+ end
+end
+
+{:MemorySize => "MemTotal",
+ :MemoryFree => "MemFree",
+ :SwapSize => "SwapTotal",
+ :SwapFree => "SwapFree"}.each do |fact, name|
+ Facter.add(fact) do
+ confine :kernel => :linux
+ setcode do
+ Facter::Memory.meminfo_number(name)
+ end
+ end
+end
diff --git a/lib/facter/processor.rb b/lib/facter/processor.rb
new file mode 100644
index 0000000..f353e71
--- /dev/null
+++ b/lib/facter/processor.rb
@@ -0,0 +1,48 @@
+#
+# processor.rb
+# Additional Facts about the machine's CPUs
+#
+# Copyright (C) 2006 Mooter Media Ltd
+# Author: Matthew Palmer <matt@solutionsfirst.com.au>
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation (version 2 of the License)
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston MA 02110-1301 USA
+#
+
+if Facter.kernel == "Linux"
+ processor_num = -1
+ processor_list = []
+ File.readlines("/proc/cpuinfo").each do |l|
+ if l =~ /processor\s+:\s+(\d+)/
+ processor_num = $1.to_i
+ elsif l =~ /model name\s+:\s+(.*)\s*$/
+ processor_list[processor_num] = $1 unless processor_num == -1
+ processor_num = -1
+ end
+ end
+
+ Facter.add("ProcessorCount") do
+ confine :kernel => :linux
+ setcode do
+ processor_list.length.to_s
+ end
+ end
+
+ processor_list.each_with_index do |desc, i|
+ Facter.add("Processor#{i}") do
+ confine :kernel => :linux
+ setcode do
+ desc
+ end
+ end
+ end
+end