[blivet:master 10/26] Add a has_redundancy method that returns True if there is actual redundancy

mulhern amulhern at redhat.com
Thu May 29 18:47:28 UTC 2014


Some RAID levels, e.g., 0, don't actually have any redundancy.

Signed-off-by: mulhern <amulhern at redhat.com>
---
 blivet/devicelibs/raid.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/blivet/devicelibs/raid.py b/blivet/devicelibs/raid.py
index 0964b92..2a9561f 100644
--- a/blivet/devicelibs/raid.py
+++ b/blivet/devicelibs/raid.py
@@ -46,6 +46,8 @@ class RAIDLevel(object):
     names = abc.abstractproperty(doc="List of recognized names for this level.")
     min_members = abc.abstractproperty(doc=
        "The minimum number of members required to make a fully functioning array.")
+    has_redundancy = abc.abstractproperty(doc=
+       "Whether this RAID level incorporates inherent redundancy.")
 
     def __str__(self):
         return self.name
@@ -337,6 +339,7 @@ class RAID0(RAIDn):
     level = property(lambda s: "0")
     min_members = property(lambda s: 2)
     nick = property(lambda s: "stripe")
+    has_redundancy = property(lambda s: False)
 
     def _get_max_spares(self, member_count):
         return 0
@@ -360,6 +363,7 @@ class RAID1(RAIDn):
     level = property(lambda s: "1")
     min_members = property(lambda s: 2)
     nick = property(lambda s: "mirror")
+    has_redundancy = property(lambda s: True)
 
     def _get_max_spares(self, member_count):
         return member_count - self.min_members
@@ -383,6 +387,7 @@ class RAID4(RAIDn):
     level = property(lambda s: "4")
     min_members = property(lambda s: 3)
     nick = property(lambda s: None)
+    has_redundancy = property(lambda s: True)
 
     def _get_max_spares(self, member_count):
         return member_count - self.min_members
@@ -406,6 +411,7 @@ class RAID5(RAIDn):
     level = property(lambda s: "5")
     min_members = property(lambda s: 3)
     nick = property(lambda s: None)
+    has_redundancy = property(lambda s: True)
 
     def _get_max_spares(self, member_count):
         return member_count - self.min_members
@@ -429,6 +435,7 @@ class RAID6(RAIDn):
     level = property(lambda s: "6")
     min_members = property(lambda s: 4)
     nick = property(lambda s: None)
+    has_redundancy = property(lambda s: True)
 
     def _get_max_spares(self, member_count):
         return member_count - self.min_members
@@ -452,6 +459,7 @@ class RAID10(RAIDn):
     level = property(lambda s: "10")
     min_members = property(lambda s: 4)
     nick = property(lambda s: None)
+    has_redundancy = property(lambda s: True)
 
     def _get_max_spares(self, member_count):
         return member_count - self.min_members
@@ -475,6 +483,8 @@ class Container(RAIDLevel):
     name = "container"
     names = [name]
     min_members = 1
+    has_redundancy = property(lambda s: False)
+
     def get_max_spares(self, member_count):
         # pylint: disable=unused-argument
         raise RaidError("get_max_spares is not defined for level container")
@@ -500,6 +510,7 @@ class ErsatzRAID(RAIDLevel):
         distinct subclasses which have different names.
     """
     min_members = 1
+    has_redundancy = property(lambda s: False)
 
     def get_max_spares(self, member_count):
         return member_count - self.min_members
-- 
1.8.3.1



More information about the anaconda-patches mailing list