[anaconda] Make anaconda changes necessary for libblockdev s390 plugin.
Samantha N. Bueno
sbueno+anaconda at redhat.com
Wed May 20 02:30:13 UTC 2015
---
pyanaconda/anaconda.py | 10 ++++++++++
pyanaconda/ui/gui/spokes/advstorage/dasd.py | 9 +++++----
pyanaconda/ui/gui/spokes/advstorage/zfcp.py | 11 ++++++-----
pyanaconda/ui/gui/spokes/lib/dasdfmt.py | 11 +++++------
pyanaconda/ui/gui/spokes/storage.py | 12 ++++++------
pyanaconda/ui/tui/spokes/storage.py | 17 +++++++++--------
6 files changed, 41 insertions(+), 29 deletions(-)
diff --git a/pyanaconda/anaconda.py b/pyanaconda/anaconda.py
index cb4138d..896aae7 100644
--- a/pyanaconda/anaconda.py
+++ b/pyanaconda/anaconda.py
@@ -167,11 +167,21 @@ class Anaconda(object):
def storage(self):
if not self._storage:
import blivet
+ import blivet.arch
+ from gi.repository import BlockDev as blockdev
self._storage = blivet.Blivet(ksdata=self.ksdata)
if self.instClass.defaultFS:
self._storage.setDefaultFSType(self.instClass.defaultFS)
+ if blivet.arch.isS390():
+ # want to make sure s390 plugin is loaded
+ if "s390" not in blockdev.get_available_plugin_names():
+ plugin = blockdev.PluginSpec()
+ plugin.name = blockdev.Plugin.S390
+ plugin.so_name = None
+ blockdev.reinit([plugin], reload=False)
+
return self._storage
def dumpState(self):
diff --git a/pyanaconda/ui/gui/spokes/advstorage/dasd.py b/pyanaconda/ui/gui/spokes/advstorage/dasd.py
index 88e1a01..61fe5e5 100644
--- a/pyanaconda/ui/gui/spokes/advstorage/dasd.py
+++ b/pyanaconda/ui/gui/spokes/advstorage/dasd.py
@@ -21,6 +21,7 @@
from pyanaconda.ui.gui import GUIObject
from pyanaconda.ui.gui.utils import gtk_action_nowait
+from gi.repository import BlockDev as blockdev
from blivet.devicelibs.dasd import sanitize_dasd_dev_input, online_dasd
@@ -83,7 +84,7 @@ class DASDDialog(GUIObject):
self._conditionNotebook.set_current_page(1)
try:
- device = sanitize_dasd_dev_input(self._deviceEntry.get_text())
+ device = blockdev.s390.sanitize_dev_input(self._deviceEntry.get_text())
except ValueError as e:
_config_error = str(e)
self.builder.get_object("deviceErrorLabel").set_text(_config_error)
@@ -126,8 +127,8 @@ class DASDDialog(GUIObject):
"""
# attempt to add the device
try:
- online_dasd(device)
+ blockdev.s390.dasd_online(device)
self._update_devicetree = True
- except ValueError as e:
- self._discoveryError = str(e)
+ except blockdev.S390Error as err:
+ self._discoveryError = str(err)
return
diff --git a/pyanaconda/ui/gui/spokes/advstorage/zfcp.py b/pyanaconda/ui/gui/spokes/advstorage/zfcp.py
index 0674b1f..d974474 100644
--- a/pyanaconda/ui/gui/spokes/advstorage/zfcp.py
+++ b/pyanaconda/ui/gui/spokes/advstorage/zfcp.py
@@ -21,6 +21,7 @@
from pyanaconda.ui.gui import GUIObject
from pyanaconda.ui.gui.utils import gtk_action_nowait
+from gi.repository import BlockDev as blockdev
from blivet.zfcp import ZFCPDevice
@@ -96,11 +97,11 @@ class ZFCPDialog(GUIObject):
# below really, really is ugly and needs to be re-factored, but this
# should give a good base idea as far as expected behavior should go
try:
- device = dev.sanitizeDeviceInput(self._deviceEntry.get_text())
- wwpn = dev.sanitizeWWPNInput(self._wwpnEntry.get_text())
- lun = dev.sanitizeFCPLInput(self._lunEntry.get_text())
- except ValueError as e:
- _config_error = str(e)
+ device = blockdev.s390.sanitize_dev_input(self._deviceEntry.get_text())
+ wwpn = blockdev.s390.zfcp_sanitize_wwpn_input(self._wwpnEntry.get_text())
+ lun = blockdev.s390.zfcp_sanitize_lun_input(self._lunEntry.get_text())
+ except blockdev.S390Error as err:
+ _config_error = str(err)
self.builder.get_object("deviceErrorLabel").set_text(_config_error)
self._conditionNotebook.set_current_page(2)
diff --git a/pyanaconda/ui/gui/spokes/lib/dasdfmt.py b/pyanaconda/ui/gui/spokes/lib/dasdfmt.py
index 1b94705..4a5c789 100644
--- a/pyanaconda/ui/gui/spokes/lib/dasdfmt.py
+++ b/pyanaconda/ui/gui/spokes/lib/dasdfmt.py
@@ -27,8 +27,7 @@ from pyanaconda import constants
from pyanaconda.i18n import _
import threading
-from blivet.devicelibs.dasd import format_dasd
-from blivet.errors import DasdFormatError
+from gi.repository import BlockDev as blockdev
import logging
log = logging.getLogger("anaconda")
@@ -55,7 +54,7 @@ class DasdFormatDialog(GUIObject):
self._hub_label = self.builder.get_object("returnToHubLabel1")
if len(self.to_format) > 0:
- self._unformatted_label.set_text("\n".join("/dev/" + d for d in to_format))
+ self._unformatted_label.set_text("\n".join("/dev/" + d.name for d in to_format))
else:
self._unformatted_label.set_text("")
@@ -89,9 +88,9 @@ class DasdFormatDialog(GUIObject):
""" Loop through our disks and run dasdfmt against them. """
for disk in self.to_format:
try:
- gtk_call_once(self._formatting_label.set_text, _("Formatting /dev/%s. This may take a moment.") % disk)
- format_dasd(disk)
- except DasdFormatError as err:
+ gtk_call_once(self._formatting_label.set_text, _("Formatting /dev/%s. This may take a moment.") % disk.name)
+ blockdev.s390.format_dasd(disk.name)
+ except blockdev.S390Error as err:
# Log errors if formatting fails, but don't halt the installer
log.error(str(err))
continue
diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py
index 3cba326..8e4e841 100644
--- a/pyanaconda/ui/gui/spokes/storage.py
+++ b/pyanaconda/ui/gui/spokes/storage.py
@@ -40,6 +40,7 @@
"""
from gi.repository import Gdk, GLib, AnacondaWidgets
+from gi.repository import BlockDev as blockdev
from pyanaconda.ui.communication import hubQ
from pyanaconda.ui.lib.disks import getDisks, isLocalDisk, applyDiskSelection
@@ -59,9 +60,8 @@ from blivet import arch
from blivet import autopart
from blivet.size import Size
from blivet.devices import MultipathDevice, ZFCPDiskDevice
-from blivet.errors import StorageError, DasdFormatError
+from blivet.errors import StorageError
from blivet.platform import platform
-from blivet.devicelibs.dasd import make_unformatted_dasd_list, format_dasd
from pyanaconda.threads import threadMgr, AnacondaThread
from pyanaconda.product import productName
from pyanaconda.flags import flags
@@ -664,7 +664,7 @@ class StorageSpoke(NormalSpoke, StorageChecker):
# actions on storage devices
threadMgr.wait(constants.THREAD_STORAGE)
- to_format = make_unformatted_dasd_list(d.name for d in getDisks(self.storage.devicetree))
+ to_format = self.storage.devicetree.make_unformatted_dasd_list(d for d in getDisks(self.storage.devicetree))
if not to_format:
# nothing to do here; bail
return
@@ -672,8 +672,8 @@ class StorageSpoke(NormalSpoke, StorageChecker):
hubQ.send_message(self.__class__.__name__, _("Formatting DASDs"))
for disk in to_format:
try:
- format_dasd(disk)
- except DasdFormatError as err:
+ blockdev.s390.dasd_format(disk)
+ except blockdev.S390Error as err:
# Log errors if formatting fails, but don't halt the installer
log.error(str(err))
continue
@@ -774,7 +774,7 @@ class StorageSpoke(NormalSpoke, StorageChecker):
if arch.isS390():
# check for unformatted DASDs and launch dasdfmt if any discovered
- dasds = make_unformatted_dasd_list(self.selected_disks)
+ dasds = self.storage.devicetree.make_unformatted_dasd_list(disks)
if len(dasds) > 0:
# We want to apply current selection before running dasdfmt to
# prevent this information from being lost afterward
diff --git a/pyanaconda/ui/tui/spokes/storage.py b/pyanaconda/ui/tui/spokes/storage.py
index 1c7b600..210a8df 100644
--- a/pyanaconda/ui/tui/spokes/storage.py
+++ b/pyanaconda/ui/tui/spokes/storage.py
@@ -31,9 +31,9 @@ from pyanaconda.storage_utils import AUTOPART_CHOICES, sanity_check, SanityError
from blivet import arch
from blivet.size import Size
-from blivet.errors import StorageError, DasdFormatError
+from blivet.errors import StorageError
from blivet.devices import DASDDevice, FcoeDiskDevice, iScsiDiskDevice, MultipathDevice, ZFCPDiskDevice
-from blivet.devicelibs.dasd import format_dasd, make_unformatted_dasd_list
+from gi.repository import BlockDev as blockdev
from pyanaconda.flags import flags
from pyanaconda.kickstart import doKickstartStorage, resetCustomStorageData
from pyanaconda.threads import threadMgr, AnacondaThread
@@ -89,7 +89,7 @@ class StorageSpoke(NormalTUISpoke):
# dasds, automatically format them. pass in storage.devicetree here
# instead of storage.disks since mediaPresent is checked on disks;
# a dasd needing dasdfmt will fail this media check though
- to_format = make_unformatted_dasd_list(d.name for d in getDisks(self.storage.devicetree))
+ to_format = storage.devicetree.make_unformatted_dasd_list(getDisks(self.storage.devicetree))
if to_format:
self.run_dasdfmt(to_format)
@@ -276,7 +276,8 @@ class StorageSpoke(NormalTUISpoke):
# if we're on s390x, since they need to be formatted before we
# can use them.
if arch.isS390():
- to_format = make_unformatted_dasd_list(self.selected_disks)
+ _disks = [d for d in self.disks if d.name in self.selected_disks]
+ to_format = self.storage.devicetree.make_unformatted_dasd_list(_disks)
if to_format:
self.run_dasdfmt(to_format)
return None
@@ -308,7 +309,7 @@ class StorageSpoke(NormalTUISpoke):
warntext = _("Warning: All storage changes made using the installer will be lost when you choose to format.\n\nProceed to run dasdfmt?\n")
- displaytext = summary + "\n".join("/dev/" + d for d in to_format) + "\n" + warntext
+ displaytext = summary + "\n".join("/dev/" + d.name for d in to_format) + "\n" + warntext
# now show actual prompt; note -- in cmdline mode, auto-answer for
# this is 'no', so unformatted DASDs will remain so unless zerombr
@@ -321,9 +322,9 @@ class StorageSpoke(NormalTUISpoke):
for disk in to_format:
try:
- print(_("Formatting /dev/%s. This may take a moment.") % disk)
- format_dasd(disk)
- except DasdFormatError as err:
+ print(_("Formatting /dev/%s. This may take a moment.") % disk.name)
+ blockdev.s390_dasd_format(disk.name)
+ except blockdev.S390Error as err:
# Log errors if formatting fails, but don't halt the installer
log.error(str(err))
continue
--
1.9.3
More information about the anaconda-patches
mailing list