Skip to content

Commit

Permalink
reset_partition accepts fixed size
Browse files Browse the repository at this point in the history
  • Loading branch information
medicalwei committed Dec 18, 2023
1 parent ea909d1 commit 3a7c13d
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
2 changes: 1 addition & 1 deletion subiquity/common/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ class GuidedChoiceV2:
recovery_key: Optional[RecoveryKey] = None

sizing_policy: Optional[SizingPolicy] = SizingPolicy.SCALED
reset_partition: bool = False
reset_partition: bool | int | str = False


@attr.s(auto_attribs=True)
Expand Down
7 changes: 6 additions & 1 deletion subiquity/server/controllers/filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from curtin import swap
from curtin.commands.extract import AbstractSourceHandler
from curtin.storage_config import ptable_part_type_to_flag
from curtin.util import human2bytes

from subiquity.common.apidef import API
from subiquity.common.errorreport import ErrorReportKind
Expand Down Expand Up @@ -707,7 +708,11 @@ async def guided(
raise Exception("failed to locate gap after adding boot")

if choice.reset_partition:
if self.app.opts.dry_run:
if type(choice.reset_partition) in (int, str):
reset_size = int(human2bytes(choice.reset_partition))
part_align = disk.alignment_data().part_align
reset_size = align_up(reset_size, part_align)
elif self.app.opts.dry_run:
reset_size = DRY_RUN_RESET_SIZE
else:
cp = await arun_command(["du", "-sb", "/cdrom"])
Expand Down
38 changes: 38 additions & 0 deletions subiquity/server/controllers/tests/test_filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,44 @@ async def test_guided_reset_partition(self):
self.assertEqual(DRY_RUN_RESET_SIZE, d1p2.size)
self.assertEqual("/", d1p3.mount)

async def test_fixed_reset_partition(self):
await self._guided_setup(Bootloader.UEFI, "gpt")
target = GuidedStorageTargetReformat(
disk_id=self.d1.id, allowed=default_capabilities
)
fixed_reset_size = 12 << 30
await self.controller.guided(
GuidedChoiceV2(
target=target,
capability=GuidedCapability.DIRECT,
reset_partition=fixed_reset_size,
)
)
[d1p1, d1p2, d1p3] = self.d1.partitions()
self.assertEqual("/boot/efi", d1p1.mount)
self.assertEqual(None, d1p2.mount)
self.assertEqual(fixed_reset_size, d1p2.size)
self.assertEqual("/", d1p3.mount)

async def test_fixed_reset_partition_human(self):
await self._guided_setup(Bootloader.UEFI, "gpt")
target = GuidedStorageTargetReformat(
disk_id=self.d1.id, allowed=default_capabilities
)
fixed_reset_size = "12G"
await self.controller.guided(
GuidedChoiceV2(
target=target,
capability=GuidedCapability.DIRECT,
reset_partition=fixed_reset_size,
)
)
[d1p1, d1p2, d1p3] = self.d1.partitions()
self.assertEqual("/boot/efi", d1p1.mount)
self.assertEqual(None, d1p2.mount)
self.assertEqual(12 << 30, d1p2.size)
self.assertEqual("/", d1p3.mount)

async def test_guided_reset_partition_only(self):
await self._guided_setup(Bootloader.UEFI, "gpt")
target = GuidedStorageTargetReformat(
Expand Down

0 comments on commit 3a7c13d

Please sign in to comment.