Hi,

Michael DeHaan told me to post this patch to this list. It implements
the current facts that exist with a "KB" suffix to report the unscaled
version.

My ruby is a bit rusty, so I'm just copying working code..

On another topic: all the openbsd code works fine on freebsd and
*probably* on netbsd too.

Kai

>From 84437f4322d98eaaa47db191e0496a5908976fd4 Mon Sep 17 00:00:00 2001
From: Kai <[email protected]>
Date: Tue, 22 Jun 2010 11:57:26 +0200
Subject: patch on 1.5.7

---
 lib/facter/memory.rb      |   18 ++++++++++++++++++
 lib/facter/util/memory.rb |   13 +++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/lib/facter/memory.rb b/lib/facter/memory.rb
index 6880731..29b2f21 100644
--- a/lib/facter/memory.rb
+++ b/lib/facter/memory.rb
@@ -18,6 +18,12 @@ require 'facter/util/memory'
             Facter::Memory.meminfo_number(name)
         end
     end
+    Facter.add("#{fact}kB") do
+        confine :kernel => :linux
+        setcode do
+           Facter::Memory.meminfo_real(name)
+        end
+    end
 end

 if Facter.value(:kernel) == "AIX"
@@ -36,6 +42,12 @@ if Facter.value(:kernel) == "AIX"
             Facter::Memory.scale_number(swaptotal.to_f,"MB")
         end
     end
+    Facter.add("SwapSizekB") do
+       confine :kernel => :aix
+       setcode do
+           swaptotal.to_f * 1024.0
+       end
+    end

     Facter.add("SwapFree") do
         confine :kernel => :aix
@@ -43,4 +55,10 @@ if Facter.value(:kernel) == "AIX"
             Facter::Memory.scale_number(swapfree.to_f,"MB")
         end
     end
+    Facter.add("SwapFreekB") do
+       confine :kernel => :aix
+       setcode do
+           swapfree.to_f * 1024.0
+       end
+    end
 end
diff --git a/lib/facter/util/memory.rb b/lib/facter/util/memory.rb
index 2004491..fbe7c45 100644
--- a/lib/facter/util/memory.rb
+++ b/lib/facter/util/memory.rb
@@ -17,7 +17,12 @@ module Facter::Memory
     require 'thread'

     def self.meminfo_number(tag)
-        memsize = ""
+        scale_number(meminfo_real(tag), 'kB')
+    end
+
+    def self.meminfo_real(tag)
+        memsize = 0
+        memscale = ""
         Thread::exclusive do
             size, scale = [0, ""]
             File.readlines("/proc/meminfo").each do |l|
@@ -29,9 +34,13 @@ module Facter::Memory
                     size += $1.to_f
                 end
             end
-            memsize = scale_number(size, scale)
+            memsize = size
+            memscale = scale
         end

+        if memscale != 'kB'
+            raise "Unknown scale reported by meminfo: #{memscale}"
+        end
         memsize
     end

--
1.5.6.5

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

Reply via email to