diff options
Diffstat (limited to 'instdata.py')
-rw-r--r-- | instdata.py | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/instdata.py b/instdata.py new file mode 100644 index 000000000..fa19390c0 --- /dev/null +++ b/instdata.py @@ -0,0 +1,143 @@ +import language +import kbd +import network +import firewall +import timezone +import desktop +import users +import fsset +import partitioning +import bootloader +from simpleconfig import SimpleConfigFile +from translate import _ + +class Boolean: + def set(self, val): + self.val = val + + def get(self): + return self.val + + def __init__(self, val = 0): + self.val = val + +# Collector class for all data related to an install/upgrade. + +class InstallData: + + def reset(self): + # Reset everything except: + # + # - The mouse + # - The install language + # - The keyboard + + self.langSupport = language.Language(0) + self.instClass = None + self.network = network.Network() + self.firewall = firewall.Firewall() + self.timezone = timezone.Timezone() + self.accounts = users.Accounts() + self.rootPassword = users.RootPassword () + self.auth = users.Authentication() + self.desktop = desktop.Desktop() + self.hdList = None + self.comps = None + self.upgrade = Boolean() + self.fsset.reset() + self.diskset = partitioning.DiskSet() + self.partrequests = partitioning.PartitionRequests(self.diskset) + self.bootloader = bootloader.x86BootloaderInfo() + + def setInstallProgressClass(self, c): + self.instProgress = c + + # expects a Mouse object + def setMouse(self, mouse): + self.mouse = mouse + + # expects a VideoCardInfo object + def setVideoCard(self, video): + self.videocard = video + + # expects a Monitor object + def setMonitor(self, monitor): + self.monitor = monitor + + # expects a XF86Config object + def setXconfig(self, xconfig): + self.xconfig = xconfig + + def write(self, instPath): + self.langSupport.write (instPath) + self.mouse.write(instPath) + self.keyboard.write (instPath) + self.network.write (instPath) + self.auth.write (instPath) + self.firewall.write (instPath) + self.rootPassword.write (instPath, self.auth) + self.accounts.write (instPath, self.auth) + self.desktop.write (instPath) + self.fsset.write (instPath) + + def writeKS(self, filename): + # make it so only root can read, could have password + f = open(filename, "w", 0600) + + f.write("# Kickstart file automatically generated by anaconda.\n\n") + if self.upgrade.get(): + f.write("upgrade\n"); + else: + f.write("install\n"); + + self.instLanguage.writeKS(f) + self.langSupport.writeKS(f) + self.keyboard.writeKS(f) + self.mouse.writeKS(f) + self.xconfig.writeKS(f) + self.network.writeKS(f) + self.rootPassword.writeKS(f) + self.firewall.writeKS(f) + self.auth.writeKS(f) + self.timezone.writeKS(f) + + f.write("\n%packages\n") + packages = {} + for comp in self.comps: + if comp.isSelected(): + if comp.isSelected(justManual = 1) and comp.name != "Base": + f.write("@ %s\n" % comp.name) + + for pkg in comp.packages(): + packages[pkg] = 1 + + for pkg in self.hdList.values(): + if not packages.has_key(pkg) and pkg.isSelected(): + f.write("%s\n" % pkg.name) + if pkg.wasForcedOff(): + f.write("-%s\n" %(pkg.name)) + + f.write("\n%post\n") + self.accounts.writeKScommands(f, self.auth) + + # XXX + #self.monitor + #self.mouse + #self.videoCard + #self.fstab + #self.desktop + # + + + def __init__(self, extraModules): + self.instLanguage = language.InstallTimeLanguage() + self.keyboard = kbd.Keyboard() + + self.mouse = None + self.monitor = None + self.videocard = None + self.xconfig = None + self.extraModules = extraModules + self.fsset = fsset.FileSystemSet() + + self.reset() |