Cleanup imports and disk.py a bit more
This commit is contained in:
parent
b2d20647fc
commit
658e5c0411
|
|
@ -1,19 +1,19 @@
|
|||
"""Arch Linux installer - guided, templates etc."""
|
||||
from .lib.general import *
|
||||
from .lib.disk import *
|
||||
from .lib.user_interaction import *
|
||||
from .lib.exceptions import *
|
||||
from .lib.general import *
|
||||
from .lib.hardware import *
|
||||
from .lib.installer import __packages__, Installer
|
||||
from .lib.profiles import *
|
||||
from .lib.locale_helpers import *
|
||||
from .lib.luks import *
|
||||
from .lib.mirrors import *
|
||||
from .lib.networking import *
|
||||
from .lib.locale_helpers import *
|
||||
from .lib.services import *
|
||||
from .lib.packages import *
|
||||
from .lib.output import *
|
||||
from .lib.packages import *
|
||||
from .lib.profiles import *
|
||||
from .lib.services import *
|
||||
from .lib.storage import *
|
||||
from .lib.hardware import *
|
||||
from .lib.user_interaction import *
|
||||
|
||||
__version__ = "2.2.0.dev1"
|
||||
|
||||
|
|
|
|||
|
|
@ -11,10 +11,11 @@ ROOT_DIR_PATTERN = re.compile('^.*?/devices')
|
|||
GPT = 0b00000001
|
||||
MBR = 0b00000010
|
||||
|
||||
#import ctypes
|
||||
#import ctypes.util
|
||||
#libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True)
|
||||
#libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p)
|
||||
|
||||
# import ctypes
|
||||
# import ctypes.util
|
||||
# libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True)
|
||||
# libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p)
|
||||
|
||||
class BlockDevice():
|
||||
def __init__(self, path, info=None):
|
||||
|
|
@ -50,9 +51,9 @@ class BlockDevice():
|
|||
to give less/partial information for user readability.
|
||||
"""
|
||||
return {
|
||||
'path' : self.path,
|
||||
'size' : self.info['size'] if 'size' in self.info else '<unknown>',
|
||||
'model' : self.info['model'] if 'model' in self.info else '<unknown>'
|
||||
'path': self.path,
|
||||
'size': self.info['size'] if 'size' in self.info else '<unknown>',
|
||||
'model': self.info['model'] if 'model' in self.info else '<unknown>'
|
||||
}
|
||||
|
||||
def __dump__(self):
|
||||
|
|
@ -97,7 +98,7 @@ class BlockDevice():
|
|||
def partitions(self):
|
||||
o = b''.join(sys_command(['partprobe', self.path]))
|
||||
|
||||
#o = b''.join(sys_command('/usr/bin/lsblk -o name -J -b {dev}'.format(dev=dev)))
|
||||
# o = b''.join(sys_command('/usr/bin/lsblk -o name -J -b {dev}'.format(dev=dev)))
|
||||
o = b''.join(sys_command(['/usr/bin/lsblk', '-J', self.path]))
|
||||
|
||||
if b'not a block device' in o:
|
||||
|
|
@ -215,12 +216,13 @@ class Partition():
|
|||
for partition in json.loads(lsblk.decode('UTF-8'))['blockdevices']:
|
||||
return partition.get('partuuid', None)
|
||||
return None
|
||||
|
||||
@property
|
||||
def encrypted(self):
|
||||
return self._encrypted
|
||||
|
||||
@encrypted.setter
|
||||
def encrypted(self, value :bool):
|
||||
def encrypted(self, value: bool):
|
||||
|
||||
self._encrypted = value
|
||||
|
||||
|
|
@ -250,7 +252,7 @@ class Partition():
|
|||
if not get_filesystem_type(self.path):
|
||||
return False
|
||||
|
||||
temporary_mountpoint = '/tmp/'+hashlib.md5(bytes(f"{time.time()}", 'UTF-8')+os.urandom(12)).hexdigest()
|
||||
temporary_mountpoint = '/tmp/' + hashlib.md5(bytes(f"{time.time()}", 'UTF-8') + os.urandom(12)).hexdigest()
|
||||
temporary_path = pathlib.Path(temporary_mountpoint)
|
||||
|
||||
temporary_path.mkdir(parents=True, exist_ok=True)
|
||||
|
|
@ -421,11 +423,12 @@ class Partition():
|
|||
raise err
|
||||
return True
|
||||
|
||||
|
||||
class Filesystem():
|
||||
# TODO:
|
||||
# When instance of a HDD is selected, check all usages and gracefully unmount them
|
||||
# as well as close any crypto handles.
|
||||
def __init__(self, blockdevice,mode):
|
||||
def __init__(self, blockdevice, mode):
|
||||
self.blockdevice = blockdevice
|
||||
self.mode = mode
|
||||
|
||||
|
|
@ -469,11 +472,11 @@ class Filesystem():
|
|||
if partition.target_mountpoint == mountpoint or partition.mountpoint == mountpoint:
|
||||
return partition
|
||||
|
||||
def raw_parted(self, string:str):
|
||||
def raw_parted(self, string: str):
|
||||
x = sys_command(f'/usr/bin/parted -s {string}')
|
||||
return x
|
||||
|
||||
def parted(self, string:str):
|
||||
def parted(self, string: str):
|
||||
"""
|
||||
Performs a parted execution of the given string
|
||||
|
||||
|
|
@ -515,7 +518,7 @@ class Filesystem():
|
|||
|
||||
previous_partitions = self.blockdevice.partitions
|
||||
if self.mode == MBR:
|
||||
if len(self.blockdevice.partitions)>3:
|
||||
if len(self.blockdevice.partitions) > 3:
|
||||
DiskError("Too many partitions on disk, MBR disks can only have 3 parimary partitions")
|
||||
if format:
|
||||
partitioning = self.parted(f'{self.blockdevice.device} mkpart {type} {format} {start} {end}') == 0
|
||||
|
|
@ -531,11 +534,12 @@ class Filesystem():
|
|||
|
||||
return True
|
||||
|
||||
def set_name(self, partition:int, name:str):
|
||||
return self.parted(f'{self.blockdevice.device} name {partition+1} "{name}"') == 0
|
||||
def set_name(self, partition: int, name: str):
|
||||
return self.parted(f'{self.blockdevice.device} name {partition + 1} "{name}"') == 0
|
||||
|
||||
def set(self, partition: int, string: str):
|
||||
return self.parted(f'{self.blockdevice.device} set {partition + 1} {string}') == 0
|
||||
|
||||
def set(self, partition:int, string:str):
|
||||
return self.parted(f'{self.blockdevice.device} set {partition+1} {string}') == 0
|
||||
|
||||
def device_state(name, *args, **kwargs):
|
||||
# Based out of: https://askubuntu.com/questions/528690/how-to-get-list-of-all-non-removable-disk-device-names-ssd-hdd-and-sata-ide-onl/528709#528709
|
||||
|
|
@ -586,6 +590,7 @@ def harddrive(size=None, model=None, fuzzy=False):
|
|||
|
||||
return collection[drive]
|
||||
|
||||
|
||||
def get_mount_info(path):
|
||||
try:
|
||||
output = b''.join(sys_command(f'/usr/bin/findmnt --json {path}'))
|
||||
|
|
@ -600,6 +605,7 @@ def get_mount_info(path):
|
|||
|
||||
return output['filesystems'][0]
|
||||
|
||||
|
||||
def get_partitions_in_use(mountpoint):
|
||||
try:
|
||||
output = b''.join(sys_command(f'/usr/bin/findmnt --json -R {mountpoint}'))
|
||||
|
|
@ -618,6 +624,7 @@ def get_partitions_in_use(mountpoint):
|
|||
|
||||
return mounts
|
||||
|
||||
|
||||
def get_filesystem_type(path):
|
||||
try:
|
||||
handle = sys_command(f"blkid -o value -s TYPE {path}")
|
||||
|
|
@ -625,6 +632,7 @@ def get_filesystem_type(path):
|
|||
except SysCallError:
|
||||
return None
|
||||
|
||||
|
||||
def disk_layouts():
|
||||
try:
|
||||
handle = sys_command(f"lsblk -f -o+TYPE,SIZE -J")
|
||||
|
|
|
|||
Loading…
Reference in New Issue