/[smeserver]/cdrom.image/sme9/product/installclasses/server.py
ViewVC logotype

Contents of /cdrom.image/sme9/product/installclasses/server.py

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


Revision 1.2 - (show annotations) (download) (as text)
Sat Mar 16 14:17:28 2013 UTC (11 years, 9 months ago) by slords
Branch: MAIN
Changes since 1.1: +2 -2 lines
Content type: text/x-python
cd-rom updates

1 #
2 # server.py
3 #
4
5 import os, iutil
6
7 from installclass import BaseInstallClass
8 from rhel import InstallClass as SMEInstallClass
9 from kickstart import AnacondaKSScript as Script
10
11 from flags import flags
12 from constants import *
13 from pykickstart.constants import *
14
15 import gettext
16 _ = lambda x: gettext.ldgettext("anaconda", x)
17
18 import logging
19 log = logging.getLogger("anaconda")
20
21 class Script:
22 def __repr__(self):
23 str = ("(s: '%s' i: %s c: %d)") % \
24 (self.script, self.interp, self.inChroot)
25 return string.replace(str, "\n", "|")
26
27 def __init__(self, script, interp = '/bin/sh', inChroot = 1, logfile = None):
28 self.script = script
29 self.interp = interp
30 self.inChroot = inChroot
31 self.logfile = logfile
32
33 def run(self, chroot, serial, intf = None):
34 import tempfile
35 import os.path
36
37 if self.inChroot:
38 scriptRoot = chroot
39 else:
40 scriptRoot = "/"
41
42 (fd, path) = tempfile.mkstemp("", "sme-script-", scriptRoot + "/tmp")
43
44 os.write(fd, self.script)
45 os.close(fd)
46 os.chmod(path, 0700)
47
48 if self.logfile:
49 if self.inChroot:
50 messages = "%s/%s" % (scriptRoot, self.logfile)
51 else:
52 messages = self.logfile
53
54 d = os.path.dirname(messages)
55 if not os.path.exists(d):
56 os.makedirs(d)
57 elif serial:
58 messages = "%s.log" % path
59 else:
60 messages = "/dev/tty3"
61
62 if intf:
63 intf.suspend()
64 rc = iutil.execWithRedirect(self.interp, ["/tmp/%s" % os.path.basename(path)],
65 stdin = messages, stdout = messages, stderr = messages,
66 root = scriptRoot)
67 if intf:
68 intf.resume()
69
70 if rc != 0:
71 log.error("ERROR - Error code %s encountered running a sme script", rc)
72
73 os.unlink(path)
74 if serial or self.logfile:
75 os.chmod("%s" % messages, 0600)
76
77 class InstallClass(SMEInstallClass):
78 # make sure the translation data is read from product.img tree
79 if os.path.isdir("/tmp/product/locale"):
80 import gettext
81 gettext.bindtextdomain("comps", localedir="/tmp/product/locale")
82 _ = lambda x: gettext.ldgettext("comps", x)
83 N_ = lambda x: x
84
85 # name has underscore used for mnemonics, strip if you dont need it
86 id = "server"
87 name = N_("SME Server")
88 _description = N_("The default installation of %s is a basic server install. "
89 "You can optionally select a different set of software "
90 "now.")
91 sortPriority = 90000
92 hidden = 0
93
94 tasks = [(N_("Basic Server"),
95 ["base", "core"]),
96 (N_("Minimal"),
97 ["core"])]
98
99 def _get_description(self):
100 return gettext.ldgettext("comps", self._description) % self._descriptionFields
101 description = property(_get_description)
102
103 def postAction(self, anaconda):
104 if anaconda.id.getUpgrade():
105 w = anaconda.intf.waitWindow(_("Post Upgrade"),
106 _("Performing post-upgrade configuration"))
107 log.info("Running post-upgrade action script")
108 script = Script( "#!/bin/sh\n/sbin/rsyslogd; sleep 2; /sbin/e-smith/signal-event post-upgrade; touch /forcequotacheck\n" )
109 else:
110 w = anaconda.intf.waitWindow(_("Post Installation"),
111 _("Performing post-installation configuration"))
112 log.info("Running post-install action script")
113 script = Script( "#!/bin/sh\n/sbin/rsyslogd; sleep 2; /sbin/e-smith/signal-event post-install; touch /forcequotacheck\n" )
114
115 script.run(anaconda.rootPath, flags.serial, anaconda.intf)
116 if anaconda.intf is not None:
117 w.pop()
118
119 SMEInstallClass.postAction(self, anaconda)
120
121 def setSteps(self, anaconda):
122 BaseInstallClass.setSteps(self, anaconda)
123 #anaconda.dispatch.skipStep("welcome")
124 #anaconda.dispatch.skipStep("filtertype")
125 anaconda.dispatch.skipStep("network")
126 anaconda.dispatch.skipStep("accounts")
127 anaconda.dispatch.skipStep("partition")
128 anaconda.dispatch.skipStep("tasksel")
129 anaconda.dispatch.skipStep("firstboot")
130
131 def setDefaultPartitioning(self, storage, platform):
132 autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType,
133 size=1024, maxSize=50*1024, grow=True, asVol=True)]
134
135 bootreq = platform.setDefaultPartitioning()
136 if bootreq:
137 autorequests.extend(bootreq)
138
139 (minswap, maxswap) = iutil.swapSuggestion()
140 autorequests.append(PartSpec(fstype="swap", size=minswap, maxSize=maxswap,
141 grow=True, asVol=True))
142
143 storage.autoPartitionRequests = autorequests
144
145 def setInstallData(self, anaconda):
146 SMEInstallClass.setInstallData(self, anaconda)
147 anaconda.id.security.setSELinux(SELINUX_DISABLED)
148 anaconda.id.storage.clearPartType = CLEARPART_TYPE_ALL
149
150 def productMatches(self, oldprod):
151 if oldprod is None:
152 return False
153
154 if oldprod.startswith(productName):
155 return True
156
157 return False
158
159 def __init__(self):
160 SMEInstallClass.__init__(self)

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