Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions archinstall/lib/disk/device_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ def _setup_partition(
) -> None:
# when we require a delete and the partition to be (re)created
# already exists then we have to delete it first
if requires_delete and part_mod.status in [ModificationStatus.Modify, ModificationStatus.Delete]:
if requires_delete and part_mod.status in [ModificationStatus.MODIFY, ModificationStatus.DELETE]:
info(f'Delete existing partition: {part_mod.safe_dev_path}')
part_info = self.find_partition(part_mod.safe_dev_path)

Expand All @@ -351,7 +351,7 @@ def _setup_partition(

disk.deletePartition(part_info.partition)

if part_mod.status == ModificationStatus.Delete:
if part_mod.status == ModificationStatus.DELETE:
return

start_sector = part_mod.start.convert(
Expand Down
15 changes: 7 additions & 8 deletions archinstall/lib/disk/disk_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
LvmLayoutType,
LvmVolume,
LvmVolumeGroup,
LvmVolumeStatus,
ModificationStatus,
PartitionFlag,
PartitionModification,
Expand Down Expand Up @@ -503,7 +502,7 @@ def _boot_partition(sector_size: SectorSize, using_gpt: bool) -> PartitionModifi

# boot partition
return PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=start,
length=size,
Expand Down Expand Up @@ -655,7 +654,7 @@ async def suggest_single_disk_layout(
root_length = available_space - root_start

root_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=root_start,
length=root_length,
Expand All @@ -680,7 +679,7 @@ async def suggest_single_disk_layout(
flags.append(PartitionFlag.LINUX_HOME)

home_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=home_start,
length=home_length,
Expand Down Expand Up @@ -765,7 +764,7 @@ async def suggest_multi_disk_layout(

# add root partition to the root device
root_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=root_start,
length=root_length,
Expand All @@ -787,7 +786,7 @@ async def suggest_multi_disk_layout(

# add home partition to home device
home_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=home_start,
length=home_length,
Expand Down Expand Up @@ -851,7 +850,7 @@ async def suggest_lvm_layout(
lvm_vol_group = LvmVolumeGroup(vg_grp_name, pvs=other_part)

root_vol = LvmVolume(
status=LvmVolumeStatus.Create,
status=ModificationStatus.CREATE,
name='root',
fs_type=filesystem_type,
length=root_vol_size,
Expand All @@ -864,7 +863,7 @@ async def suggest_lvm_layout(

if home_volume:
home_vol = LvmVolume(
status=LvmVolumeStatus.Create,
status=ModificationStatus.CREATE,
name='home',
fs_type=filesystem_type,
length=home_vol_size,
Expand Down
12 changes: 6 additions & 6 deletions archinstall/lib/disk/partitioning_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def table_data(self) -> dict[str, str]:
return self.segment.table_data()

part_mod = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType._Unknown,
start=self.segment.start,
length=self.segment.length,
Expand Down Expand Up @@ -209,7 +209,7 @@ async def _run_actions_on_entry(self, entry: DiskSegment) -> None:
@override
def selected_action_display(self, selection: DiskSegment) -> str:
if isinstance(selection.segment, PartitionModification):
if selection.segment.status == ModificationStatus.Create:
if selection.segment.status == ModificationStatus.CREATE:
return tr('Partition - New')
elif selection.segment.is_delete() and selection.segment.dev_path:
title = tr('Partition') + '\n\n'
Expand Down Expand Up @@ -357,7 +357,7 @@ def _delete_partition(
data: list[DiskSegment],
) -> list[DiskSegment]:
if entry.is_exists_or_modify():
entry.status = ModificationStatus.Delete
entry.status = ModificationStatus.DELETE
part_mods = self.get_part_mods(data)
else:
part_mods = [d.segment for d in data if isinstance(d.segment, PartitionModification) and d.segment != entry]
Expand Down Expand Up @@ -391,10 +391,10 @@ async def _set_btrfs_subvolumes(self, partition: PartitionModification) -> None:
async def _prompt_formatting(self, partition: PartitionModification) -> None:
# an existing partition can toggle between Exist or Modify
if partition.is_modify():
partition.status = ModificationStatus.Exist
partition.status = ModificationStatus.EXIST
return
elif partition.exists():
partition.status = ModificationStatus.Modify
partition.status = ModificationStatus.MODIFY

# If we mark a partition for formatting, but the format is CRYPTO LUKS, there's no point in formatting it really
# without asking the user which inner-filesystem they want to use. Since the flag 'encrypted' = True is already set,
Expand Down Expand Up @@ -526,7 +526,7 @@ async def _create_new_partition(self, free_space: FreeSpace) -> PartitionModific
mountpoint = await self._prompt_mountpoint()

partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=free_space.start,
length=length,
Expand Down
2 changes: 0 additions & 2 deletions archinstall/lib/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
LvmLayoutType,
LvmVolume,
LvmVolumeGroup,
LvmVolumeStatus,
ModificationStatus,
PartitionFlag,
PartitionModification,
Expand Down Expand Up @@ -57,7 +56,6 @@
'LvmLayoutType',
'LvmVolume',
'LvmVolumeGroup',
'LvmVolumeStatus',
'MirrorConfiguration',
'MirrorRegion',
'ModificationStatus',
Expand Down
51 changes: 22 additions & 29 deletions archinstall/lib/models/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ def parse_arg(
continue

first = non_delete_partitions[0]
if first.status == ModificationStatus.Create and not first.start.is_valid_start():
if first.status == ModificationStatus.CREATE and not first.start.is_valid_start():
raise ValueError('First partition must start at no less than 1 MiB')

for i, current_partition in enumerate(non_delete_partitions[1:], start=1):
previous_partition = non_delete_partitions[i - 1]
if current_partition.status == ModificationStatus.Create and current_partition.start < previous_partition.end:
if current_partition.status == ModificationStatus.CREATE and current_partition.start < previous_partition.end:
raise ValueError('Partitions overlap')

create_partitions = [part_mod for part_mod in non_delete_partitions if part_mod.status == ModificationStatus.Create]
create_partitions = [part_mod for part_mod in non_delete_partitions if part_mod.status == ModificationStatus.CREATE]

if not create_partitions:
continue
Expand Down Expand Up @@ -819,11 +819,11 @@ def installation_pkg(self) -> str | None:
return None


class ModificationStatus(Enum):
Exist = 'existing'
Modify = 'modify'
Delete = 'delete'
Create = 'create'
class ModificationStatus(StrEnum):
EXIST = 'existing'
MODIFY = auto()
DELETE = auto()
CREATE = auto()


class _PartitionModificationSerialization(TypedDict):
Expand Down Expand Up @@ -868,7 +868,7 @@ def __post_init__(self) -> None:
if self.is_exists_or_modify() and not self.dev_path:
raise ValueError('If partition marked as existing a path must be set')

if self.fs_type is None and self.status == ModificationStatus.Modify:
if self.fs_type is None and self.status == ModificationStatus.MODIFY:
raise ValueError('FS type must not be empty on modifications with status type modify')

@override
Expand Down Expand Up @@ -911,7 +911,7 @@ def from_existing_partition(cls, partition_info: _PartitionInfo) -> Self:
subvol_mods = []

return cls(
status=ModificationStatus.Exist,
status=ModificationStatus.EXIST,
type=partition_info.type,
start=partition_info.start,
length=partition_info.length,
Expand Down Expand Up @@ -961,23 +961,23 @@ def is_swap(self) -> bool:
return self.fs_type == FilesystemType.LINUX_SWAP

def is_modify(self) -> bool:
return self.status == ModificationStatus.Modify
return self.status == ModificationStatus.MODIFY

def is_delete(self) -> bool:
return self.status == ModificationStatus.Delete
return self.status == ModificationStatus.DELETE

def exists(self) -> bool:
return self.status == ModificationStatus.Exist
return self.status == ModificationStatus.EXIST

def is_exists_or_modify(self) -> bool:
return self.status in [
ModificationStatus.Exist,
ModificationStatus.Delete,
ModificationStatus.Modify,
ModificationStatus.EXIST,
ModificationStatus.DELETE,
ModificationStatus.MODIFY,
]

def is_create_or_modify(self) -> bool:
return self.status in [ModificationStatus.Create, ModificationStatus.Modify]
return self.status in [ModificationStatus.CREATE, ModificationStatus.MODIFY]

@property
def mapper_name(self) -> str | None:
Expand Down Expand Up @@ -1088,13 +1088,6 @@ def contains_lv(self, lv: LvmVolume) -> bool:
return lv in self.volumes


class LvmVolumeStatus(Enum):
Exist = 'existing'
Modify = 'modify'
Delete = 'delete'
Create = 'create'


class _LvmVolumeSerialization(TypedDict):
obj_id: str
status: str
Expand All @@ -1108,7 +1101,7 @@ class _LvmVolumeSerialization(TypedDict):

@dataclass
class LvmVolume:
status: LvmVolumeStatus
status: ModificationStatus
name: str
fs_type: FilesystemType
length: Size
Expand Down Expand Up @@ -1177,7 +1170,7 @@ def relative_mountpoint(self) -> Path:
@classmethod
def parse_arg(cls, arg: _LvmVolumeSerialization) -> Self:
volume = cls(
status=LvmVolumeStatus(arg['status']),
status=ModificationStatus(arg['status']),
name=arg['name'],
fs_type=FilesystemType(arg['fs_type']),
length=Size.parse_args(arg['length']),
Expand Down Expand Up @@ -1215,13 +1208,13 @@ def table_data(self) -> dict[str, str]:
return part_mod

def is_modify(self) -> bool:
return self.status == LvmVolumeStatus.Modify
return self.status == ModificationStatus.MODIFY

def exists(self) -> bool:
return self.status == LvmVolumeStatus.Exist
return self.status == ModificationStatus.EXIST

def is_exists_or_modify(self) -> bool:
return self.status in [LvmVolumeStatus.Exist, LvmVolumeStatus.Modify]
return self.status in [ModificationStatus.EXIST, ModificationStatus.MODIFY]

def is_root(self) -> bool:
if self.mountpoint is not None:
Expand Down
6 changes: 3 additions & 3 deletions examples/full_automated_installation.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

# create a new boot partition
boot_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=Size(1, Unit.MiB, device.device_info.sector_size),
length=Size(512, Unit.MiB, device.device_info.sector_size),
Expand All @@ -49,7 +49,7 @@

# create a root partition
root_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=Size(513, Unit.MiB, device.device_info.sector_size),
length=Size(20, Unit.GiB, device.device_info.sector_size),
Expand All @@ -64,7 +64,7 @@

# create a new home partition
home_partition = PartitionModification(
status=ModificationStatus.Create,
status=ModificationStatus.CREATE,
type=PartitionType.Primary,
start=start_home,
length=length_home,
Expand Down