Review: Approve
Thanks for this.
I see there are two more gpt-specific fields that could get the same treatment
first-lba does: last-lba and table-size. Should we preserve these too?
Should the disk action allow setting any of the
label-id/first-lba/last-lba/table-size options? I guess that could be added if
anyone asks for them...
Diff comments:
> diff --git a/tests/integration/test_block_meta.py
> b/tests/integration/test_block_meta.py
> index e542017..ee44bbf 100644
> --- a/tests/integration/test_block_meta.py
> +++ b/tests/integration/test_block_meta.py
> @@ -988,3 +988,134 @@ class TestBlockMeta(IntegrationTestCase):
> PartData(number=1, offset=1 << 20, size=18 << 20))
> with loop_dev(self.img) as dev:
> self.assertEqual(orig_label_id, _get_disk_label_id(dev))
> +
> + def test_gpt_uuid_persistent(self):
> + # A persistent partition with an unspecified uuid shall keep the uuid
> + self.img = self.tmp_path('image.img')
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + config.add_part(number=1, offset=1 << 20, size=18 << 20)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + expected_uuid = sfdisk_info['partitions'][0]['uuid']
> +
> + config.set_preserve()
> + self.run_bm(config.render())
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + actual_uuid = sfdisk_info['partitions'][0]['uuid']
> + self.assertEqual(expected_uuid, actual_uuid)
> +
> + def test_gpt_set_name(self):
> + self.img = self.tmp_path('image.img')
> + name = self.random_string() + ' ' + self.random_string()
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + config.add_part(number=1, offset=1 << 20, size=18 << 20,
> + partition_name=name)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + actual_name = sfdisk_info['partitions'][0]['name']
> + self.assertEqual(name, actual_name)
> +
> + def test_gpt_name_persistent(self):
> + self.img = self.tmp_path('image.img')
> + name = self.random_string()
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + p1 = config.add_part(number=1, offset=1 << 20, size=18 << 20,
> + partition_name=name)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + actual_name = sfdisk_info['partitions'][0]['name']
> + self.assertEqual(name, actual_name)
> +
> + del p1['partition_name']
> + config.set_preserve()
> + self.run_bm(config.render())
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + actual_name = sfdisk_info['partitions'][0]['name']
> + self.assertEqual(name, actual_name)
> +
> + def test_gpt_set_single_attr(self):
> + self.img = self.tmp_path('image.img')
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + attrs = ['GUID:63']
> + config.add_part(number=1, offset=1 << 20, size=18 << 20,
> + attrs=attrs)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + attrs_str = sfdisk_info['partitions'][0]['attrs']
> + actual_attrs = set(attrs_str.split(' '))
> + self.assertEqual(set(attrs), actual_attrs)
> +
> + def test_gpt_set_multi_attr(self):
> + self.img = self.tmp_path('image.img')
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + attrs = ['GUID:63', 'RequiredPartition']
> + config.add_part(number=1, offset=1 << 20, size=18 << 20,
> + attrs=attrs)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + attrs_str = sfdisk_info['partitions'][0]['attrs']
> + actual_attrs = set(attrs_str.split(' '))
> + self.assertEqual(set(attrs), actual_attrs)
> +
> + def test_gpt_attrs_persistent(self):
> + self.img = self.tmp_path('image.img')
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + attrs = ['GUID:63']
> + p1 = config.add_part(number=1, offset=1 << 20, size=18 << 20,
> + attrs=attrs)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + attrs_str = sfdisk_info['partitions'][0]['attrs']
> + actual_attrs = set(attrs_str.split(' '))
> + self.assertEqual(set(attrs), actual_attrs)
> +
> + del p1['attrs']
> + config.set_preserve()
> + self.run_bm(config.render())
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + attrs_str = sfdisk_info['partitions'][0]['attrs']
> + actual_attrs = set(attrs_str.split(' '))
> + self.assertEqual(set(attrs), actual_attrs)
> +
> + def test_gpt_first_lba_persistent(self):
> + self.img = self.tmp_path('image.img')
> + config = StorageConfigBuilder(version=2)
> + config.add_image(path=self.img, size='20M', ptable='gpt')
> + config.add_part(number=1, offset=1 << 20, size=18 << 20)
> + self.run_bm(config.render())
> + pd = PartData(number=1, offset=1 << 20, size=18 << 20)
> + self.assertPartitions(pd)
> + with loop_dev(self.img) as dev:
> + sfdisk_info = block.sfdisk_info(dev)
> + first_lba = sfdisk_info['firstlba']
> + self.assertEqual(2048, first_lba)
I'm not sure this is really testing anything?
--
https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/426651
Your team curtin developers is subscribed to branch curtin:master.
--
Mailing list: https://launchpad.net/~curtin-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~curtin-dev
More help : https://help.launchpad.net/ListHelp