[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH 2/2] Use None to indicate use of default value for clearPartType in UI (#503310, #503681).



Radek Vykydal wrote:
Radek Vykydal wrote:
If we are to set clearPartType in "parttype" UI (there is no clearpart in KS), set it really there, instead of setting it to CLEARPART_TYPE_NONE just to pass storage device discovery checks
which are done between ks processing and UI parttype.

not perfect, this UI case doesn't work properly:

"Replace existing Linux system", check review
"Next"
"Back"
storage discovery (reset) with clearpart set to CLEARPART_TYPE_LINUX, so the shouldClear check in handleUdevDeviceFormats prevents discovery of LVM, RAID, ... again
"Create custom layout"
missing LVM, RAID,... devices

I am working on fix, wondering if the shouldClear check is worth being there. Another case where we probably stumble over it is when doing "Back"s to the
welcome page. Seems like we need to save original ks clearpart choice
somewhere for doing UI preselection properly in these cases - it's getting ugly.

I fixed PATCH 2/2 (attached) this way:
- set clearPartType to None before resetting storage when going [Back] from partition editor - do not set clearPartType in parttype dialog just to set preselected combobox value which was stupid, clearPartType should be set only after [Next]


>From b5ddbd6e5adb81c50025a7f5dbb7b3f3eefeb48e Mon Sep 17 00:00:00 2001
From: Radek Vykydal <rvykydal redhat com>
Date: Tue, 2 Jun 2009 20:42:36 +0200
Subject: [PATCH 2/2] Use None to indicate use of default value for clearPartType in UI (#503310, #503681).

If we are to set clearPartType in "parttype" UI (there is no clearpart in KS), set it really there,
instead of setting it to CLEARPART_TYPE_NONE just to pass storage device discovery checks
which are done between ks processing and UI parttype.
---
 installclass.py          |    9 +--------
 installclasses/fedora.py |    3 +--
 installclasses/rhel.py   |    3 +--
 iw/autopart_type.py      |   13 +++++++------
 iw/partition_gui.py      |    1 +
 kickstart.py             |    2 +-
 storage/__init__.py      |    4 ++--
 storage/partitioning.py  |    2 +-
 textw/partition_text.py  |    2 ++
 9 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/installclass.py b/installclass.py
index 913444f..d0f535d 100644
--- a/installclass.py
+++ b/installclass.py
@@ -187,8 +187,7 @@ class BaseInstallClass(object):
         from backend import AnacondaBackend
         return AnacondaBackend
 
-    def setDefaultPartitioning(self, storage, platform,
-                               clear = CLEARPART_TYPE_LINUX, doClear = True):
+    def setDefaultPartitioning(self, storage, platform):
         autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType,
                                  size=1024, grow=True, asVol=True)]
 
@@ -200,12 +199,6 @@ class BaseInstallClass(object):
         autorequests.append(PartSpec(fstype="swap", size=minswap, maxSize=maxswap,
                                      grow=True, asVol=True))
 
-        if doClear:
-            storage.clearPartType = clear
-            storage.clearPartDisks = []
-        else:
-            storage.clearPartType = CLEARPART_TYPE_NONE
-
         storage.autoPartitionRequests = autorequests
 
 
diff --git a/installclasses/fedora.py b/installclasses/fedora.py
index 9c97390..98002ed 100644
--- a/installclasses/fedora.py
+++ b/installclasses/fedora.py
@@ -63,8 +63,7 @@ class InstallClass(BaseInstallClass):
 	BaseInstallClass.setInstallData(self, anaconda)
         BaseInstallClass.setDefaultPartitioning(self,
                                                 anaconda.id.storage,
-                                                anaconda.platform,
-                                                CLEARPART_TYPE_NONE)
+                                                anaconda.platform)
 
     def setSteps(self, anaconda):
 	BaseInstallClass.setSteps(self, anaconda);
diff --git a/installclasses/rhel.py b/installclasses/rhel.py
index aa3590d..5c0d715 100644
--- a/installclasses/rhel.py
+++ b/installclasses/rhel.py
@@ -89,8 +89,7 @@ class InstallClass(BaseInstallClass):
 	BaseInstallClass.setInstallData(self, anaconda)
         BaseInstallClass.setDefaultPartitioning(self, 
                                                 anaconda.id.storage,
-                                                anaconda.platform,
-                                                CLEARPART_TYPE_NONE)
+                                                anaconda.platform)
 
     def setSteps(self, anaconda):
         dispatch = anaconda.dispatch
diff --git a/iw/autopart_type.py b/iw/autopart_type.py
index bb71401..f192d6a 100644
--- a/iw/autopart_type.py
+++ b/iw/autopart_type.py
@@ -444,15 +444,16 @@ class PartitionTypeWindow(InstallWindow):
                 (_("Use free space"), CLEARPART_TYPE_NONE),
                 (_("Create custom layout"), -1))
 
-        # Default for UI is Remove linux partitions, so if we
-        # haven't specified something else in ks, set this default.
-        # This is not correct if we specify clearpart --none in ks.
-        if self.storage.clearPartType == CLEARPART_TYPE_NONE:
-            self.storage.clearPartType = CLEARPART_TYPE_LINUX
+        # if not set in ks, use UI default
+        if self.storage.clearPartType is None:
+            preselected = CLEARPART_TYPE_LINUX
+        else:
+            preselected = self.storage.clearPartType 
+
         for (txt, val) in opts:
             iter = store.append(None)
             store[iter] = (txt, val)
-            if val == self.storage.clearPartType:
+            if val == preselected:
                 self.combo.set_active_iter(iter)
 
         if ((self.combo.get_active() == -1) or
diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index 9968f07..b97a49b 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -664,6 +664,7 @@ class PartitionWindow(InstallWindow):
 
     def getPrev(self):
         self.diskStripeGraph.shutDown()
+        self.storage.clearPartType = None
         self.storage.reset()
         self.tree.clear()
         del self.parent
diff --git a/kickstart.py b/kickstart.py
index 474ecec..ce63068 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -147,7 +147,7 @@ class AutoPart(commands.autopart.F9_AutoPart):
 
         # sets up default autopartitioning.  use clearpart separately
         # if you want it
-        self.handler.id.instClass.setDefaultPartitioning(self.handler.id.storage, self.handler.anaconda.platform, doClear=False)
+        self.handler.id.instClass.setDefaultPartitioning(self.handler.id.storage, self.handler.anaconda.platform)
         self.handler.id.storage.doAutoPart = True
 
         if self.encrypted:
diff --git a/storage/__init__.py b/storage/__init__.py
index 41f09e2..a364bf8 100644
--- a/storage/__init__.py
+++ b/storage/__init__.py
@@ -202,7 +202,7 @@ class Storage(object):
         self.ignoredDisks = []
         self.exclusiveDisks = []
         self.doAutoPart = False
-        self.clearPartType = CLEARPART_TYPE_NONE
+        self.clearPartType = None
         self.clearPartDisks = []
         self.encryptedAutoPart = False
         self.encryptionPassphrase = None
@@ -965,7 +965,7 @@ class Storage(object):
         f.write("# not guaranteed to work\n")
 
         # clearpart
-        if self.clearPartType == CLEARPART_TYPE_NONE:
+        if self.clearPartType is None or self.clearPartType == CLEARPART_TYPE_NONE:
             args = ["--none"]
         elif self.clearPartType == CLEARPART_TYPE_LINUX:
             args = ["--linux"]
diff --git a/storage/partitioning.py b/storage/partitioning.py
index 8e9ab3c..de3e3e5 100644
--- a/storage/partitioning.py
+++ b/storage/partitioning.py
@@ -306,7 +306,7 @@ def clearPartitions(storage):
             - Needs some error handling, especially for the parted bits.
 
     """
-    if storage.clearPartType == CLEARPART_TYPE_NONE:
+    if storage.clearPartType is None or storage.clearPartType == CLEARPART_TYPE_NONE:
         # not much to do
         return
 
diff --git a/textw/partition_text.py b/textw/partition_text.py
index 48b7c18..5b97ed2 100644
--- a/textw/partition_text.py
+++ b/textw/partition_text.py
@@ -67,6 +67,8 @@ class PartitionTypeWindow:
             for (txt, val) in opts:
                 typebox.append(txt, val)
 
+            if anaconda.id.storage.clearPartType is None:
+                anaconda.id.storage.clearPartType = CLEARPART_TYPE_LINUX
             typebox.setCurrent(anaconda.id.storage.clearPartType)
 
             g.add(typebox, 0, 1, (0, 1, 0, 0))
-- 
1.6.0.6


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]