Merge pull request #1243 from dbungert/add-part-require-offset

filesystem: add_partition requires offset
This commit is contained in:
Dan Bungert 2022-03-30 09:39:34 -06:00 committed by GitHub
commit efd62ea380
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 27 deletions

View File

@ -77,7 +77,7 @@ class FilesystemManipulator:
def create_partition(self, device, gap, spec, **kw):
part = self.model.add_partition(
device, spec["size"], offset=gap.offset, **kw)
device, size=spec["size"], offset=gap.offset, **kw)
self.create_filesystem(part, spec)
return part

View File

@ -81,13 +81,13 @@ class TestFilesystemManipulator(unittest.TestCase):
def add_existing_boot_partition(self, manipulator, disk):
if manipulator.model.bootloader == Bootloader.BIOS:
part = manipulator.model.add_partition(
disk, size=1 << 20, flag="bios_grub")
disk, size=1 << 20, offset=0, flag="bios_grub")
elif manipulator.model.bootloader == Bootloader.UEFI:
part = manipulator.model.add_partition(
disk, size=512 << 20, flag="boot")
disk, size=512 << 20, offset=0, flag="boot")
elif manipulator.model.bootloader == Bootloader.PREP:
part = manipulator.model.add_partition(
disk, size=8 << 20, flag="prep")
disk, size=8 << 20, offset=0, flag="prep")
part.preserve = True
return part
@ -128,8 +128,9 @@ class TestFilesystemManipulator(unittest.TestCase):
disk1 = make_disk(manipulator.model, preserve=False)
disk2 = make_disk(manipulator.model, preserve=False)
gap = gaps.largest_gap(disk2)
disk2p1 = manipulator.model.add_partition(
disk2, size=gaps.largest_gap_size(disk2))
disk2, size=gap.size, offset=gap.offset)
manipulator.add_boot_disk(disk1)
self.assertIsBootDisk(manipulator, disk1)
@ -169,8 +170,9 @@ class TestFilesystemManipulator(unittest.TestCase):
disk1 = make_disk(manipulator.model, preserve=False)
disk2 = make_disk(manipulator.model, preserve=False)
gap = gaps.largest_gap(disk2)
disk2p1 = manipulator.model.add_partition(
disk2, size=gaps.largest_gap_size(disk2))
disk2, size=gap.size, offset=gap.offset)
manipulator.add_boot_disk(disk1)
self.assertIsBootDisk(manipulator, disk1)
@ -214,7 +216,7 @@ class TestFilesystemManipulator(unittest.TestCase):
manipulator = make_manipulator(Bootloader.UEFI)
disk1 = make_disk(manipulator.model, preserve=True)
disk1p1 = manipulator.model.add_partition(
disk1, size=512 << 20, flag="boot")
disk1, size=512 << 20, offset=0, flag="boot")
disk1p1.preserve = True
disk1p2 = manipulator.model.add_partition(
disk1, size=8192 << 20, offset=513 << 20)

View File

@ -1380,14 +1380,11 @@ class FilesystemModel(object):
_remove_backlinks(obj)
self._actions.remove(obj)
def add_partition(self, device, size, *, offset=None, flag="", wipe=None,
def add_partition(self, device, *, size, offset, flag="", wipe=None,
grub_device=None):
from subiquity.common.filesystem import boot
real_size = align_up(size)
log.debug("add_partition: rounded size from %s to %s", size, real_size)
if offset is None:
from subiquity.common.filesystem.gaps import largest_gap
offset = largest_gap(device).offset
if device._fs is not None:
raise Exception("%s is already formatted" % (device,))
p = Partition(

View File

@ -43,8 +43,8 @@ class LVMViewTests(unittest.TestCase):
def test_create_vg(self):
model, disk = make_model_and_disk()
part1 = model.add_partition(disk, 10*(2**30))
part2 = model.add_partition(disk, 10*(2**30))
part1 = model.add_partition(disk, size=10*(2**30), offset=0)
part2 = model.add_partition(disk, size=10*(2**30), offset=10*(2**30))
view, stretchy = make_view(model)
form_data = {
'name': 'vg1',
@ -62,8 +62,8 @@ class LVMViewTests(unittest.TestCase):
def test_create_vg_encrypted(self):
model, disk = make_model_and_disk()
part1 = model.add_partition(disk, 10*(2**30))
part2 = model.add_partition(disk, 10*(2**30))
part1 = model.add_partition(disk, size=10*(2**30), offset=0)
part2 = model.add_partition(disk, size=10*(2**30), offset=10*(2**30))
view, stretchy = make_view(model)
form_data = {
'name': 'vg1',

View File

@ -74,7 +74,7 @@ class PartitionViewTests(unittest.TestCase):
'fstype': "xfs",
}
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20))
partition = model.add_partition(disk, size=512*(2**20), offset=0)
model.add_filesystem(partition, "ext4")
view, stretchy = make_partition_view(model, disk, partition)
self.assertTrue(stretchy.form.done_btn.enabled)
@ -91,7 +91,7 @@ class PartitionViewTests(unittest.TestCase):
def test_size_clamping(self):
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20))
partition = model.add_partition(disk, size=512*(2**20), offset=0)
model.add_filesystem(partition, "ext4")
view, stretchy = make_partition_view(model, disk, partition)
self.assertTrue(stretchy.form.done_btn.enabled)
@ -106,7 +106,7 @@ class PartitionViewTests(unittest.TestCase):
'fstype': "xfs",
}
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20))
partition = model.add_partition(disk, size=512*(2**20), offset=0)
partition.preserve = True
model.add_filesystem(partition, "ext4")
view, stretchy = make_partition_view(model, disk, partition)
@ -126,7 +126,7 @@ class PartitionViewTests(unittest.TestCase):
# Set up a PartitionStretchy for editing a partition with an
# existing filesystem.
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20))
partition = model.add_partition(disk, size=512*(2**20), offset=0)
partition.preserve = True
partition.number = 1
fs = model.add_filesystem(partition, "ext4")
@ -167,7 +167,8 @@ class PartitionViewTests(unittest.TestCase):
'size': "256M",
}
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20), flag="boot")
partition = model.add_partition(disk, size=512*(2**20),
offset=0, flag="boot")
fs = model.add_filesystem(partition, "fat32")
model.add_mount(fs, '/boot/efi')
view, stretchy = make_partition_view(model, disk, partition)
@ -190,7 +191,8 @@ class PartitionViewTests(unittest.TestCase):
def test_edit_existing_unused_boot_partition(self):
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20), flag="boot")
partition = model.add_partition(disk, size=512*(2**20),
offset=0, flag="boot")
fs = model.add_filesystem(partition, "fat32")
model._orig_config = model._render_actions()
disk.preserve = partition.preserve = fs.preserve = True
@ -211,7 +213,8 @@ class PartitionViewTests(unittest.TestCase):
def test_edit_existing_used_boot_partition(self):
model, disk = make_model_and_disk()
partition = model.add_partition(disk, 512*(2**20), flag="boot")
partition = model.add_partition(disk, size=512*(2**20),
offset=0, flag="boot")
fs = model.add_filesystem(partition, "fat32")
model._orig_config = model._render_actions()
partition.grub_device = True

View File

@ -31,9 +31,9 @@ class RaidViewTests(unittest.TestCase):
def test_create_raid(self):
model, disk = make_model_and_disk()
part1 = model.add_partition(disk, 10*(2**30))
part2 = model.add_partition(disk, 10*(2**30))
part3 = model.add_partition(disk, 10*(2**30))
part1 = model.add_partition(disk, size=10*(2**30), offset=0)
part2 = model.add_partition(disk, size=10*(2**30), offset=10*(2**30))
part3 = model.add_partition(disk, size=10*(2**30), offset=20*(2**30))
view, stretchy = make_view(model)
form_data = {
'name': 'md0',
@ -52,8 +52,8 @@ class RaidViewTests(unittest.TestCase):
def test_edit_raid(self):
model, disk = make_model_and_disk()
part1 = model.add_partition(disk, 10*(2**30))
part2 = model.add_partition(disk, 10*(2**30))
part1 = model.add_partition(disk, size=10*(2**30), offset=0)
part2 = model.add_partition(disk, size=10*(2**30), offset=10*(2**30))
raid = model.add_raid("md0", "raid1", {part1, part2}, set())
view, stretchy = make_view(model, raid)
form_data = {