From ab678738d6cb7055edf9068508d58c4e23073a1f Mon Sep 17 00:00:00 2001 From: Erik Berg Date: Mon, 8 Aug 2016 18:23:19 +0200 Subject: [PATCH] Add partition uuid to facts for Linux. (#16986) Works by looking for partition name in /dev/disk/by-uuid --- lib/ansible/module_utils/facts.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index 9b98b26dc8..c43723d079 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -1326,6 +1326,7 @@ class LinuxHardware(Hardware): if not part['sectorsize']: part['sectorsize'] = get_file_content(part_sysdir + "/queue/hw_sector_size",512) part['size'] = self.module.pretty_bytes((float(part['sectors']) * float(part['sectorsize']))) + part['uuid'] = get_partition_uuid(partname) self.get_holders(part, part_sysdir) d['partitions'][partname] = part @@ -3224,6 +3225,19 @@ def get_uname_version(module): return out return None +def get_partition_uuid(partname): + try: + uuids = os.listdir("/dev/disk/by-uuid") + except OSError: + return + + for uuid in uuids: + dev = os.path.realpath("/dev/disk/by-uuid/" + uuid) + if dev == ("/dev/" + partname): + return uuid + + return None + def get_file_lines(path): '''get list of lines from file''' data = get_file_content(path)