* iw/lvm_dialog_gui.py (run, convertToActions): New function. Need to have a separate function so we can run it from the editLVMLogicalVolume function in iw/partition_gui.py. We call new function from run. * iw/partition_gui.py (editCB): Call the new editLVMLogicalVolume function. (editLVMLogicalVolume): New function. Serves the same purpose as editLVMVolumeGroup but for Logical Volumes. (deleteCB): All actions are created when we delete a selected LV. We do need to make sure that we delete the deleted LV from the VG that --- iw/lvm_dialog_gui.py | 4 ++++ iw/partition_gui.py | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/iw/lvm_dialog_gui.py b/iw/lvm_dialog_gui.py index e226650..8a32a8f 100644 --- a/iw/lvm_dialog_gui.py +++ b/iw/lvm_dialog_gui.py @@ -945,7 +945,9 @@ class VolumeGroupEditor: # everything ok break + return self.convertToActions() + def convertToActions(self): # here we have to figure out what all was done and convert it to # devices and actions # @@ -956,6 +958,8 @@ class VolumeGroupEditor: log.debug("finished editing vg") log.debug("pvs: %s" % [p.name for p in self.pvs]) log.debug("luks: %s" % self.luks.keys()) + volname = self.volnameEntry.get_text().strip() + pesize = int(self.peCombo.get_active_value()) / 1024.0 for lv in self.lvs.itervalues(): log.debug("lv %s" % lv) _luks = self.luks.get(lv['name']) diff --git a/iw/partition_gui.py b/iw/partition_gui.py index 5ebee3a..b16bd4b 100644 --- a/iw/partition_gui.py +++ b/iw/partition_gui.py @@ -709,7 +709,7 @@ class PartitionWindow(InstallWindow): else: self.tree[iter]['Mount Point'] = "" self.tree[iter]['Size (MB)'] = "%Ld" % lv.size - self.tree[iter]['PyObject'] = vg + self.tree[iter]['PyObject'] = lv if lv.format.type == "luks" and not lv.format.exists: # we're creating the LUKS header @@ -995,6 +995,8 @@ class PartitionWindow(InstallWindow): justRedraw = False else: justRedraw = True + if device.type == "lvmlv" and device in device.vg.lvs: + device.vg._removeLogVol(device) self.refresh(justRedraw=justRedraw) @@ -1077,7 +1079,7 @@ class PartitionWindow(InstallWindow): elif device.type == "lvmvg": self.editLVMVolumeGroup(device) elif device.type == "lvmlv": - self.editLVMVolumeGroup(device) + self.editLVMLogicalVolume(device) elif isinstance(device, storage.devices.PartitionDevice): self.editPartition(device) @@ -1171,6 +1173,34 @@ class PartitionWindow(InstallWindow): vgeditor.destroy() + def editLVMLogicalVolume (self, device): + vgeditor = lvm_dialog_gui.VolumeGroupEditor(self.anaconda, + self.intf, + self.parent, + device.vg, + isNew = 0) + while 1: + lv = vgeditor.lvs[device.lvname] + vgeditor.editLogicalVolume(lv) + actions = vgeditor.convertToActions(); + + for action in actions: + # FIXME: handle exceptions + self.storage.devicetree.registerAction(action) + + if self.refresh(justRedraw=True): + actions.reverse() + for action in actions: + self.storage.devicetree.cancelAction(action) + + if self.refresh(): + raise RuntimeError, ("Returning partitions to state " + "prior to edit failed") + continue + else: + break + + vgeditor.destroy() def makeLvmCB(self, widget): if not getFormat("lvmpv").supported or not lvm.has_lvm(): -- 1.6.4.2 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list