[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