diff options
author | Jeremy Katz <katzj@redhat.com> | 2002-06-11 04:58:23 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2002-06-11 04:58:23 +0000 |
commit | bf78e7a6e550b497be71bf8e539a12c263c84074 (patch) | |
tree | 64b9bc093c63620dbd5b1096a0fba8cb6719068d /partitions.py | |
parent | 8ab1f11ec4e0aa5899d9078c0415429ef6f06932 (diff) | |
download | anaconda-bf78e7a6e550b497be71bf8e539a12c263c84074.tar.gz anaconda-bf78e7a6e550b497be71bf8e539a12c263c84074.tar.xz anaconda-bf78e7a6e550b497be71bf8e539a12c263c84074.zip |
move autopart.doClearDependentDevices to Partitions().deleteDependentRequests() and fix a few cases that weren't quite handled right
Diffstat (limited to 'partitions.py')
-rw-r--r-- | partitions.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/partitions.py b/partitions.py index 100ea4080..69e31d6ad 100644 --- a/partitions.py +++ b/partitions.py @@ -988,3 +988,48 @@ class Partitions: lvm.vgremove(delete.name) lvm.vgdeactivate() + + + def deleteDependentRequests(self, request): + """Handle deletion of this request and all requests which depend on it. + + eg, delete all logical volumes from a volume group, all volume groups + which depend on the raid device. + + Side effects: removes all dependent requests from self.requests + adds needed dependent deletes to self.deletes + """ + + toRemove = [] + id = request.uniqueID + for req in self.requests: + if isinstance(req, partRequests.RaidRequestSpec): + if id in req.raidmembers: + toRemove.append(req) + # XXX do we need to do anything special with preexisting raids? + elif isinstance(req, partRequests.VolumeGroupRequestSpec): + if id in req.physicalVolumes: + toRemove.append(req) + if req.getPreExisting(): + delete = partRequests.DeleteVolumeGroupSpec(req.volumeGroupName) + self.addDelete(delete) + elif isinstance(req, partRequests.LogicalVolumeRequestSpec): + if id == req.volumeGroup: + toRemove.append(req) + tmp = self.getRequestByID(req.volumeGroup) + if not tmp: + log("Unable to find the vg for %s" + % (req.logicalVolumeName,)) + vgname = req.volumeGroup + else: + vgname = tmp.volumeGroupName + + if req.getPreExisting(): + delete = partRequests.DeleteLogicalVolumeSpec(req.logicalVolumeName, + vgname) + self.addDelete(delete) + + for req in toRemove: + self.deleteDependentRequests(req) + self.removeRequest(req) + |