diff --git a/subiquity/models/filesystem.py b/subiquity/models/filesystem.py index a822a7ae..e76bc999 100644 --- a/subiquity/models/filesystem.py +++ b/subiquity/models/filesystem.py @@ -385,7 +385,13 @@ class _Formattable(ABC): @property def annotations(self): - return [] + preserve = getattr(self, 'preserve', None) + if preserve is None: + return [] + elif preserve: + return [_("existing")] + else: + return [_("new")] # Filesystem _fs = attributes.backlink() @@ -604,6 +610,10 @@ class Disk(_Device): def size(self): return align_down(self._info.size) + @property + def annotations(self): + return [] + def desc(self): return _("local disk") diff --git a/subiquity/models/tests/test_filesystem.py b/subiquity/models/tests/test_filesystem.py index bc7bf575..70e54865 100644 --- a/subiquity/models/tests/test_filesystem.py +++ b/subiquity/models/tests/test_filesystem.py @@ -180,16 +180,38 @@ def make_model_and_lv(bootloader=None): class TestFilesystemModel(unittest.TestCase): + def test_disk_annotations(self): + # disks never have annotations + model, disk = make_model_and_disk() + self.assertEqual(disk.annotations, []) + disk.preserve = True + self.assertEqual(disk.annotations, []) + + def test_partition_annotations(self): + model, disk = make_model_and_disk() + part = model.add_partition(disk, size=disk.free_for_partitions) + self.assertEqual(part.annotations, ['new']) + part.preserve = True + self.assertEqual(part.annotations, ['existing']) + part.flag = "boot" + self.assertEqual(part.annotations, ['existing', 'ESP']) + part.flag = "prep" + self.assertEqual(part.annotations, ['existing', 'PReP']) + part.flag = "bios_grub" + self.assertEqual(part.annotations, ['existing', 'bios_grub']) + def test_vg_default_annotations(self): model, disk = make_model_and_disk() vg = model.add_volgroup('vg-0', {disk}) - self.assertEqual(vg.annotations, []) + self.assertEqual(vg.annotations, ['new']) + vg.preserve = True + self.assertEqual(vg.annotations, ['existing']) def test_vg_encrypted_annotations(self): model, disk = make_model_and_disk() dm_crypt = model.add_dm_crypt(disk, key='passw0rd') vg = model.add_volgroup('vg-0', {dm_crypt}) - self.assertEqual(vg.annotations, ['encrypted']) + self.assertEqual(vg.annotations, ['new', 'encrypted']) def _test_ok_for_xxx(self, model, make_new_device, attr, test_partitions=True):