another option that I use is to extend the string class in ruby, that would
allow you to do something like:
Facter.memorysize.to_gb
in order to do that add somewhere (e.g. before your custom fact)
class String
def to_gb
begin
value,unit=self.match(/(\d+|.+) ([KMG]B)$/i)[1..2]
case unit.to_sym
when nil, :B, :byte then (value.to_f / 1000_000_000)
when :GB, :G, :gigabyte then value.to_f
when :MB, :M, :megabyte then (value.to_f / 1000)
when :KB, :K, :kilobyte, :kB then (value.to_f / 1000_000)
else raise "Unknown unit: #{unit.inspect}!"
end
rescue
raise "Unknown string"
end
end
end
Ohad
On Tue, Mar 9, 2010 at 4:26 AM, Doug Warner <[email protected]> wrote:
> I wrote a "memorysize_mb" fact to solve this problem; this ensures the
> number
> returned is only an integer value.
>
> $ cat memorysize_mb.rb
> require 'facter'
>
> Facter.add("memorysize_mb") do
> confine :kernel => :Linux
>
> ram = 0
>
> # Steal linux's meminfo
> File.open( "/proc/meminfo" , 'r' ) do |f|
> f.grep( /^MemTotal:/ ) { |mem|
> ram = mem.split( / +/ )[1].to_i / 1024
> }
> end
>
> setcode do
> ram
> end
> end
>
>
> On 03/08/2010 03:12 PM, John wrote:
> > Ok some more investigation turned up some more questions.
> > So it seems memorysize is returned with a unit of measurement suffix
> > added to it....
> >
> > My question to the puppet mailing list would be.
> >
> > How would you use memory size fact in puppet while keeping in mind
> > that we could be talking MB or GB?
> >
> > I need to make decisions based on the amount of memory available.
> > The whole scaling unit of measurement is kind of annoying though. /
> > proc/meminfo normally reports as kb doesnt it?
> >
> > On Mar 8, 11:06 am, John Cesario <[email protected]> wrote:
> >> On version 0.25.4 for both server and client.
> >>
> >> Trying to do some logic around the $memorysize fact.
> >>
> >> if ($memorysize > 15360) and ($memorysize < 112640) {
> >> $tmpfs_size = "6G"
> >> } else {
> >> $tmpfs_size = "8G"
> >> }
> >>
> >> Returns
> >>
> >> err: Could not retrieve catalog from remote server: Error 400 on SERVER:
> >> comparison of String with 15360 failed at
> >> /etc/puppet/modules/mysql/manifests/virtual_tmpdir.pp:13 on node foo.bar
> >
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" 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-users?hl=en.