From 0c3a273805a53a42ccc79ffd26a8b41ac13a860d Mon Sep 17 00:00:00 2001 From: Patrick McConnell Date: Thu, 29 Jan 2015 15:00:01 +0100 Subject: [PATCH] Fix for memory fact gathering I have a host which started to fail while gathering facts after the addition of expanded memory facts in PR #9839: Traceback (most recent call last): File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 4278, in main() File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 137, in main data = run_setup(module) File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 81, in run_setup facts = ansible_facts(module) File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 4217, in ansible_facts facts.update(Hardware().populate()) File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 2339, in populate self.get_memory_facts() File "/home/ansible/.ansible/tmp/ansible-tmp-1422536976.05-133253824703289/setup", line 2375, in get_memory_facts 'cached': memstats['swapcached'] KeyError: 'swapcached' My problem host doesn't have SwapCached in /proc/meminfo. It may be better to set defaults for these keys, since the values provided by /proc/meminfo can change from version to version. --- lib/ansible/module_utils/facts.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index 0ce3ced5072..423a603be8a 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -635,19 +635,19 @@ class LinuxHardware(Hardware): memstats[key.lower()] = long(val) / 1024 self.facts['memory_mb'] = { 'real' : { - 'total': memstats['memtotal'], - 'used': (memstats['memtotal'] - memstats['memfree']), - 'free': memstats['memfree'] + 'total': memstats.get('memtotal', 0), + 'used': (memstats.get('memtotal', 0) - memstats.get('memfree', 0)), + 'free': memstats.get('memfree', 0) }, 'nocache' : { - 'free': memstats['cached'] + memstats['memfree'] + memstats['buffers'], - 'used': memstats['memtotal'] - (memstats['cached'] + memstats['memfree'] + memstats['buffers']) + 'free': memstats.get('cached', 0) + memstats.get('memfree', 0) + memstats.get('buffers', 0), + 'used': memstats.get('memtotal', 0) - (memstats.get('cached', 0) + memstats.get('memfree', 0) + memstats.get('buffers', 0)) }, 'swap' : { - 'total': memstats['swaptotal'], - 'free': memstats['swapfree'], - 'used': memstats['swaptotal'] - memstats['swapfree'], - 'cached': memstats['swapcached'] + 'total': memstats.get('swaptotal', 0), + 'free': memstats.get('swapfree', 0), + 'used': memstats.get('swaptotal', 0) - memstats.get('swapfree', 0), + 'cached': memstats.get('swapcached', 0) } }