/[smeserver]/cdrom.image/sme8/updates/smeupgradeclass.py
ViewVC logotype

Annotation of /cdrom.image/sme8/updates/smeupgradeclass.py

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download) (as text)
Thu Aug 26 22:09:11 2010 UTC (13 years, 9 months ago) by slords
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +3 -6 lines
Content type: text/x-python
Installer classes cleanup to fix dmraid crashes

1 slords 1.1 from installclass import getBaseInstallClass
2     from rhpl.translate import N_, _
3     from constants import *
4     import os
5     import iutil
6     import rhpl
7    
8     baseclass = getBaseInstallClass()
9    
10     import logging
11     log = logging.getLogger("anaconda")
12    
13     import string
14    
15     class Script:
16     def __repr__(self):
17     str = ("(s: '%s' i: %s c: %d)") % \
18     (self.script, self.interp, self.inChroot)
19     return string.replace(str, "\n", "|")
20    
21     def __init__(self, script, interp, inChroot, logfile = None):
22     self.script = script
23     self.interp = interp
24     self.inChroot = inChroot
25     self.logfile = logfile
26    
27     def run(self, chroot, serial):
28     import tempfile
29     import os.path
30    
31     if self.inChroot:
32     scriptRoot = chroot
33     else:
34     scriptRoot = "/"
35    
36     (fd, path) = tempfile.mkstemp("", "sme-script-", scriptRoot + "/tmp")
37    
38     os.write(fd, self.script)
39     os.close(fd)
40     os.chmod(path, 0700)
41    
42     if self.logfile is not None:
43     messages = self.logfile
44     elif serial:
45     messages = "%s.log" % path
46     else:
47     messages = "/dev/tty3"
48    
49     rc = iutil.execWithRedirect(self.interp, ["/tmp/%s" % os.path.basename(path)],
50     stdin = messages, stdout = messages, stderr = messages,
51     root = scriptRoot)
52    
53     if rc != 0:
54     log.error("WARNING - Error code %s encountered running a sme script", rc)
55    
56     os.unlink(path)
57     if serial or self.logfile is not None:
58     os.chmod("%s" % messages, 0600)
59    
60     class InstallClass(baseclass):
61     name = N_("Upgrade Existing System")
62     pixmap = "upgrade.png"
63     sortPriority = 999999
64    
65     parentClass = ( _("Upgrade"), "upgrade.png" )
66    
67     def requiredDisplayMode(self):
68     return 't'
69    
70     def setSteps(self, dispatch):
71     dispatch.setStepList(
72     "language",
73     "keyboard",
74     "findrootparts",
75     "findinstall",
76     "partitionobjinit",
77     "upgrademount",
78     "upgrademigfind",
79     "upgrademigratefs",
80     "upgradecontinue",
81 slords 1.2 "upgbootloader",
82 slords 1.1 "reposetup",
83     "postselection",
84     "confirmupgrade",
85     "install",
86     "migratefilesystems",
87     "preinstallconfig",
88     "installpackages",
89     "postinstallconfig",
90     "instbootloader",
91 slords 1.2 "copylogs",
92     "methodcomplete",
93 slords 1.1 "dopostaction",
94     "complete"
95     )
96    
97     if iutil.getPPCMachine() == "iSeries":
98     dispatch.skipStep("bootloadersetup", skip = 0)
99    
100     if rhpl.getArch() != "i386" and rhpl.getArch() != "x86_64":
101     dispatch.skipStep("bootloader")
102     dispatch.skipStep("bootloaderadvanced")
103    
104     if rhpl.getArch() != "i386" and rhpl.getArch() != "x86_64":
105     dispatch.skipStep("upgbootloader")
106    
107     def postAction(self, anaconda, serial):
108     win = anaconda.intf.waitWindow(_("Post Upgrade Script"),
109     _("The post upgrade script is running..."))
110    
111     script = ( "#!/bin/sh\nmkdir -p /var/lib/dhcp; /sbin/syslogd ; sleep 2; /sbin/e-smith/signal-event post-upgrade\n" )
112     s = Script(script, interp="/bin/sh", inChroot=1)
113     log.info("%s", s)
114     s.run(anaconda.rootPath, serial)
115     win.pop()
116    
117     def setInstallData(self, anaconda):
118     baseclass.setInstallData(self, anaconda)
119     anaconda.id.setUpgrade(True)
120    
121     def __init__(self, expert):
122     baseclass.__init__(self, expert)

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed