Merge pull request #1787 from dbungert/lp-2034270-guided-small-disk-crash
storage: fix crash when guided and a small disk
This commit is contained in:
commit
4d6fb69b73
|
@ -162,7 +162,11 @@ class VariationInfo:
|
||||||
) -> CapabilityInfo:
|
) -> CapabilityInfo:
|
||||||
r = CapabilityInfo()
|
r = CapabilityInfo()
|
||||||
r.disallowed = list(self.capability_info.disallowed)
|
r.disallowed = list(self.capability_info.disallowed)
|
||||||
if self.capability_info.allowed and gap.size < install_min:
|
if gap is None:
|
||||||
|
gap_size = 0
|
||||||
|
else:
|
||||||
|
gap_size = gap.size
|
||||||
|
if self.capability_info.allowed and gap_size < install_min:
|
||||||
for capability in self.capability_info.allowed:
|
for capability in self.capability_info.allowed:
|
||||||
r.disallowed.append(
|
r.disallowed.append(
|
||||||
GuidedDisallowedCapability(
|
GuidedDisallowedCapability(
|
||||||
|
|
|
@ -695,7 +695,7 @@ class TestGuidedV2(IsolatedAsyncioTestCase):
|
||||||
self.assertEqual([reformat, manual], guided_get_resp.targets)
|
self.assertEqual([reformat, manual], guided_get_resp.targets)
|
||||||
|
|
||||||
@parameterized.expand(bootloaders_and_ptables)
|
@parameterized.expand(bootloaders_and_ptables)
|
||||||
async def test_small_blank_disk(self, bootloader, ptable):
|
async def test_small_blank_disk_1GiB(self, bootloader, ptable):
|
||||||
await self._setup(bootloader, ptable, size=1 << 30)
|
await self._setup(bootloader, ptable, size=1 << 30)
|
||||||
resp = await self.fsc.v2_guided_GET()
|
resp = await self.fsc.v2_guided_GET()
|
||||||
expected = [
|
expected = [
|
||||||
|
@ -708,6 +708,28 @@ class TestGuidedV2(IsolatedAsyncioTestCase):
|
||||||
]
|
]
|
||||||
self.assertEqual(expected, resp.targets)
|
self.assertEqual(expected, resp.targets)
|
||||||
|
|
||||||
|
@parameterized.expand(bootloaders_and_ptables)
|
||||||
|
async def test_small_blank_disk_1MiB(self, bootloader, ptable):
|
||||||
|
await self._setup(bootloader, ptable, size=1 << 20)
|
||||||
|
resp = await self.fsc.v2_guided_GET()
|
||||||
|
|
||||||
|
reformat = GuidedStorageTargetReformat(
|
||||||
|
disk_id=self.disk.id,
|
||||||
|
allowed=[],
|
||||||
|
disallowed=default_capabilities_disallowed_too_small,
|
||||||
|
)
|
||||||
|
manual = GuidedStorageTargetManual()
|
||||||
|
|
||||||
|
# depending on bootloader/ptable combo, GuidedStorageTargetReformat may
|
||||||
|
# show up but it will all be disallowed.
|
||||||
|
for target in resp.targets:
|
||||||
|
if isinstance(target, GuidedStorageTargetManual):
|
||||||
|
self.assertEqual(target, manual)
|
||||||
|
elif isinstance(target, GuidedStorageTargetReformat):
|
||||||
|
self.assertEqual(target, reformat)
|
||||||
|
else:
|
||||||
|
raise Exception(f"unexpected target {target}")
|
||||||
|
|
||||||
@parameterized.expand(bootloaders_and_ptables)
|
@parameterized.expand(bootloaders_and_ptables)
|
||||||
async def test_used_half_disk(self, bootloader, ptable):
|
async def test_used_half_disk(self, bootloader, ptable):
|
||||||
await self._setup(bootloader, ptable, size=100 << 30)
|
await self._setup(bootloader, ptable, size=100 << 30)
|
||||||
|
|
Loading…
Reference in New Issue