summaryrefslogtreecommitdiffstats
path: root/partitioning.py
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2001-06-20 05:05:43 +0000
committerMatt Wilson <msw@redhat.com>2001-06-20 05:05:43 +0000
commita8c13fa4b1c43a383f5e880d057e22fc2ac5920e (patch)
treebf8245a8416dc559fa7911ded5673485910b88cd /partitioning.py
parent1161d410af4cfd34e77b63e8ac52b0c20b53d955 (diff)
downloadanaconda-a8c13fa4b1c43a383f5e880d057e22fc2ac5920e.tar.gz
anaconda-a8c13fa4b1c43a383f5e880d057e22fc2ac5920e.tar.xz
anaconda-a8c13fa4b1c43a383f5e880d057e22fc2ac5920e.zip
get final branch copies
Diffstat (limited to 'partitioning.py')
-rw-r--r--partitioning.py55
1 files changed, 53 insertions, 2 deletions
diff --git a/partitioning.py b/partitioning.py
index 57809719f..6bad67c24 100644
--- a/partitioning.py
+++ b/partitioning.py
@@ -109,7 +109,7 @@ def get_primary_partitions(disk):
return rc
-
+# returns a list of partitions which can make up RAID devices
def get_raid_partitions(disk):
rc = []
part = disk.next_partition()
@@ -124,7 +124,54 @@ def get_raid_partitions(disk):
part = disk.next_partition(part)
return rc
-
+
+
+# returns a list of the actual raid device requests
+def get_raid_devices(requests):
+ raidRequests = []
+ for request in requests:
+ if request.type == REQUEST_RAID:
+ raidRequests.append(request)
+
+ return raidRequests
+
+
+# returns a list of raid partitions which haven't been used in a device yet
+def get_available_raid_partitions(diskset, requests):
+ rc = []
+ drives = diskset.disks.keys()
+ raiddevs = get_raid_devices(requests)
+ drives.sort()
+ for drive in drives:
+ disk = diskset.disks[drive]
+ for part in get_raid_partitions(disk):
+ for raid in raiddevs:
+ if raid.raidmembers and part in raid.raidmembers:
+ break
+ rc.append(part)
+ return rc
+
+# return minimum numer of raid members required for a raid level
+def get_raid_min_members(raidlevel):
+ if raidlevel == "RAID-0":
+ return 2
+ elif raidlevel == "RAID-1":
+ return 2
+ elif raidlevel == "RAID-5":
+ return 3
+ else:
+ raise ValueError, "invalid raidlevel in get_raid_min_members"
+
+# return max num of spares available for raidlevel and total num of members
+def get_raid_max_spares(raidlevel, nummembers):
+ if raidlevel == "RAID-0":
+ return 0
+ elif raidlevel == "RAID-1":
+ return 0
+ elif raidlevel == "RAID-5":
+ return max(0, nummembers - get_raid_min_members(raidlevel))
+ else:
+ raise ValueError, "invalid raidlevel in get_raid_max_spares"
# returns error string if something not right about request
# returns error string if something not right about request
@@ -271,6 +318,10 @@ class PartitionRequests:
if diskset:
self.setFromDisk(diskset)
+ # identifier used for raid partitions
+ self.maxcontainer = 0
+
+
def setFromDisk(self, diskset):
self.deletes = []
diskset.refreshDevices()