Extend the custom fact "svn.mozilla.org/sysadmins/puppet/weave/modules/mysql/lib/facter/physical_memory_mb.rb" to accommodate VMs which don't reveal physical memory through dmidecode. Here's an implementation in python which gets the data from dmesg http://www.appelboor.com/dump/check-my-memory.py
it's been theorized that parsing the output of `free` would be sufficient.
or for that matter, /proc/meminfo
also, come to think of it, parsing dmesg isn't always safe. The ring buffer that dmesg works from can get overrun by audit messages and dmesg will no longer have the memory stat.