[blivet:master 07/16] Add get_max_spares device to Container class

mulhern amulhern at redhat.com
Tue May 6 16:42:32 UTC 2014


Make it raise an exception, but catch and rethrow possible
exception in _setSpares().

Signed-off-by: mulhern <amulhern at redhat.com>
---
 blivet/devicelibs/raid.py | 2 ++
 blivet/devices.py         | 5 ++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/blivet/devicelibs/raid.py b/blivet/devicelibs/raid.py
index 4a13340..e30b223 100644
--- a/blivet/devicelibs/raid.py
+++ b/blivet/devicelibs/raid.py
@@ -464,6 +464,8 @@ class Container(object):
     name = "container"
     names = [name]
     min_members = 1
+    def get_max_spares(self, member_count):
+        raise RaidError("get_max_spares is not defined for level container")
     def get_recommended_stride(self, member_devices):
         raise RaidError("get_recommended_stride is not defined for level container")
     def get_size(self, member_sizes, num_members=None, chunk_size=None, superblock_size_func=None):
diff --git a/blivet/devices.py b/blivet/devices.py
index 652f8ea..95880db 100644
--- a/blivet/devices.py
+++ b/blivet/devices.py
@@ -3362,7 +3362,10 @@ class MDRaidArrayDevice(ContainerDevice):
         return spares
 
     def _setSpares(self, spares):
-        max_spares = self.level.get_max_spares(len(self.parents))
+        try:
+            max_spares = self.level.get_max_spares(len(self.parents))
+        except errors.RaidError as e:
+            raise errors.DeviceError("unable to set spares for device %s: %s" % (self.name, e))
         if spares > max_spares:
             log.debug("failed to set new spares value %d (max is %d)",
                       spares, max_spares)
-- 
1.8.3.1



More information about the anaconda-patches mailing list