summaryrefslogtreecommitdiffstats
path: root/kickstart.py
diff options
context:
space:
mode:
authorJán ONDREJ <ondrejj@salstar.sk>2008-06-04 06:38:02 +0000
committerJán ONDREJ <ondrejj@salstar.sk>2008-06-04 06:38:02 +0000
commit96d7f3e7e678a8ac9919ce628c2f792d4cb57955 (patch)
tree71d6ba7f9e48f87f90a8f8d5c8937c229913d6c5 /kickstart.py
parente772036e9972589c7808428c9fd00b90b2089a66 (diff)
downloadanaconda-96d7f3e7e678a8ac9919ce628c2f792d4cb57955.tar.gz
anaconda-96d7f3e7e678a8ac9919ce628c2f792d4cb57955.tar.xz
anaconda-96d7f3e7e678a8ac9919ce628c2f792d4cb57955.zip
2008-06-04 Ján ONDREJ <ondrejj@salstar.sk> (via ondrejj@fedoraproject.org)
* po/sk.po: Typo fix.
Diffstat (limited to 'kickstart.py')
-rw-r--r--kickstart.py205
1 files changed, 149 insertions, 56 deletions
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")