add new/existing annotations

This commit is contained in:
Michael Hudson-Doyle 2019-05-28 23:25:32 +12:00
parent 628758811e
commit f3ffd9b8e9
2 changed files with 35 additions and 3 deletions

View File

@ -385,7 +385,13 @@ class _Formattable(ABC):
@property @property
def annotations(self): def annotations(self):
return [] preserve = getattr(self, 'preserve', None)
if preserve is None:
return []
elif preserve:
return [_("existing")]
else:
return [_("new")]
# Filesystem # Filesystem
_fs = attributes.backlink() _fs = attributes.backlink()
@ -604,6 +610,10 @@ class Disk(_Device):
def size(self): def size(self):
return align_down(self._info.size) return align_down(self._info.size)
@property
def annotations(self):
return []
def desc(self): def desc(self):
return _("local disk") return _("local disk")

View File

@ -180,16 +180,38 @@ def make_model_and_lv(bootloader=None):
class TestFilesystemModel(unittest.TestCase): 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): def test_vg_default_annotations(self):
model, disk = make_model_and_disk() model, disk = make_model_and_disk()
vg = model.add_volgroup('vg-0', {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): def test_vg_encrypted_annotations(self):
model, disk = make_model_and_disk() model, disk = make_model_and_disk()
dm_crypt = model.add_dm_crypt(disk, key='passw0rd') dm_crypt = model.add_dm_crypt(disk, key='passw0rd')
vg = model.add_volgroup('vg-0', {dm_crypt}) 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, def _test_ok_for_xxx(self, model, make_new_device, attr,
test_partitions=True): test_partitions=True):