Add get_loop_devices() (#2698)
This commit is contained in:
parent
8e9b1bc727
commit
8db3c7d65d
|
|
@ -10,7 +10,7 @@ from typing import List, Dict, Any, Optional, TYPE_CHECKING, Literal, Iterable
|
||||||
|
|
||||||
from parted import (
|
from parted import (
|
||||||
Disk, Geometry, FileSystem,
|
Disk, Geometry, FileSystem,
|
||||||
PartitionException, DiskException,
|
PartitionException, DiskException, IOException,
|
||||||
getDevice, getAllDevices, newDisk, freshDisk, Partition, Device
|
getDevice, getAllDevices, newDisk, freshDisk, Partition, Device
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -50,14 +50,7 @@ class DeviceHandler(object):
|
||||||
self.udev_sync()
|
self.udev_sync()
|
||||||
all_lsblk_info = get_all_lsblk_info()
|
all_lsblk_info = get_all_lsblk_info()
|
||||||
devices = getAllDevices()
|
devices = getAllDevices()
|
||||||
|
devices.extend(self.get_loop_devices())
|
||||||
try:
|
|
||||||
loop_devices = SysCommand(['losetup', '-a'])
|
|
||||||
for ld_info in str(loop_devices).splitlines():
|
|
||||||
loop_device = getDevice(ld_info.split(':', maxsplit=1)[0])
|
|
||||||
devices.append(loop_device)
|
|
||||||
except Exception as err:
|
|
||||||
debug(f'Failed to get loop devices: {err}')
|
|
||||||
|
|
||||||
for device in devices:
|
for device in devices:
|
||||||
dev_lsblk_info = find_lsblk_info(device.path, all_lsblk_info)
|
dev_lsblk_info = find_lsblk_info(device.path, all_lsblk_info)
|
||||||
|
|
@ -111,6 +104,30 @@ class DeviceHandler(object):
|
||||||
|
|
||||||
self._devices = block_devices
|
self._devices = block_devices
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_loop_devices() -> list[Device]:
|
||||||
|
devices = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
loop_devices = SysCommand(['losetup', '-a'])
|
||||||
|
except SysCallError as err:
|
||||||
|
debug(f'Failed to get loop devices: {err}')
|
||||||
|
else:
|
||||||
|
for ld_info in str(loop_devices).splitlines():
|
||||||
|
try:
|
||||||
|
loop_device_path, _ = ld_info.split(':', maxsplit=1)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
loop_device = getDevice(loop_device_path)
|
||||||
|
except IOException as err:
|
||||||
|
debug(f'Failed to get loop device: {err}')
|
||||||
|
else:
|
||||||
|
devices.append(loop_device)
|
||||||
|
|
||||||
|
return devices
|
||||||
|
|
||||||
def _determine_fs_type(
|
def _determine_fs_type(
|
||||||
self,
|
self,
|
||||||
partition: Partition,
|
partition: Partition,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue