diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index 48c8b6b78cf..0ce3ced5072 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -603,6 +603,8 @@ class LinuxHardware(Hardware): platform = 'Linux' MEMORY_FACTS = ['MemTotal', 'SwapTotal', 'MemFree', 'SwapFree'] + EXTRA_MEMORY_FACTS = ['Buffers', 'Cached', 'SwapCached'] + def __init__(self): Hardware.__init__(self) @@ -619,6 +621,7 @@ class LinuxHardware(Hardware): return self.facts def get_memory_facts(self): + memstats = {} if not os.access("/proc/meminfo", os.R_OK): return for line in open("/proc/meminfo").readlines(): @@ -627,6 +630,26 @@ class LinuxHardware(Hardware): if key in LinuxHardware.MEMORY_FACTS: val = data[1].strip().split(' ')[0] self.facts["%s_mb" % key.lower()] = long(val) / 1024 + if key in LinuxHardware.MEMORY_FACTS or key in LinuxHardware.EXTRA_MEMORY_FACTS: + val = data[1].strip().split(' ')[0] + memstats[key.lower()] = long(val) / 1024 + self.facts['memory_mb'] = { + 'real' : { + 'total': memstats['memtotal'], + 'used': (memstats['memtotal'] - memstats['memfree']), + 'free': memstats['memfree'] + }, + 'nocache' : { + 'free': memstats['cached'] + memstats['memfree'] + memstats['buffers'], + 'used': memstats['memtotal'] - (memstats['cached'] + memstats['memfree'] + memstats['buffers']) + }, + 'swap' : { + 'total': memstats['swaptotal'], + 'free': memstats['swapfree'], + 'used': memstats['swaptotal'] - memstats['swapfree'], + 'cached': memstats['swapcached'] + } + } def get_cpu_facts(self): i = 0