From 96d7f3e7e678a8ac9919ce628c2f792d4cb57955 Mon Sep 17 00:00:00 2001 From: Ján ONDREJ Date: Wed, 4 Jun 2008 06:38:02 +0000 Subject: 2008-06-04 Ján ONDREJ (via ondrejj@fedoraproject.org) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * po/sk.po: Typo fix. --- kickstart.py | 205 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 149 insertions(+), 56 deletions(-) (limited to 'kickstart.py') diff --git a/kickstart.py b/kickstart.py index 3c267774d..954287e4f 100644 --- a/kickstart.py +++ b/kickstart.py @@ -40,7 +40,9 @@ from pykickstart.constants import * from pykickstart.errors import * from pykickstart.parser import * from pykickstart.version import * -from rhpl.translate import _ + +import gettext +_ = lambda x: gettext.ldgettext("anaconda", x) import logging log = logging.getLogger("anaconda") @@ -179,9 +181,38 @@ class Bootloader(commands.bootloader.F8_Bootloader): self.handler.permanentSkipSteps.extend(["bootloadersetup", "instbootloader"]) else: self.handler.showSteps.append("bootloader") - self.handler.id.instClass.setBootloader(self.handler.id, location, self.forceLBA, - self.password, self.md5pass, - self.appendLine, self.driveorder, self.timeout) + + if self.appendLine: + self.handler.id.bootloader.args.set(self.appendLine) + + self.handler.id.bootloader.setForceLBA(self.forceLBA) + + if self.password: + self.handler.id.bootloader.setPassword(self.password, isCrypted = 0) + + if self.md5pass: + self.handler.id.bootloader.setPassword(self.md5pass) + + if location != None: + self.handler.id.bootloader.defaultDevice = location + else: + self.handler.id.bootloader.defaultDevice = -1 + + if self.timeout: + self.handler.id.bootloader.timeout = self.timeout + + # XXX throw out drives specified that don't exist. anything else + # seems silly + if self.driveorder and len(self.driveorder) > 0: + new = [] + for drive in self.driveorder: + if drive in self.handler.id.bootloader.drivelist: + new.append(drive) + else: + log.warning("requested drive %s in boot drive order " + "doesn't exist" %(drive,)) + + self.handler.id.bootloader.drivelist = new self.handler.permanentSkipSteps.extend(["upgbootloader", "bootloader"]) @@ -197,15 +228,19 @@ class ClearPart(commands.clearpart.FC3_ClearPart): if disk not in hds: raise KickstartValueError, formatErrorMsg(self.lineno, msg="Specified nonexistent disk %s in clearpart command" % disk) - self.handler.id.instClass.setClearParts(self.handler.id, self.type, - drives=self.drives, initAll=self.initAll) + self.handler.id.partitions.autoClearPartType = self.type + self.handler.id.partitions.autoClearPartDrives = self.drives + if self.initAll: + self.handler.id.partitions.reinitializeDisks = self.initAll class Firewall(commands.firewall.FC3_Firewall): def parse(self, args): commands.firewall.FC3_Firewall.parse(self, args) + self.handler.id.firewall.enabled = self.enabled + self.handler.id.firewall.trustdevs = self.trusts - self.handler.id.instClass.setFirewall(self.handler.id, self.enabled, - self.trusts, self.ports) + for port in self.ports: + self.handler.id.firewall.portlist.append (port) class Firstboot(commands.firstboot.FC3_Firstboot): def parse(self, args): @@ -215,8 +250,16 @@ class Firstboot(commands.firstboot.FC3_Firstboot): class IgnoreDisk(commands.ignoredisk.F8_IgnoreDisk): def parse(self, args): commands.ignoredisk.F8_IgnoreDisk.parse(self, args) - self.handler.id.instClass.setIgnoredDisks(self.handler.id, self.ignoredisk) - self.handler.id.instClass.setExclusiveDisks(self.handler.id, self.onlyuse) + + diskset = self.handler.id.diskset + for drive in self.ignoredisk: + if not drive in diskset.skippedDisks: + diskset.skippedDisks.append(drive) + + diskset = self.handler.id.diskset + for drive in self.onlyuse: + if not drive in diskset.exclusiveDisks: + diskset.exclusiveDisks.append(drive) class Iscsi(commands.iscsi.FC6_Iscsi): def parse(self, args): @@ -241,14 +284,14 @@ class IscsiName(commands.iscsiname.FC6_IscsiName): class Keyboard(commands.keyboard.FC3_Keyboard): def parse(self, args): commands.keyboard.FC3_Keyboard.parse(self, args) - self.handler.id.instClass.setKeyboard(self.handler.id, self.keyboard) + self.handler.id.keyboard.set(self.keyboard) self.handler.id.keyboard.beenset = 1 self.handler.skipSteps.append("keyboard") class Lang(commands.lang.FC3_Lang): def parse(self, args): commands.lang.FC3_Lang.parse(self, args) - self.handler.id.instClass.setLanguage(self.handler.id, self.lang) + self.handler.id.instLanguage.setRuntimeLanguage(self.lang) self.handler.skipSteps.append("language") class LogVol(commands.logvol.F9_LogVol): @@ -330,34 +373,63 @@ class Logging(commands.logging.FC6_Logging): elif self.host != "": logger.addSysLogHandler(log, self.host) -class Monitor(commands.monitor.FC6_Monitor): - def parse(self, args): - commands.monitor.FC6_Monitor.parse(self, args) - self.handler.skipSteps.extend(["monitor", "checkmonitorok"]) - self.handler.id.instClass.setMonitor(self.handler.id, self.hsync, - self.vsync, self.monitor) - class Network(commands.network.F8_Network): def parse(self, args): commands.network.F8_Network.parse(self, args) nd = self.network[-1] - try: - self.handler.id.instClass.setNetwork(self.handler.id, nd.bootProto, nd.ip, - nd.netmask, nd.ethtool, nd.device, - nd.onboot, nd.dhcpclass, nd.essid, nd.wepkey) - except KeyError: - raise KickstartValueError, formatErrorMsg(self.lineno, msg="The provided network interface %s does not exist" % nd.device) + if nd.bootProto: + devices = self.handler.id.network.netdevices + firstdev = self.handler.id.network.getFirstDeviceName() + if (devices and bootProto): + if not nd.device: + if devices.has_key(firstdev): + device = firstdev + else: + list = devices.keys () + list.sort() + device = list[0] + else: + device = nd.device + + try: + dev = devices[device] + except KeyError: + raise KickstartValueError, formatErrorMsg(self.lineno, msg="The provided network interface %s does not exist" % device) + + dev.set (("bootproto", nd.bootProto)) + dev.set (("dhcpclass", nd.dhcpclass)) + + if nd.onboot: + dev.set (("onboot", "yes")) + else: + dev.set (("onboot", "no")) + + if nd.bootProto == "static": + if (nd.ip): + dev.set (("ipaddr", nd.ip)) + if (nd.netmask): + dev.set (("netmask", nd.netmask)) + + if nd.ethtool: + dev.set (("ethtool_opts", nd.ethtool)) + + if isys.isWireless(device): + if nd.essid: + dev.set(("essid", nd.essid)) + if nd.wepkey: + dev.set(("wepkey", nd.wepkey)) if nd.hostname != "": - self.handler.id.instClass.setHostname(self.handler.id, nd.hostname, override=True) + self.handler.id.network.setHostname(nd.hostname) + self.handler.id.network.overrideDHCPhostname = True if nd.nameserver != "": - self.handler.id.instClass.setNameserver(self.handler.id, nd.nameserver) + self.handler.id.network.setDNS(nd.nameserver) if nd.gateway != "": - self.handler.id.instClass.setGateway(self.handler.id, nd.gateway) + self.handler.id.network.setGateway(nd.gateway) class MultiPath(commands.multipath.FC6_MultiPath): def parse(self, args): @@ -606,6 +678,46 @@ class Raid(commands.raid.F9_Raid): addPartRequest(self.handler.anaconda, request) self.handler.skipSteps.extend(["partition", "zfcpconfig", "parttype"]) +class Repo(commands.repo.F8_Repo): + def parse(self, args): + commands.repo.F8_Repo.parse(self, args) + repo = self.repoList[-1] + repoid = repo.name.replace(" ", "-") + + buf = """ +[%(repoid)s] +name=%(name)s +enabled=1 +gpgcheck=0 +""" % {"repoid": repoid, "name": repo.name} + + # pykickstart enforces that only one of these options may be specified + if repo.mirrorlist: + buf += "\nmirrorlist=%s" % repo.mirrorlist + else: + buf += "\nbaseurl=%s" % repo.baseurl + + if repo.priority: + buf += "\ncost=%s" % repo.priority + + if repo.excludepkgs: + s = "" + for pkg in repo.excludepkgs: + s += "%s," % pkg + + buf += "\nexclude=%s" % s[:-1] + + if repo.includepkgs: + s = "" + for pkg in repo.includepkgs: + s += "%s," % pkg + + buf += "\nincludepkgs=%s" % s[:-1] + + fd = open("/etc/yum.repos.d/%s.repo" % repoid, "w") + fd.write(buf) + fd.close() + class RootPw(commands.rootpw.F8_RootPw): def parse(self, args): commands.rootpw.F8_RootPw.parse(self, args) @@ -618,23 +730,22 @@ class RootPw(commands.rootpw.F8_RootPw): class SELinux(commands.selinux.FC3_SELinux): def parse(self, args): commands.selinux.FC3_SELinux.parse(self, args) - self.handler.id.instClass.setSELinux(self.handler.id, self.selinux) + self.handler.id.security.setSELinux(self.selinux) class SkipX(commands.skipx.FC3_SkipX): def parse(self, args): commands.skipx.FC3_SkipX.parse(self, args) - self.handler.skipSteps.extend(["checkmonitorok", "setsanex", "videocard", - "monitor", "xcustom", "writexconfig"]) + self.handler.skipSteps.extend(["setsanex", "videocard", "xcustom"]) - if self.handler.id.xsetup is not None: - self.handler.id.xsetup.skipx = 1 + if self.handler.id.desktop is not None: + self.handler.id.desktop.setDefaultRunLevel(3) class Timezone(commands.timezone.FC6_Timezone): def parse(self, args): commands.timezone.FC6_Timezone.parse(self, args) - self.handler.id.instClass.setTimezoneInfo(self.handler.id, self.timezone, self.isUtc) + self.handler.id.timezone.setTimezoneInfo(self.timezone, self.isUtc) self.handler.skipSteps.append("timezone") class Upgrade(commands.upgrade.FC3_Upgrade): @@ -674,21 +785,10 @@ class VolGroup(commands.volgroup.FC3_VolGroup): request.uniqueID = uniqueID addPartRequest(self.handler.anaconda, request) -class XConfig(commands.xconfig.FC6_XConfig): - def parse(self, args): - commands.xconfig.FC6_XConfig.parse(self, args) - - self.handler.id.instClass.configureX(self.handler.id, self.driver, self.videoRam, - self.resolution, self.depth, - self.startX) - self.handler.id.instClass.setDesktop(self.handler.id, self.defaultdesktop) - self.handler.skipSteps.extend(["videocard", "monitor", "xcustom", - "checkmonitorok", "setsanex"]) - class ZeroMbr(commands.zerombr.FC3_ZeroMbr): def parse(self, args): commands.zerombr.FC3_ZeroMbr.parse(self, args) - self.handler.id.instClass.setZeroMbr(self.handler.id, 1) + self.handler.id.partitions.zeroMbr = 1 class ZFCP(commands.zfcp.FC3_ZFCP): def parse(self, args): @@ -734,7 +834,7 @@ commandMap = { "logging": Logging, "logvol": LogVol, "mediacheck": commands.mediacheck.FC4_MediaCheck, - "monitor": Monitor, + "monitor": commands.monitor.F10_Monitor, "multipath": MultiPath, "network": Network, "nfs": commands.method.FC6_Method, @@ -743,7 +843,7 @@ commandMap = { "poweroff": Reboot, "raid": Raid, "reboot": Reboot, - "repo": commands.repo.F8_Repo, + "repo": Repo, "rootpw": RootPw, "selinux": SELinux, "services": commands.services.FC6_Services, @@ -757,7 +857,7 @@ commandMap = { "user": commands.user.F8_User, "vnc": commands.vnc.FC6_Vnc, "volgroup": VolGroup, - "xconfig": XConfig, + "xconfig": commands.xconfig.F10_XConfig, "zerombr": ZeroMbr, "zfcp": ZFCP } @@ -1058,13 +1158,6 @@ def setSteps(anaconda): dispatch.skipStep("installtype") dispatch.skipStep("bootdisk") - # because these steps depend on the monitor being probed - # properly, and will stop you if you have an unprobed monitor, - # we should skip them for autostep - if flags.autostep: - dispatch.skipStep("monitor") - return - dispatch.skipStep("bootdisk") dispatch.skipStep("betanag") dispatch.skipStep("regkey") -- cgit