Re: [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]

 



Hi,

On 01/14/2010 10:27 AM, Martin Sivak wrote:
Removing hacks is always nice, but I'm not sure about InstallData as Chris had some plans to remove it.
Otherwise the patch looks simple enough and fine.


Thanks for the review, I'll wait for an ack from Chris before committing this.

Regards,

Hans

Martin


----- "Hans de Goede"<hdegoede@xxxxxxxxxx>  wrote:

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

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

_______________________________________________
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