From: Chris Lumens <clumens(a)redhat.com>
Related: rhbz#1155452
Port of commit 8c2550d20d7fd8964cd3ec5797ff34949fe0f8fd from master.
(1) Make it so a valid install class does not have to be named "InstallClass"
which should make inheritance less cumbersome.
(2) Allow putting more than one install class into a single file.
(3) Rename the existing install classes to be <distro>BaseInstallClass. This
makes it more clear for subclasses where they're coming from.
---
pyanaconda/installclass.py | 15 ++++++---------
pyanaconda/installclasses/fedora.py | 2 +-
pyanaconda/installclasses/rhel.py | 2 +-
3 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/pyanaconda/installclass.py b/pyanaconda/installclass.py
index 03dcfc3..a066393 100644
--- a/pyanaconda/installclass.py
+++ b/pyanaconda/installclass.py
@@ -199,16 +199,13 @@ def availableClasses(showHidden=0):
try:
loaded = imputil.imp.load_module(mainName, found[0], found[1], found[2])
+ for (_key, obj) in loaded.__dict__.items():
+ # If it's got these two methods, it's an InstallClass.
+ if hasattr(obj, "setDefaultPartitioning") and hasattr(obj,
"setPackageSelection"):
+ sortOrder = getattr(obj, "sortPriority", 0)
+ if obj.hidden == 0 or showHidden == 1:
+ lst.append(((obj.name, obj), sortOrder))
- obj = loaded.InstallClass
-
- if obj.__dict__.has_key('sortPriority'):
- sortOrder = obj.sortPriority
- else:
- sortOrder = 0
-
- if obj.hidden == 0 or showHidden == 1:
- lst.append(((obj.name, obj), sortOrder))
except ImportError:
log.warning ("module import of %s failed: %s", mainName,
sys.exc_type)
if flags.debug: raise
diff --git a/pyanaconda/installclasses/fedora.py b/pyanaconda/installclasses/fedora.py
index 87e91fa..d0d9a3f 100644
--- a/pyanaconda/installclasses/fedora.py
+++ b/pyanaconda/installclasses/fedora.py
@@ -24,7 +24,7 @@ from pyanaconda import iutil
from pyanaconda import nm
from pyanaconda.i18n import N_
-class InstallClass(BaseInstallClass):
+class FedoraBaseInstallClass(BaseInstallClass):
# name has underscore used for mnemonics, strip if you dont need it
id = "fedora"
name = N_("_Fedora")
diff --git a/pyanaconda/installclasses/rhel.py b/pyanaconda/installclasses/rhel.py
index de5608d..59e4bb5 100644
--- a/pyanaconda/installclasses/rhel.py
+++ b/pyanaconda/installclasses/rhel.py
@@ -24,7 +24,7 @@ from pyanaconda import nm
from pyanaconda import iutil
from pyanaconda.i18n import N_
-class InstallClass(BaseInstallClass):
+class RHELBaseInstallClass(BaseInstallClass):
# name has underscore used for mnemonics, strip if you dont need it
id = "rhel"
name = N_("Red Hat Enterprise Linux")
--
1.9.3