summaryrefslogtreecommitdiffstats
path: root/iw/partition_gui.py
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2002-01-24 22:03:36 +0000
committerJeremy Katz <katzj@redhat.com>2002-01-24 22:03:36 +0000
commit163295099651a6aa71e8fbd5dfef4267242939d3 (patch)
tree0f23165959c3c3faaeba87dafd00c3675ad3d0f3 /iw/partition_gui.py
parentc827f3b84cbc3305eb23a9ddbd63d1fd06faaa8c (diff)
downloadanaconda-163295099651a6aa71e8fbd5dfef4267242939d3.tar.gz
anaconda-163295099651a6aa71e8fbd5dfef4267242939d3.tar.xz
anaconda-163295099651a6aa71e8fbd5dfef4267242939d3.zip
skeleton LVM code so that msf can start working on the real gui. doesn't
actually create the volumes or anything yet
Diffstat (limited to 'iw/partition_gui.py')
-rw-r--r--iw/partition_gui.py141
1 files changed, 140 insertions, 1 deletions
diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index c7249d9ef..bb6664186 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -514,6 +514,26 @@ def createAllowedRaidPartitionsClist(allraidparts, reqraidpart):
return (partclist, sw)
+def createAllowedLvmPartitionsClist(alllvmparts, reqlvmpart):
+
+ partclist = gtk.CList()
+ partclist.set_selection_mode(gtk.SELECTION_MULTIPLE)
+ partclist.set_size_request(-1, 95)
+ sw = gtk.ScrolledWindow()
+ sw.add(partclist)
+ sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+
+ partrow = 0
+ for part, size, used in alllvmparts:
+ partname = "%s: %8.0f MB" % (part, size)
+ partclist.append((partname,))
+
+ if used or not reqlvmpart:
+ partclist.select_row(partrow, 0)
+ partrow = partrow + 1
+
+ return (partclist, sw)
+
def createRaidLevelMenu(levels, reqlevel, raidlevelchangeCB, sparesb):
leveloption = gtk.OptionMenu()
leveloptionmenu = gtk.Menu()
@@ -1641,6 +1661,124 @@ class PartitionWindow(InstallWindow):
dialog.destroy()
+ def addLogicalVolume(self, widget):
+ dialog = gtk.Dialog(_("Make Logical Volume"), self.parent)
+ dialog.add_button('gtk-ok', 1)
+ dialog.add_button('gtk-cancel', 2)
+ dialog.set_position(gtk.WIN_POS_CENTER)
+
+ maintable = gtk.Table()
+ maintable.set_row_spacings(5)
+ maintable.set_col_spacings(5)
+ row = 0
+
+ maintable.attach(createAlignedLabel(_("Mount point")), 0, 1, row, row + 1)
+ mountpointEntry = gtk.Entry(16)
+ maintable.attach(mountpointEntry, 1, 2, row, row + 1)
+
+ row = row + 1
+
+ maintable.attach(createAlignedLabel(_("Size")), 0, 1, row, row + 1)
+ sizeEntry = gtk.Entry(16)
+ maintable.attach(sizeEntry, 1, 2, row, row + 1)
+
+ dialog.vbox.pack_start(maintable)
+ dialog.show_all()
+
+ rc = dialog.run()
+ if rc == 2:
+ dialog.destroy()
+ return
+
+ # I suck. I assume the fs is ext3 because it doesn't matter
+ # for me and do no error checking :)
+ fsystem = fileSystemTypeGetDefault()
+ mntpt = mountpointEntry.get_text()
+ size = int(sizeEntry.get_text())
+
+ request = PartitionSpec(fsystem, REQUEST_LV, mountpoint = mntpt,
+ size = size)
+ self.logvolreqs.append(request)
+ self.logvollist.append((mntpt,))
+
+ dialog.destroy()
+
+ def makeLvmCB(self, widget):
+ self.logvolreqs = []
+
+ dialog = gtk.Dialog(_("Make LVM Device"), self.parent)
+ dialog.add_button('gtk-ok', 1)
+ dialog.add_button('gtk-cancel', 2)
+ dialog.set_position(gtk.WIN_POS_CENTER)
+
+ maintable = gtk.Table()
+ maintable.set_row_spacings(5)
+ maintable.set_col_spacings(5)
+ row = 0
+
+ # volume group name
+ maintable.attach(createAlignedLabel(_("Volume Name")), 0, 1, row, row + 1)
+ volnameEntry = gtk.Entry(16)
+ maintable.attach(volnameEntry, 1, 2, row, row + 1)
+
+ lvmparts = get_available_lvm_partitions(self.diskset,
+ self.partitions,
+ None)
+
+ row = row + 1
+
+ (lvmclist, sw) = createAllowedLvmPartitionsClist(lvmparts, [])
+
+ maintable.attach(createAlignedLabel(_("PVs to Use")), 0, 1, row, row + 1)
+ maintable.attach(sw, 1, 2, row, row + 1)
+ row = row + 1
+
+ # obviously this should be a treeview, but writing a clist is faster
+ self.logvollist = gtk.CList()
+ sw = gtk.ScrolledWindow()
+ sw.add(self.logvollist)
+ sw.set_size_request(100, 100)
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+ maintable.attach(sw, 1, 2, row, row + 1)
+
+ add = gtk.Button("Add Logical Volume")
+ maintable.attach(add, 0, 1, row, row + 1, gtk.EXPAND, gtk.SHRINK)
+ add.connect("clicked", self.addLogicalVolume)
+
+ row + row + 1
+
+ dialog.vbox.pack_start(maintable)
+ dialog.show_all()
+ rc = dialog.run()
+
+ pv = []
+
+ for i in lvmclist.selection:
+ print i
+ id = self.partitions.getRequestByDeviceName(lvmparts[i][0]).uniqueID
+ pv.append(id)
+
+ # first add the volume group
+ request = PartitionSpec(fileSystemTypeGet("volume group (LVM)"),
+ REQUEST_VG, physvolumes = pv)
+ self.partitions.addRequest(request)
+
+ # this is an evil hack for now. should addRequest return the id?
+ vgID = self.partitions.nextUniqueID - 1
+
+ print self.logvolreqs
+ # now add the logical volumes
+ for lv in self.logvolreqs:
+ lv.volumeGroup = vgID
+ self.partitions.addRequest(lv)
+
+ for req in self.partitions.requests:
+ print req
+
+ dialog.destroy()
+
+
def makeraidCB(self, widget):
request = PartitionSpec(fileSystemTypeGetDefault(), REQUEST_RAID, 1)
self.editRaidRequest(request, isNew = 1)
@@ -1673,7 +1811,8 @@ class PartitionWindow(InstallWindow):
(_("_Edit"), self.editCb),
(_("_Delete"), self.deleteCb),
(_("_Reset"), self.resetCb),
- (_("Make _RAID"), self.makeraidCB))
+ (_("Make _RAID"), self.makeraidCB),
+ (_("_LVM"), self.makeLvmCB))
for label, cb in ops:
button = gtk.Button(label)