allow reformatting of raids

This commit is contained in:
Michael Hudson-Doyle 2020-03-27 13:46:59 +13:00
parent 100661b60c
commit 7e69fe6d54
4 changed files with 29 additions and 3 deletions

View File

@ -994,6 +994,7 @@ class Raid(_Device):
DeviceAction.FORMAT, DeviceAction.FORMAT,
DeviceAction.REMOVE, DeviceAction.REMOVE,
DeviceAction.DELETE, DeviceAction.DELETE,
DeviceAction.REFORMAT,
] ]
@property @property
@ -1008,6 +1009,7 @@ class Raid(_Device):
return _generic_can_EDIT(self) return _generic_can_EDIT(self)
_can_PARTITION = Disk._can_PARTITION _can_PARTITION = Disk._can_PARTITION
_can_REFORMAT = Disk._can_REFORMAT
_can_FORMAT = property( _can_FORMAT = property(
lambda self: len(self._partitions) == 0 and lambda self: len(self._partitions) == 0 and
self._constructed_device is None) self._constructed_device is None)

View File

@ -596,8 +596,31 @@ class TestFilesystemModel(unittest.TestCase):
self.assertActionNotPossible(raid3, DeviceAction.EDIT) self.assertActionNotPossible(raid3, DeviceAction.EDIT)
def test_raid_action_REFORMAT(self): def test_raid_action_REFORMAT(self):
model, raid = make_model_and_raid() model = make_model()
self.assertActionNotSupported(raid, DeviceAction.REFORMAT)
raid1 = make_raid(model)
self.assertActionNotPossible(raid1, DeviceAction.REFORMAT)
raid1p1 = make_partition(model, raid1)
self.assertActionPossible(raid1, DeviceAction.REFORMAT)
model.add_volgroup('vg0', {raid1p1})
self.assertActionNotPossible(raid1, DeviceAction.REFORMAT)
raid2 = make_raid(model)
raid2.preserve = True
self.assertActionNotPossible(raid2, DeviceAction.REFORMAT)
raid2p1 = make_partition(model, raid2, preserve=True)
self.assertActionPossible(raid2, DeviceAction.REFORMAT)
model.add_volgroup('vg1', {raid2p1})
self.assertActionNotPossible(raid2, DeviceAction.REFORMAT)
raid3 = make_raid(model)
model.add_volgroup('vg2', {raid3})
self.assertActionNotPossible(raid3, DeviceAction.REFORMAT)
raid4 = make_raid(model)
raid4.preserve = True
model.add_volgroup('vg2', {raid4})
self.assertActionNotPossible(raid4, DeviceAction.REFORMAT)
def test_raid_action_PARTITION(self): def test_raid_action_PARTITION(self):
model, raid = make_model_and_raid() model, raid = make_model_and_raid()

View File

@ -330,6 +330,7 @@ class DeviceList(WidgetWrap):
_raid_EDIT = _stretchy_shower(RaidStretchy) _raid_EDIT = _stretchy_shower(RaidStretchy)
_raid_PARTITION = _disk_PARTITION _raid_PARTITION = _disk_PARTITION
_raid_FORMAT = _disk_FORMAT _raid_FORMAT = _disk_FORMAT
_raid_REFORMAT = _disk_REFORMAT
_raid_REMOVE = _disk_REMOVE _raid_REMOVE = _disk_REMOVE
_raid_DELETE = _partition_DELETE _raid_DELETE = _partition_DELETE