Added partition info on Partition() creation. This will help detect potential mountpoints as well as filesystem types if any
This commit is contained in:
parent
7123da1c56
commit
826119bb99
|
|
@ -116,11 +116,21 @@ class Partition():
|
||||||
part_id = os.path.basename(path)
|
part_id = os.path.basename(path)
|
||||||
self.path = path
|
self.path = path
|
||||||
self.part_id = part_id
|
self.part_id = part_id
|
||||||
self.mountpoint = mountpoint
|
self.mountpoint = None
|
||||||
self.filesystem = filesystem # TODO: Autodetect if we're reusing a partition
|
self.filesystem = filesystem # TODO: Autodetect if we're reusing a partition
|
||||||
self.size = size # TODO: Refresh?
|
self.size = size # TODO: Refresh?
|
||||||
self.encrypted = encrypted
|
self.encrypted = encrypted
|
||||||
|
|
||||||
|
if mountpoint:
|
||||||
|
self.mount(mountpoint)
|
||||||
|
|
||||||
|
if not self.mountpoint:
|
||||||
|
# As a last step, check if we've mounted outside of the script
|
||||||
|
partition_info = get_partition_info(self.path)
|
||||||
|
self.mountpoint = partition_info['target']
|
||||||
|
if partition_info['fstype'] != self.filesystem and filesystem:
|
||||||
|
raise DiskError(f"{self} was given a filesystem format, but a existing format was detected: {partition_info['fstype']}")
|
||||||
|
|
||||||
def __repr__(self, *args, **kwargs):
|
def __repr__(self, *args, **kwargs):
|
||||||
if self.encrypted:
|
if self.encrypted:
|
||||||
return f'Partition(path={self.path}, real_device={self.real_device}, fs={self.filesystem}, mounted={self.mountpoint})'
|
return f'Partition(path={self.path}, real_device={self.real_device}, fs={self.filesystem}, mounted={self.mountpoint})'
|
||||||
|
|
@ -311,3 +321,13 @@ def harddrive(size=None, model=None, fuzzy=False):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
return collection[drive]
|
return collection[drive]
|
||||||
|
|
||||||
|
def get_partition_info(path):
|
||||||
|
output = b''.join(sys_command(f'/usr/bin/findmnt --json {path}'))
|
||||||
|
output = output.decode('UTF-8')
|
||||||
|
output = json.loads(output)
|
||||||
|
if 'filesystems' in output:
|
||||||
|
if len(output['filesystems']) > 1:
|
||||||
|
raise DiskError(f"Path '{path}' contains multiple mountpoints: {output['filesystems']}")
|
||||||
|
|
||||||
|
return output['filesystems'][0]
|
||||||
Loading…
Reference in New Issue