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): def create_partition(self, device, gap, spec, **kw):
part = self.model.add_partition( 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) self.create_filesystem(part, spec)
return part return part

View File

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

View File

@ -1380,14 +1380,11 @@ class FilesystemModel(object):
_remove_backlinks(obj) _remove_backlinks(obj)
self._actions.remove(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): grub_device=None):
from subiquity.common.filesystem import boot from subiquity.common.filesystem import boot
real_size = align_up(size) real_size = align_up(size)
log.debug("add_partition: rounded size from %s to %s", size, real_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: if device._fs is not None:
raise Exception("%s is already formatted" % (device,)) raise Exception("%s is already formatted" % (device,))
p = Partition( p = Partition(

View File

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

View File

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

View File

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