diff options
author | Jeremy Katz <katzj@redhat.com> | 2001-06-21 19:07:45 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2001-06-21 19:07:45 +0000 |
commit | 677d07d2e696e04ba3dc6c7b31d93348f62e115b (patch) | |
tree | d79ac28f83ba03692a9f07794bded0a4890372e6 | |
parent | 9118a73a77c03164492f7ad9c0f98ac4c7ee86dc (diff) | |
download | anaconda-677d07d2e696e04ba3dc6c7b31d93348f62e115b.tar.gz anaconda-677d07d2e696e04ba3dc6c7b31d93348f62e115b.tar.xz anaconda-677d07d2e696e04ba3dc6c7b31d93348f62e115b.zip |
select raid partitions already used
-rw-r--r-- | iw/partition_gui.py | 20 | ||||
-rw-r--r-- | partitioning.py | 15 | ||||
-rw-r--r-- | textw/partition_text.py | 26 |
3 files changed, 31 insertions, 30 deletions
diff --git a/iw/partition_gui.py b/iw/partition_gui.py index a00140456..9ba9431e8 100644 --- a/iw/partition_gui.py +++ b/iw/partition_gui.py @@ -345,17 +345,11 @@ def createAllowedRaidPartitionsClist(allraidparts, reqraidpart): partclist.set_selection_mode (SELECTION_MULTIPLE) partrow = 0 - for part in allraidparts: + for (part, used) in allraidparts: partname = get_partition_name(part) partclist.append((partname,)) - if reqraidpart: - for member in reqraidpart: - mempart = member.partition - if partname == get_partition_name(mempart): - partclist.select_row(partrow, 0) - break - else: + if used or not reqraidpart: partclist.select_row(partrow, 0) partrow = partrow + 1 @@ -999,13 +993,9 @@ class PartitionWindow(InstallWindow): row = 0 availraidparts = get_available_raid_partitions(self.diskset, - self.partitions.requests) + self.partitions.requests, + raidrequest) - # add in partitions we're currently using - if raidrequest.raidmembers: - for member in raidrequest.raidmembers: - availraidparts.append(member.partition) - # Mount Point entry maintable.attach(createAlignedLabel(_("Mount Point:")), 0, 1, row, row + 1) @@ -1110,7 +1100,7 @@ class PartitionWindow(InstallWindow): raidmembers = [] for i in raidclist.selection: - raidmembers.append(PartedPartitionDevice(availraidparts[i])) + raidmembers.append(PartedPartitionDevice(availraidparts[i][0])) request.raidmembers = raidmembers request.raidspares = sparesb.get_value_as_int() diff --git a/partitioning.py b/partitioning.py index d7180cce6..1f10c919d 100644 --- a/partitioning.py +++ b/partitioning.py @@ -139,8 +139,9 @@ def get_raid_devices(requests): return raidRequests -# returns a list of raid partitions which haven't been used in a device yet -def get_available_raid_partitions(diskset, requests): +# returns a list of tuples of raid partitions which can be used or are used +# with whether they're used (0 if not, 1 if so) eg (part, used) +def get_available_raid_partitions(diskset, requests, request): rc = [] drives = diskset.disks.keys() raiddevs = get_raid_devices(requests) @@ -153,15 +154,21 @@ def get_available_raid_partitions(diskset, requests): if raid.raidmembers: for raidmem in raid.raidmembers: if get_partition_name(part) == get_partition_name(raidmem.partition): - used = 1 + if raid.device == request.device: + used = 2 + else: + used = 1 break if used: break if not used: - rc.append(part) + rc.append((part, 0)) + elif used == 2: + rc.append((part, 1)) return rc + # return minimum numer of raid members required for a raid level def get_raid_min_members(raidlevel): if raidlevel == "RAID0": diff --git a/textw/partition_text.py b/textw/partition_text.py index 907067db1..176efd9c3 100644 --- a/textw/partition_text.py +++ b/textw/partition_text.py @@ -335,14 +335,14 @@ class PartitionWindow: subgrid.setField(driveLbl, 0, 0) disks = self.diskset.disks.keys() drivelist = CheckboxTree(height=2, scroll=1) - avail = [] - for disk in disks: - for part in get_raid_partitions(self.diskset.disks[disk]): - name = get_partition_name(part) - if request.raidmembers and name in request.raidmembers: - drivelist.append(name, part, selected = 1) - else: - drivelist.append(name, part, selected = 0) + avail = get_available_raid_partitions(self.diskset, self.partitions.requests, request) + # XXX + if not request.raidmembers: + for (part, used) in avail: + drivelist.append(get_partition_name(part), part, 1) + else: + for (part, used) in avail: + drivelist.append(get_partition_name(part), part, used) subgrid.setField(drivelist, 0, 1) return (drivelist, subgrid) @@ -657,14 +657,18 @@ class PartitionWindow: ButtonChoiceWindow(self.screen, _("Unable to Remove"), _("You must first select a partition"), buttons = [ TEXT_OK_BUTTON ] ) - return - if partition.type & parted.PARTITION_FREESPACE: + return + elif type(partition) == type("RAID"): + device = partition + elif partition.type & parted.PARTITION_FREESPACE: ButtonChoiceWindow(self.screen, _("Unable to Remove"), _("You cannot remove freespace"), buttons = [ TEXT_OK_BUTTON ] ) return + else: + device = get_partition_name(partition) - request = self.partitions.getRequestByDeviceName(get_partition_name(partition)) + request = self.partitions.getRequestByDeviceName(device) if request: self.partitions.removeRequest(request) |