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 <d...@warner.fm> 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 <john.cesa...@gmail.com> 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 puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.