reset_partition accepts fixed size
This commit is contained in:
parent
5a301bcdd6
commit
58bfe12d21
|
@ -531,6 +531,7 @@ class GuidedChoiceV2:
|
|||
|
||||
sizing_policy: Optional[SizingPolicy] = SizingPolicy.SCALED
|
||||
reset_partition: bool = False
|
||||
reset_partition_size: Optional[int] = None
|
||||
|
||||
|
||||
@attr.s(auto_attribs=True)
|
||||
|
|
|
@ -29,6 +29,7 @@ import pyudev
|
|||
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
|
||||
|
@ -707,7 +708,10 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
|
|||
raise Exception("failed to locate gap after adding boot")
|
||||
|
||||
if choice.reset_partition:
|
||||
if self.app.opts.dry_run:
|
||||
if choice.reset_partition_size is not None:
|
||||
part_align = disk.alignment_data().part_align
|
||||
reset_size = align_up(choice.reset_partition_size, part_align)
|
||||
elif self.app.opts.dry_run:
|
||||
reset_size = DRY_RUN_RESET_SIZE
|
||||
else:
|
||||
cp = await arun_command(["du", "-sb", "/cdrom"])
|
||||
|
@ -1410,6 +1414,20 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
|
|||
disk_id=gap.device.id, gap=gap, allowed=[]
|
||||
)
|
||||
|
||||
reset_partition = False
|
||||
reset_partition_size = None
|
||||
rp_input = layout.get("reset-partition", None)
|
||||
if rp_input:
|
||||
reset_partition = True
|
||||
if isinstance(rp_input, (str, int)):
|
||||
reset_partition_size = int(human2bytes(rp_input))
|
||||
log.info(
|
||||
"autoinstall: will install reset partition "
|
||||
f"of size {reset_partition_size}"
|
||||
)
|
||||
else:
|
||||
log.info("autoinstall: will install reset partition")
|
||||
|
||||
log.info(
|
||||
f"autoinstall: running guided {capability} install in "
|
||||
f"mode {mode} using {target}"
|
||||
|
@ -1421,7 +1439,8 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
|
|||
password=password,
|
||||
recovery_key=guided_recovery_key,
|
||||
sizing_policy=sizing_policy,
|
||||
reset_partition=layout.get("reset-partition", False),
|
||||
reset_partition=reset_partition,
|
||||
reset_partition_size=reset_partition_size,
|
||||
),
|
||||
reset_partition_only=layout.get("reset-partition-only", False),
|
||||
)
|
||||
|
|
|
@ -459,6 +459,26 @@ class TestGuided(IsolatedAsyncioTestCase):
|
|||
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=True,
|
||||
reset_partition_size=fixed_reset_size,
|
||||
)
|
||||
)
|
||||
[d1p1, d1p2, d1p3] = self.d1.partitions()
|
||||
self.assertEqual("/boot/efi", d1p1.mount)
|
||||
self.assertIsNone(d1p2.mount)
|
||||
self.assertEqual(fixed_reset_size, d1p2.size)
|
||||
self.assertEqual("/", d1p3.mount)
|
||||
|
||||
async def test_guided_reset_partition_only(self):
|
||||
await self._guided_setup(Bootloader.UEFI, "gpt")
|
||||
target = GuidedStorageTargetReformat(
|
||||
|
|
Loading…
Reference in New Issue