From 935da01068e1e48e0a5796b4b561f8422876ad3b Mon Sep 17 00:00:00 2001 From: Kirk Strauser Date: Tue, 16 Jun 2015 14:35:36 -0700 Subject: [PATCH] Fixes for FreeBSD get_memory_facts - swapinfo on FreeBSD 6 (maybe 7 too?) doesn't support the "-m" flag for fetching amounts in megabytes. This patch fetches amounts in kilobytes and divides by 1024 (and also returns the result as an int instead of a string). - When no swap is configured, swapinfo prints a header line and nothing else: $ swapinfo Device 1K-blocks Used Avail Capacity The old version unexpectedly parsed that header line and emitted nonsense values like: "ansible_swapfree_mb": "Avail" "ansible_swaptotal_mb": "1K-blocks" This version emits those items altogether. --- lib/ansible/module_utils/facts.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index 06da6d53e3..c1b05ce8d1 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -1264,13 +1264,14 @@ class FreeBSDHardware(Hardware): # Device 1M-blocks Used Avail Capacity # /dev/ada0p3 314368 0 314368 0% # - rc, out, err = module.run_command("/usr/sbin/swapinfo -m") + rc, out, err = module.run_command("/usr/sbin/swapinfo -k") lines = out.split('\n') if len(lines[-1]) == 0: lines.pop() data = lines[-1].split() - self.facts['swaptotal_mb'] = data[1] - self.facts['swapfree_mb'] = data[3] + if data[0] != 'Device': + self.facts['swaptotal_mb'] = int(data[1]) / 1024 + self.facts['swapfree_mb'] = int(data[3]) / 1024 @timeout(10) def get_mount_facts(self):