Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/disk/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/lib/disk/helpers.py')
-rw-r--r--archinstall/lib/disk/helpers.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py
index 46d86bd5..9442f1b6 100644
--- a/archinstall/lib/disk/helpers.py
+++ b/archinstall/lib/disk/helpers.py
@@ -1,13 +1,15 @@
-import re
-import os
import json
import logging
+import os
import pathlib
+import re
+import time
from typing import Union
from .blockdevice import BlockDevice
from ..exceptions import SysCallError, DiskError
from ..general import SysCommand
from ..output import log
+from ..storage import storage
ROOT_DIR_PATTERN = re.compile('^.*?/devices')
GIGA = 2 ** 30
@@ -209,3 +211,19 @@ def find_partition_by_mountpoint(block_devices, relative_mountpoint :str):
for partition in block_devices[device]['partitions']:
if partition.get('mountpoint', None) == relative_mountpoint:
return partition
+
+def partprobe():
+ SysCommand(f'bash -c "partprobe"')
+
+def convert_device_to_uuid(path :str) -> str:
+ for i in range(storage['DISK_RETRY_ATTEMPTS']):
+ partprobe()
+ output = json.loads(SysCommand(f"lsblk --json -o+UUID {path}").decode('UTF-8'))
+
+ for device in output['blockdevices']:
+ if (dev_uuid := device.get('uuid', None)):
+ return dev_uuid
+
+ time.sleep(storage['DISK_TIMEOUTS'])
+
+ raise DiskError(f"Could not retrieve the UUID of {path} within a timely manner.") \ No newline at end of file