diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2022-08-30 16:58:24 +0200 |
---|---|---|
committer | Jose M. Guisado <jguisado@soleta.eu> | 2022-09-14 17:12:14 +0200 |
commit | 52838e2ce604ea4edd56f0556a6b50d52b307a8d (patch) | |
tree | e1690dd2d8231ea006694bb7593d6469f7978a54 /src | |
parent | 87e738b33ffea0bb730cbe041189276a9627cdf7 (diff) |
utils: add get_partition_device
Maps a disk and partition number to the corresponding device path
('/dev/sdXY', '/dev/nvmeXnYpZ', ...)
Diffstat (limited to 'src')
-rw-r--r-- | src/utils/disk.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/utils/disk.py b/src/utils/disk.py index 4f11a82..e26983c 100644 --- a/src/utils/disk.py +++ b/src/utils/disk.py @@ -8,6 +8,9 @@ import os +import fdisk + + def get_disks(): """ Walks /sys/block/ and returns files starting with 'sd', @@ -17,3 +20,17 @@ def get_disks(): if dev.startswith('sd') or dev.startswith('nvme') or dev.startswith('vd')]) + + +def get_partition_device(disknum, partnum): + """ + Returns the device path, given a disk and partition number + """ + disk = get_disks()[disknum-1] + cxt = fdisk.Context(f'/dev/{disk}') + + for pa in cxt.partitions: + if pa.partno == partnum - 1: + return cxt.partition_to_string(pa, fdisk.FDISK_FIELD_DEVICE) + + raise ValueError('No such partition') |