From 6e34d491e5f930af42a407bd3ef9d16553bf7ee4 Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Mon, 23 Aug 2021 15:14:49 +0200 Subject: [PATCH 1/2] pylint: Ignore false positive assignment-from-no-return warning --- blivetgui/communication/proxy_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blivetgui/communication/proxy_utils.py b/blivetgui/communication/proxy_utils.py index 4888e2b..ec822e4 100644 --- a/blivetgui/communication/proxy_utils.py +++ b/blivetgui/communication/proxy_utils.py @@ -59,7 +59,7 @@ class ProxyID(object): _newid_gen = functools.partial(next, itertools.count()) def __init__(self): - self.id = self._newid_gen() + self.id = self._newid_gen() # pylint: disable=assignment-from-no-return def __repr__(self): return "'Proxy ID, %s'" % self.id From dec1f8d481c19eeed91b6f740cdcbcb9487daf21 Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Mon, 23 Aug 2021 15:15:16 +0200 Subject: [PATCH 2/2] Do not allow setting chunk size for RAID 1 (#1996223) RAID 1 doesn't support chunk size, we shouldn't allow to set it in the UI and also stop to set the default 512 KiB. See also https://github.com/storaged-project/blivet/pull/969 --- blivetgui/blivet_utils.py | 6 +++++- blivetgui/dialogs/add_dialog.py | 15 ++++++++++++--- tests/blivetgui_tests/add_dialog_test.py | 12 ++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/blivetgui/blivet_utils.py b/blivetgui/blivet_utils.py index aa2b72f..6fe99a7 100644 --- a/blivetgui/blivet_utils.py +++ b/blivetgui/blivet_utils.py @@ -1209,12 +1209,16 @@ def _create_mdraid(self, user_input): actions.extend(part_actions) md_parents = [ac.device for ac in actions if ac.is_format and ac._format.type == "mdmember"] + if user_input.advanced: + chunk_size = user_input.advanced["chunk_size"] + else: + chunk_size = None new_md = MDRaidArrayDevice(parents=md_parents, name=device_name, level=user_input.raid_level, member_devices=len(md_parents), total_devices=len(md_parents), - chunk_size=user_input.advanced["chunk_size"]) + chunk_size=chunk_size) actions.append(blivet.deviceaction.ActionCreateDevice(new_md)) if user_input.encrypt: diff --git a/blivetgui/dialogs/add_dialog.py b/blivetgui/dialogs/add_dialog.py index 2cb437d..81da95c 100644 --- a/blivetgui/dialogs/add_dialog.py +++ b/blivetgui/dialogs/add_dialog.py @@ -489,6 +489,10 @@ def update_raid_type_chooser(self, keep_selection=False): def on_raid_type_changed(self, _widget): self.add_size_area() + if self.selected_type == "mdraid": + self.add_advanced_options() + self.show_widgets(["advanced"]) + def select_selected_free_region(self): """ In parent list select the free region user selected checkbox as checked """ @@ -859,10 +863,15 @@ def add_advanced_options(self): self.advanced.destroy() if device_type in ("lvm", "lvmvg", "partition", "mdraid"): - self.advanced = AdvancedOptions(self, device_type, self.selected_parent, self.selected_free) - self.widgets_dict["advanced"] = [self.advanced] + if device_type == "mdraid" and self._raid_chooser.selected_level.name == "raid1": + self.advanced = None + self.widgets_dict["advanced"] = [] + else: + self.advanced = AdvancedOptions(self, device_type, self.selected_parent, + self.selected_free) + self.widgets_dict["advanced"] = [self.advanced] - self.grid.attach(self.advanced.expander, 0, 15, 6, 1) + self.grid.attach(self.advanced.expander, 0, 15, 6, 1) else: self.advanced = None diff --git a/tests/blivetgui_tests/add_dialog_test.py b/tests/blivetgui_tests/add_dialog_test.py index 4a53ca5..9d1b3e6 100644 --- a/tests/blivetgui_tests/add_dialog_test.py +++ b/tests/blivetgui_tests/add_dialog_test.py @@ -10,6 +10,7 @@ from blivet.size import Size from blivet import formats +from blivet.devicelibs import raid def supported_filesystems(): @@ -583,6 +584,17 @@ def test_raid_type(self): # raid0 type is selected --> we should have 2 size areas, both with max size 4 GiB (smaller free space size) self.assertEqual(add_dialog.size_area.max_size, Size("8 GiB")) + # raid0 is selected --> advanced options (chunk size) should be visible + self.assertIsNotNone(add_dialog.advanced) + + # select raid1 --> advanced options (chunk size) should be disappear + add_dialog._raid_chooser.selected_level = raid.RAID1 + self.assertIsNone(add_dialog.advanced) + + # back to raid0 just to be sure + add_dialog._raid_chooser.selected_level = raid.RAID0 + self.assertIsNotNone(add_dialog.advanced) + @patch("blivetgui.dialogs.message_dialogs.ErrorDialog", error_dialog) def test_mountpoint_validity_check(self): parent_device = self._get_parent_device()