[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[rhel6-branch] Do not traceback on mpath errors caused by faulty hardware.
- From: Ales Kozumplik <akozumpl redhat com>
- To: anaconda-devel-list redhat com
- Subject: [rhel6-branch] Do not traceback on mpath errors caused by faulty hardware.
- Date: Thu, 30 Jun 2011 09:50:29 +0200
Resolves: rhbz#689520
---
exception.py | 8 ++++++++
installinterfacebase.py | 11 +++++++++++
storage/devices.py | 2 +-
storage/errors.py | 5 ++++-
4 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/exception.py b/exception.py
index 21c9c6b..c9a2d18 100644
--- a/exception.py
+++ b/exception.py
@@ -30,11 +30,19 @@ import shutil
import signal
from flags import flags
import kickstart
+import storage.errors
import logging
log = logging.getLogger("anaconda")
class AnacondaExceptionHandler(ExceptionHandler):
+ def handleException(self, (ty, value, tb), obj):
+ if issubclass(ty, storage.errors.StorageError) and value.hardware_fault:
+ self.intf.hardwareError(value)
+ else:
+ super(AnacondaExceptionHandler, self).handleException((ty, value, tb),
+ obj)
+
def postWriteHook(self, (ty, value, tb), anaconda):
# See if /mnt/sysimage is present and put exception there as well
if os.access("/mnt/sysimage/root", os.X_OK):
diff --git a/installinterfacebase.py b/installinterfacebase.py
index 71cb9cb..d4f20fa 100644
--- a/installinterfacebase.py
+++ b/installinterfacebase.py
@@ -97,3 +97,14 @@ class InstallInterfaceBase(object):
custom_icon=icon,
custom_buttons=buttons,
expanded=True)
+
+ def hardwareError(self, exception):
+ text=_("The installation was stopped due to what seems to be a problem "
+ "with your hardware. The exact error message is:\n\n%s.\n\n "
+ "The installer will now terminate.") % str(exception)
+ self.messageWindow(title=_("Hardware Error Encountered"),
+ text=text,
+ type="custom",
+ custom_icon="error",
+ custom_buttons=[_("_Exit installer")])
+ sys.exit(0)
diff --git a/storage/devices.py b/storage/devices.py
index a89de06..88741c1 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -3382,7 +3382,7 @@ class MultipathDevice(DMDevice):
stderr = "/dev/tty5")
if rc:
raise MPathError("multipath activation failed for '%s'" %
- self.name)
+ self.name, hardware_fault=True)
udev_settle()
self.setupPartitions()
udev_settle()
diff --git a/storage/errors.py b/storage/errors.py
index 1d1fea0..f8d2d09 100644
--- a/storage/errors.py
+++ b/storage/errors.py
@@ -21,7 +21,10 @@
#
class StorageError(Exception):
- pass
+ def __init__(self, *args, **kwargs):
+ hardware_fault = kwargs.pop("hardware_fault", False)
+ self.hardware_fault = hardware_fault
+ super(StorageError, self).__init__(*args, **kwargs)
# Device
class DeviceError(StorageError):
--
1.7.5.4
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]