Added partition info on Partition() creation. This will help detect potential mountpoints as well as filesystem types if any

This commit is contained in:
Anton Hvornum 2021-02-07 15:00:34 +01:00
parent 7123da1c56
commit 826119bb99
1 changed files with 21 additions and 1 deletions

View File

@ -116,11 +116,21 @@ class Partition():
part_id = os.path.basename(path)
self.path = path
self.part_id = part_id
self.mountpoint = mountpoint
self.mountpoint = None
self.filesystem = filesystem # TODO: Autodetect if we're reusing a partition
self.size = size # TODO: Refresh?
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):
if self.encrypted:
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
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]