facts: Detecting NVME partitions under Linux (#39730) (#39804)

* facts: Detecting NVME partitions under Linux (#39730)

In the current state of the code, the nvme partitions are returned as empty as in :
        "ansible_devices": {
            "nvme0n1": {
                "model": "SAMSUNG MZVLW256HEHP-000L7",
                "partitions": {},

The parsing of the /sys/block/<diskname> try to find a disk named like :
    <diskname><x> as in sda1 for sda

But in the nvme context, the partition of nvme0n1 is named nvme0n1p1.
This add a possible 'p' between the diskname and the partname.

This patch simply add the option of having a 'p' between the diskname
and the partname.

The patch works on my host :
                "model": "INTEL SSDPEDMD400G4",
                "partitions": {
                    "nvme0n1p1": {
                         ...
                        "size": "93.13 GB",
                    }

Fixes #38742
Signed-off-by: Erwan Velu <erwan@redhat.com>
(cherry picked from commit 2214c747a2)

* Use a more exact regex (#39811)

The pattern we're matching can have zero or one p.  Be more careful to
match exactly that.

Slight revision of #39730

(cherry picked from commit 75283983f6)
pull/39824/head
John R Barker 7 years ago committed by Toshio Kuratomi
parent 17f7d35b32
commit bf1436ca52

@ -585,7 +585,7 @@ class LinuxHardware(Hardware):
d['partitions'] = {} d['partitions'] = {}
for folder in os.listdir(sysdir): for folder in os.listdir(sysdir):
m = re.search("(" + diskname + r"\d+)", folder) m = re.search("(" + diskname + r"[p]?\d+)", folder)
if m: if m:
part = {} part = {}
partname = m.group(1) partname = m.group(1)

Loading…
Cancel
Save