[PATCH 3/4] Refactor out the code doing device reformat into a function
Vratislav Podzimek
vpodzime at redhat.com
Tue Apr 8 13:57:07 UTC 2014
In order to make the _save_right_side method shorter and less complex.
Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
pyanaconda/ui/gui/spokes/custom.py | 103 ++++++++++++++++++++-----------------
1 file changed, 56 insertions(+), 47 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py
index 88a300f..b87158b 100644
--- a/pyanaconda/ui/gui/spokes/custom.py
+++ b/pyanaconda/ui/gui/spokes/custom.py
@@ -774,6 +774,57 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
# possibly changed device and old_device, need to return the new ones
return (device, old_device)
+ def _do_reformat(self, device, mountpoint, label, changed_encryption,
+ encrypted, selector, fs_type):
+ self.clear_errors()
+ #
+ # ENCRYPTION
+ #
+ old_device = None
+ if changed_encryption:
+ device, old_device = self._handle_encryption_change(encrypted,
+ device, old_device, selector)
+ #
+ # FORMATTING
+ #
+ log.info("scheduling reformat of %s as %s", device.name, fs_type)
+ with ui_storage_logger():
+ old_format = device.format
+ new_format = getFormat(fs_type,
+ mountpoint=mountpoint, label=label,
+ device=device.path)
+ try:
+ self._storage_playground.formatDevice(device, new_format)
+ except StorageError as e:
+ log.error("failed to register device format action: %s", e)
+ device.format = old_format
+ self._error = e
+ self.set_warning(_("Device reformat request failed. "
+ "Click for details."))
+ self.window.show_all()
+ else:
+ # first, remove this selector from any old install page(s)
+ new_selector = None
+ for (page, _selector) in self._accordion.allMembers:
+ if _selector.device in (device, old_device):
+ if page.pageTitle == translated_new_install_name():
+ new_selector = _selector
+ continue
+
+ page.removeSelector(_selector)
+ if not page.members:
+ log.debug("removing empty page %s", page.pageTitle)
+ self._accordion.removePage(page.pageTitle)
+
+ # either update the existing selector or add a new one
+ if new_selector:
+ updateSelectorFromDevice(new_selector, device)
+ else:
+ self.add_new_selector(device)
+
+ # possibly changed device, need to return the new one
+ return device
+
def _save_right_side(self, selector):
""" Save settings from RHS and apply changes to the device.
@@ -1069,54 +1120,12 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
do_reformat = (reformat and (changed_encryption or
changed_fs_type or
device.format.exists))
- if do_reformat:
- self.clear_errors()
- #
- # ENCRYPTION
- #
- old_device = None
- if changed_encryption:
- device, old_device = self._handle_encryption_change(encrypted,
- device, old_device, selector)
- #
- # FORMATTING
- #
- log.info("scheduling reformat of %s as %s", device.name, fs_type)
- with ui_storage_logger():
- old_format = device.format
- new_format = getFormat(fs_type,
- mountpoint=mountpoint, label=label,
- device=device.path)
- try:
- self._storage_playground.formatDevice(device, new_format)
- except StorageError as e:
- log.error("failed to register device format action: %s", e)
- device.format = old_format
- self._error = e
- self.set_warning(_("Device reformat request failed. "
- "Click for details."))
- self.window.show_all()
- else:
- # first, remove this selector from any old install page(s)
- new_selector = None
- for (page, _selector) in self._accordion.allMembers:
- if _selector.device in (device, old_device):
- if page.pageTitle == translated_new_install_name():
- new_selector = _selector
- continue
-
- page.removeSelector(_selector)
- if not page.members:
- log.debug("removing empty page %s", page.pageTitle)
- self._accordion.removePage(page.pageTitle)
-
- # either update the existing selector or add a new one
- if new_selector:
- updateSelectorFromDevice(new_selector, device)
- else:
- self.add_new_selector(device)
- if not do_reformat:
+ # Handle reformat
+ if do_reformat:
+ device = self._do_reformat(device, mountpoint, label, changed_encryption,
+ encrypted, selector, fs_type)
+ else:
# Set various attributes that do not require actions.
if old_label != label and hasattr(device.format, "label") and \
validate_label(label, device.format) == "":
--
1.9.0
More information about the anaconda-patches
mailing list