Skip to content

Commit 5661744

Browse files
committed
Move mount() to disk.utils
1 parent 9bd2131 commit 5661744

3 files changed

Lines changed: 50 additions & 49 deletions

File tree

archinstall/lib/disk/device_handler.py

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
find_lsblk_info,
4545
get_all_lsblk_info,
4646
get_lsblk_info,
47+
mount,
4748
umount,
4849
)
4950

@@ -218,7 +219,7 @@ def get_btrfs_info(
218219
subvol_infos: list[_BtrfsSubvolumeInfo] = []
219220

220221
if not lsblk_info.mountpoint:
221-
self.mount(dev_path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True)
222+
mount(dev_path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True)
222223
mountpoint = self._TMP_BTRFS_MOUNT
223224
else:
224225
# when multiple subvolumes are mounted then the lsblk output may look like
@@ -622,7 +623,7 @@ def create_lvm_btrfs_subvolumes(
622623
) -> None:
623624
info(f'Creating subvolumes: {path}')
624625

625-
self.mount(path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True)
626+
mount(path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True)
626627

627628
for sub_vol in sorted(btrfs_subvols, key=lambda x: x.name):
628629
debug(f'Creating subvolume: {sub_vol.name}')
@@ -671,7 +672,7 @@ def create_btrfs_volumes(
671672
luks_handler = None
672673
dev_path = part_mod.safe_dev_path
673674

674-
self.mount(
675+
mount(
675676
dev_path,
676677
self._TMP_BTRFS_MOUNT,
677678
create_target_mountpoint=True,
@@ -769,43 +770,6 @@ def swapon(path: Path) -> None:
769770
except SysCallError as err:
770771
raise DiskError(f'Could not enable swap {path}:\n{err.message}')
771772

772-
def mount(
773-
self,
774-
dev_path: Path,
775-
target_mountpoint: Path,
776-
mount_fs: str | None = None,
777-
create_target_mountpoint: bool = True,
778-
options: list[str] = [],
779-
) -> None:
780-
if create_target_mountpoint and not target_mountpoint.exists():
781-
target_mountpoint.mkdir(parents=True, exist_ok=True)
782-
783-
if not target_mountpoint.exists():
784-
raise ValueError('Target mountpoint does not exist')
785-
786-
lsblk_info = get_lsblk_info(dev_path)
787-
if target_mountpoint in lsblk_info.mountpoints:
788-
info(f'Device already mounted at {target_mountpoint}')
789-
return
790-
791-
cmd = ['mount']
792-
793-
if len(options):
794-
cmd.extend(('-o', ','.join(options)))
795-
if mount_fs:
796-
cmd.extend(('-t', mount_fs))
797-
798-
cmd.extend((str(dev_path), str(target_mountpoint)))
799-
800-
command = ' '.join(cmd)
801-
802-
debug(f'Mounting {dev_path}: {command}')
803-
804-
try:
805-
SysCommand(command)
806-
except SysCallError as err:
807-
raise DiskError(f'Could not mount {dev_path}: {command}\n{err.message}')
808-
809773
def detect_pre_mounted_mods(self, base_mountpoint: Path) -> list[DeviceModification]:
810774
part_mods: dict[Path, list[PartitionModification]] = {}
811775

archinstall/lib/disk/utils.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from archinstall.lib.command import SysCommand
66
from archinstall.lib.exceptions import DiskError, SysCallError
77
from archinstall.lib.models.device import LsblkInfo
8-
from archinstall.lib.output import debug, warn
8+
from archinstall.lib.output import debug, info, warn
99

1010

1111
class LsblkOutput(BaseModel):
@@ -67,12 +67,12 @@ def get_lsblk_output() -> LsblkOutput:
6767

6868
def find_lsblk_info(
6969
dev_path: Path | str,
70-
info: list[LsblkInfo],
70+
info_list: list[LsblkInfo],
7171
) -> LsblkInfo | None:
7272
if isinstance(dev_path, str):
7373
dev_path = Path(dev_path)
7474

75-
for lsblk_info in info:
75+
for lsblk_info in info_list:
7676
if lsblk_info.path == dev_path:
7777
return lsblk_info
7878

@@ -110,6 +110,43 @@ def disk_layouts() -> str:
110110
return lsblk_output.model_dump_json(indent=4)
111111

112112

113+
def mount(
114+
dev_path: Path,
115+
target_mountpoint: Path,
116+
mount_fs: str | None = None,
117+
create_target_mountpoint: bool = True,
118+
options: list[str] = [],
119+
) -> None:
120+
if create_target_mountpoint and not target_mountpoint.exists():
121+
target_mountpoint.mkdir(parents=True, exist_ok=True)
122+
123+
if not target_mountpoint.exists():
124+
raise ValueError('Target mountpoint does not exist')
125+
126+
lsblk_info = get_lsblk_info(dev_path)
127+
if target_mountpoint in lsblk_info.mountpoints:
128+
info(f'Device already mounted at {target_mountpoint}')
129+
return
130+
131+
cmd = ['mount']
132+
133+
if len(options):
134+
cmd.extend(('-o', ','.join(options)))
135+
if mount_fs:
136+
cmd.extend(('-t', mount_fs))
137+
138+
cmd.extend((str(dev_path), str(target_mountpoint)))
139+
140+
command = ' '.join(cmd)
141+
142+
debug(f'Mounting {dev_path}: {command}')
143+
144+
try:
145+
SysCommand(command)
146+
except SysCallError as err:
147+
raise DiskError(f'Could not mount {dev_path}: {command}\n{err.message}')
148+
149+
113150
def umount(mountpoint: Path, recursive: bool = False) -> None:
114151
lsblk_info = get_lsblk_info(mountpoint)
115152

archinstall/lib/installer.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from archinstall.lib.disk.device_handler import device_handler
1818
from archinstall.lib.disk.fido import Fido2
19-
from archinstall.lib.disk.utils import get_lsblk_by_mountpoint, get_lsblk_info
19+
from archinstall.lib.disk.utils import get_lsblk_by_mountpoint, get_lsblk_info, mount
2020
from archinstall.lib.models.application import ZramAlgorithm
2121
from archinstall.lib.models.device import (
2222
DiskEncryption,
@@ -360,7 +360,7 @@ def _mount_partition(self, part_mod: PartitionModification) -> None:
360360
# it would be none if it's btrfs as the subvolumes will have the mountpoints defined
361361
if part_mod.mountpoint:
362362
target = self.target / part_mod.relative_mountpoint
363-
device_handler.mount(part_mod.dev_path, target, options=part_mod.mount_options)
363+
mount(part_mod.dev_path, target, options=part_mod.mount_options)
364364
elif part_mod.fs_type == FilesystemType.Btrfs:
365365
# Only mount BTRFS subvolumes that have mountpoints specified
366366
subvols_with_mountpoints = [sv for sv in part_mod.btrfs_subvols if sv.mountpoint is not None]
@@ -377,7 +377,7 @@ def _mount_lvm_vol(self, volume: LvmVolume) -> None:
377377
if volume.fs_type != FilesystemType.Btrfs:
378378
if volume.mountpoint and volume.dev_path:
379379
target = self.target / volume.relative_mountpoint
380-
device_handler.mount(volume.dev_path, target, options=volume.mount_options)
380+
mount(volume.dev_path, target, options=volume.mount_options)
381381

382382
if volume.fs_type == FilesystemType.Btrfs and volume.dev_path:
383383
# Only mount BTRFS subvolumes that have mountpoints specified
@@ -396,13 +396,13 @@ def _mount_luks_partition(self, part_mod: PartitionModification, luks_handler: L
396396
self._mount_btrfs_subvol(luks_handler.mapper_dev, part_mod.btrfs_subvols, part_mod.mount_options)
397397
elif part_mod.mountpoint:
398398
target = self.target / part_mod.relative_mountpoint
399-
device_handler.mount(luks_handler.mapper_dev, target, options=part_mod.mount_options)
399+
mount(luks_handler.mapper_dev, target, options=part_mod.mount_options)
400400

401401
def _mount_luks_volume(self, volume: LvmVolume, luks_handler: Luks2) -> None:
402402
if volume.fs_type != FilesystemType.Btrfs:
403403
if volume.mountpoint and luks_handler.mapper_dev:
404404
target = self.target / volume.relative_mountpoint
405-
device_handler.mount(luks_handler.mapper_dev, target, options=volume.mount_options)
405+
mount(luks_handler.mapper_dev, target, options=volume.mount_options)
406406

407407
if volume.fs_type == FilesystemType.Btrfs and luks_handler.mapper_dev:
408408
# Only mount BTRFS subvolumes that have mountpoints specified
@@ -421,7 +421,7 @@ def _mount_btrfs_subvol(
421421
for subvol in sorted(subvols_with_mountpoints, key=lambda x: x.relative_mountpoint):
422422
mountpoint = self.target / subvol.relative_mountpoint
423423
options = mount_options + [f'subvol={subvol.name}']
424-
device_handler.mount(dev_path, mountpoint, options=options)
424+
mount(dev_path, mountpoint, options=options)
425425

426426
def generate_key_files(self) -> None:
427427
match self._disk_encryption.encryption_type:

0 commit comments

Comments
 (0)