[PATCH] kickstart.py: Use passed in anaconda parameter instead of relying on handler

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

 



Currently we rely on self.handler being defined in our execute() methods
of pykickstart command/data derived classes. But self.handler is is not
defined for BaseData derived classes, which we fix by some trickery to define
it anyways.

This patch replaces the trickery by using the anaconda parameter all
the execute() method of pykickstart command/data derived classes have, this
allows access to the same object through anaconda.id.ksdata, without requiring
the trickery.
---
 kickstart.py |   58 +++++++++++++++++++++++-----------------------------------
 1 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/kickstart.py b/kickstart.py
index 7665686..cf5d8b1 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -197,7 +197,7 @@ class AutoPart(commands.autopart.F12_AutoPart):
             anaconda.id.storage.autoPartAddBackupPassphrase = \
                 self.backuppassphrase
 
-        self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+        anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
 
 class AutoStep(commands.autostep.FC3_AutoStep):
     def execute(self, anaconda):
@@ -221,9 +221,9 @@ class Bootloader(commands.bootloader.F12_Bootloader):
             anaconda.id.bootloader.doUpgradeOnly = 1
 
         if location is None:
-            self.handler.permanentSkipSteps.extend(["bootloadersetup", "instbootloader"])
+            anaconda.id.ksdata.permanentSkipSteps.extend(["bootloadersetup", "instbootloader"])
         else:
-            self.handler.showSteps.append("bootloader")
+            anaconda.id.ksdata.showSteps.append("bootloader")
 
             if self.appendLine:
                 anaconda.id.bootloader.args.append(self.appendLine)
@@ -268,7 +268,7 @@ class Bootloader(commands.bootloader.F12_Bootloader):
 
                 anaconda.id.bootloader.updateDriveList(new)
 
-        self.handler.permanentSkipSteps.extend(["upgbootloader", "bootloader"])
+        anaconda.id.ksdata.permanentSkipSteps.extend(["upgbootloader", "bootloader"])
 
 class ClearPart(commands.clearpart.FC3_ClearPart):
     def parse(self, args):
@@ -298,7 +298,7 @@ class ClearPart(commands.clearpart.FC3_ClearPart):
             anaconda.id.storage.reinitializeDisks = self.initAll
 
         clearPartitions(anaconda.id.storage)
-        self.handler.skipSteps.append("cleardiskssel")
+        anaconda.id.ksdata.skipSteps.append("cleardiskssel")
 
 class Fcoe(commands.fcoe.F13_Fcoe):
     def parse(self, args):
@@ -356,7 +356,7 @@ class IgnoreDisk(commands.ignoredisk.F8_IgnoreDisk):
     def execute(self, anaconda):
         anaconda.id.storage.ignoredDisks = self.ignoredisk
         anaconda.id.storage.exclusiveDisks = self.onlyuse
-        self.handler.skipSteps.extend(["filter", "filtertype"])
+        anaconda.id.ksdata.skipSteps.extend(["filter", "filtertype"])
 
 class Iscsi(commands.iscsi.F10_Iscsi):
     def parse(self, args):
@@ -382,13 +382,13 @@ class Keyboard(commands.keyboard.FC3_Keyboard):
     def execute(self, anaconda):
         anaconda.id.keyboard.set(self.keyboard)
         anaconda.id.keyboard.beenset = 1
-        self.handler.skipSteps.append("keyboard")
+        anaconda.id.ksdata.skipSteps.append("keyboard")
 
 class Lang(commands.lang.FC3_Lang):
     def execute(self, anaconda):
         anaconda.id.instLanguage.instLang = self.lang
         anaconda.id.instLanguage.systemLang = self.lang
-        self.handler.skipSteps.append("language")
+        anaconda.id.ksdata.skipSteps.append("language")
 
 class LogVolData(commands.logvol.F12_LogVolData):
     def execute(self, anaconda):
@@ -430,7 +430,7 @@ class LogVolData(commands.logvol.F12_LogVolData):
 
             dev.format.mountpoint = self.mountpoint
             dev.format.mountopts = self.fsopts
-            self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+            anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
             return
 
         # Make sure this LV name is not already used in the requested VG.
@@ -511,7 +511,7 @@ class LogVolData(commands.logvol.F12_LogVolData):
                                      parents=request)
             storage.createDevice(luksdev)
 
-        self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+        anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
 
 class Logging(commands.logging.FC6_Logging):
     def execute(self, anaconda):
@@ -634,7 +634,7 @@ class PartitionData(commands.partition.F12_PartData):
 
             # store "raid." alias for other ks partitioning commands
             if self.onPart:
-                self.handler.onPart[kwargs["name"]] = self.onPart
+                anaconda.id.ksdata.onPart[kwargs["name"]] = self.onPart
             self.mountpoint = ""
         elif self.mountpoint.startswith("pv."):
             type = "lvmpv"
@@ -645,7 +645,7 @@ class PartitionData(commands.partition.F12_PartData):
 
             # store "pv." alias for other ks partitioning commands
             if self.onPart:
-                self.handler.onPart[kwargs["name"]] = self.onPart
+                anaconda.id.ksdata.onPart[kwargs["name"]] = self.onPart
             self.mountpoint = ""
         elif self.mountpoint == "/boot/efi":
             type = "EFI System Partition"
@@ -671,7 +671,7 @@ class PartitionData(commands.partition.F12_PartData):
 
             dev.format.mountpoint = self.mountpoint
             dev.format.mountopts = self.fsopts
-            self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+            anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
             return
 
         # Size specification checks.
@@ -760,11 +760,11 @@ class PartitionData(commands.partition.F12_PartData):
                                      parents=request)
             storage.createDevice(luksdev)
 
-        self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+        anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
 
 class Reboot(commands.reboot.FC6_Reboot):
     def execute(self, anaconda):
-        self.handler.skipSteps.append("complete")
+        anaconda.id.ksdata.skipSteps.append("complete")
 
 class RaidData(commands.raid.F12_RaidData):
     def execute(self, anaconda):
@@ -783,7 +783,7 @@ class RaidData(commands.raid.F12_RaidData):
         elif self.mountpoint.startswith("pv."):
             type = "lvmpv"
             kwargs["name"] = self.mountpoint
-            self.handler.onPart[kwargs["name"]] = devicename
+            anaconda.id.ksdata.onPart[kwargs["name"]] = devicename
 
             if devicetree.getDeviceByName(kwargs["name"]):
                 raise KickstartValueError, formatErrorMsg(self.lineno, msg="PV partition defined multiple times")
@@ -813,13 +813,13 @@ class RaidData(commands.raid.F12_RaidData):
 
             dev.format.mountpoint = self.mountpoint
             dev.format.mountopts = self.fsopts
-            self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+            anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
             return
 
         # Get a list of all the RAID members.
         for member in self.members:
             # if member is using --onpart, use original device
-            member = self.handler.onPart.get(member, member)
+            member = anaconda.id.ksdata.onPart.get(member, member)
             dev = devicetree.getDeviceByName(member)
             if not dev:
                 raise KickstartValueError, formatErrorMsg(self.lineno, msg="Tried to use undefined partition %s in RAID specification" % member)
@@ -899,14 +899,14 @@ class RaidData(commands.raid.F12_RaidData):
                                      parents=request)
             storage.createDevice(luksdev)
 
-        self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
+        anaconda.id.ksdata.skipSteps.extend(["partition", "zfcpconfig", "parttype"])
 
 class RootPw(commands.rootpw.F8_RootPw):
     def execute(self, anaconda):
         anaconda.id.rootPassword["password"] = self.password
         anaconda.id.rootPassword["isCrypted"] = self.isCrypted
         anaconda.id.rootPassword["lock"] = self.lock
-        self.handler.skipSteps.append("accounts")
+        anaconda.id.ksdata.skipSteps.append("accounts")
 
 class SELinux(commands.selinux.FC3_SELinux):
     def execute(self, anaconda):
@@ -914,7 +914,7 @@ class SELinux(commands.selinux.FC3_SELinux):
 
 class SkipX(commands.skipx.FC3_SkipX):
     def execute(self, anaconda):
-        self.handler.skipSteps.extend(["setsanex", "videocard", "xcustom"])
+        anaconda.id.ksdata.skipSteps.extend(["setsanex", "videocard", "xcustom"])
 
         if anaconda.id.desktop is not None:
             anaconda.id.desktop.setDefaultRunLevel(3)
@@ -928,7 +928,7 @@ class Timezone(commands.timezone.FC6_Timezone):
             log.warning("Timezone %s set in kickstart is not valid." % (self.timezone,))
 
         anaconda.id.timezone.setTimezoneInfo(self.timezone, self.isUtc)
-        self.handler.skipSteps.append("timezone")
+        anaconda.id.ksdata.skipSteps.append("timezone")
 
 class Upgrade(commands.upgrade.F11_Upgrade):
     def execute(self, anaconda):
@@ -946,7 +946,7 @@ class VolGroupData(commands.volgroup.FC3_VolGroupData):
         # Get a list of all the physical volume devices that make up this VG.
         for pv in self.physvols:
             # if pv is using --onpart, use original device
-            pv = self.handler.onPart.get(pv, pv)
+            pv = anaconda.id.ksdata.onPart.get(pv, pv)
             dev = devicetree.getDeviceByName(pv)
             if not dev:
                 raise KickstartValueError, formatErrorMsg(self.lineno, msg="Tried to use undefined partition %s in Volume Group specification" % pv)
@@ -1080,18 +1080,6 @@ class AnacondaKSHandler(superclass):
             # Data objects can be seen over and over again.
             self._dataObjs.append(obj)
 
-    def dispatcher(self, args, lineno, include=None):
-        # This is a big fat hack, and I don't want it in pykickstart.  A lot
-        # of our overridden data objects here refer to the handler (to skip
-        # steps, mainly).  I don't think this should be pykickstart's job
-        # since it's only required for anaconda, so it's got to go here.
-        obj = superclass.dispatcher(self, args, lineno, include=include)
-
-        if isinstance(obj, BaseData) and self.commands[args[0]] != None:
-            obj.handler = self
-
-        return obj
-
     def execute(self):
         for obj in filter(lambda o: hasattr(o, "execute"), self._dataObjs):
             obj.execute(self.anaconda)
-- 
1.6.5.2

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux