summaryrefslogtreecommitdiffstats
path: root/textw
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2007-04-11 16:30:54 +0000
committerChris Lumens <clumens@redhat.com>2007-04-11 16:30:54 +0000
commite6f647e3909d6135fb351145bf2f1443483feaba (patch)
tree93778a1a06f2df0ea726afa416f4e21a7e169b02 /textw
parent0e5b3bfe58473f29349fcf1ccf3c3ff44cd2c27e (diff)
downloadanaconda-e6f647e3909d6135fb351145bf2f1443483feaba.tar.gz
anaconda-e6f647e3909d6135fb351145bf2f1443483feaba.tar.xz
anaconda-e6f647e3909d6135fb351145bf2f1443483feaba.zip
More intelligently assign RAID minor numbers in the text interface.
Diffstat (limited to 'textw')
-rw-r--r--textw/partition_text.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/textw/partition_text.py b/textw/partition_text.py
index 74adcf86e..fded1a191 100644
--- a/textw/partition_text.py
+++ b/textw/partition_text.py
@@ -50,6 +50,16 @@ def invalidInteger(str):
return None
class PartitionWindow:
+ def _findFirstUnused(self, dict):
+ keys = dict.keys()
+ i = 0
+
+ while True:
+ if i in keys:
+ i += 1
+ else:
+ return i
+
def populate(self):
# XXX we really should separate this stuff out into interface
# independent bits...
@@ -82,7 +92,7 @@ class PartitionWindow:
# next, add the raid partitions
- self.raidcounter = 0
+ self.raidminors = {}
raidrequests = self.partitions.getRaidRequests()
if raidrequests:
for request in raidrequests:
@@ -97,17 +107,18 @@ class PartitionWindow:
ptype = _("None")
try:
+ self.raidminors[request.raidminor] = True
device = "/dev/md%d" % (request.raidminor,)
except:
- device = _("RAID Device %s" %(str(self.raidcounter)))
-
+ minor = self._findFirstUnused(self.raidminors)
+ self.raidminors[minor] = True
+ device = _("RAID Device %s" %(str(minor)))
+
size = request.size
self.lb.append(["%s" %(device),
"", "", "%dM" %(size),
"%s" %(ptype), "%s" %(mount)], str(request.uniqueID),
[LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
- self.raidcounter += 1
-
# next, add the drives and partitions to the list
drives = self.diskset.disks.keys()
@@ -1084,7 +1095,8 @@ class PartitionWindow:
request.raidspares = int(spares.value())
request.raidlevel = raidtype.current()
- request.raidminor = self.raidcounter
+ request.raidminor = self._findFirstUnused(self.raidminors)
+ self.raidminors[request.raidminor] = True
if format:
request.format = format.selected()
@@ -1408,14 +1420,17 @@ class PartitionWindow:
self.editPartitionRequest(request, isNew = 1)
else:
self.editPartitionRequest(request)
-
+
def deleteCb(self):
partition = self.lb.current()
+ req = self.partitions.getRequestByID(partition)
+ if req and isinstance(req, RaidRequestSpec):
+ del(self.raidminors[req.raidminor])
+
if doDeletePartitionByRequest(self.intf, self.partitions, partition):
self.refresh()
-
-
+
def resetCb(self):
if not confirmResetPartitionState(self.intf):
return