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

Contents of /cdrom.image/product/installclasses/smeinstallclass.py

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


Revision 1.9 - (show annotations) (download) (as text)
Fri Oct 7 20:56:29 2005 UTC (19 years ago) by gordonr
Branch: MAIN
Changes since 1.8: +1 -5 lines
Content type: text/x-python
Put back Beta5 changes

1 from installclass import BaseInstallClass
2 from autopart import getAutopartitionBoot, autoCreatePartitionRequests, autoCreateLVMPartitionRequests
3 from fsset import *
4 from rhpl.translate import N_, _
5 from rhpl.log import log
6 from constants import *
7
8 import os
9 import iutil
10 import string
11 import partRequests
12 import partedUtils
13
14 class Script:
15 def __repr__(self):
16 str = ("(s: '%s' i: %s c: %d)") % \
17 (self.script, self.interp, self.inChroot)
18 return string.replace(str, "\n", "|")
19
20 def __init__(self, script, interp, inChroot, logfile = None):
21 self.script = script
22 self.interp = interp
23 self.inChroot = inChroot
24 self.logfile = logfile
25
26 def run(self, chroot, serial):
27 scriptRoot = "/"
28 if self.inChroot:
29 scriptRoot = chroot
30
31 path = scriptRoot + "/tmp/sme-script"
32
33 f = open(path, "w")
34 f.write(self.script)
35 f.close()
36 os.chmod(path, 0700)
37
38 if self.logfile is not None:
39 messages = self.logfile
40 elif serial:
41 messages = "/tmp/sme-script.log"
42 else:
43 messages = "/dev/tty3"
44
45 rc = iutil.execWithRedirect(self.interp,
46 [self.interp,"/tmp/sme-script"],
47 stdout = messages, stderr = messages,
48 root = scriptRoot)
49
50 if rc != 0:
51 log("WARNING - Error code %s encountered running a sme script", rc)
52
53 os.unlink(path)
54
55 class InstallClass(BaseInstallClass):
56 id = "smeserver"
57 name = N_("New _SME Server Install")
58 pixmap = "smeserver.png"
59 description = N_("This option performs a new install of "
60 "SME Server. All attached hard drives "
61 "will be repartitioned and formated.")
62 sortPriority = 1
63
64 parentClass = ( _("Install SME Server"), "smeserver.png" )
65
66 def requiredDisplayMode(self):
67 return 't'
68
69 def setSteps(self, dispatch):
70 dispatch.setStepList(
71 "language",
72 "keyboard",
73 "findrootparts",
74 "findinstall",
75 "installtype",
76 "partitionobjinit",
77 "autopartitionexecute",
78 "partition",
79 "partitiondone",
80 "bootloadersetup",
81 "languagesupport",
82 "timezone",
83 "readcomps",
84 "selectlangpackages",
85 "checkdeps",
86 "dependencies",
87 "install",
88 "enablefilesystems",
89 "migratefilesystems",
90 "setuptime",
91 "preinstallconfig",
92 "installpackages",
93 "postinstallconfig",
94 "writeconfig",
95 "instbootloader",
96 "dopostaction",
97 "methodcomplete",
98 "copylogs",
99 "setfilecon",
100 "complete"
101 )
102
103 # 'partition' can be used on the command line to force
104 # verification of partitions. useful in some cases...
105 cmdline = open("/proc/cmdline", "r").read()
106 cmdline = cmdline.split()
107 if "partition" in cmdline:
108 dispatch.skipStep("partition", skip = 0)
109 else:
110 dispatch.skipStep("partition", skip = 1)
111
112 def setDefaultPartitioning(self, partitions, clear = CLEARPART_TYPE_LINUX, doClear = 1):
113 diskset = partedUtils.DiskSet()
114 drives = diskset.driveList()
115 if len(drives) > 0:
116 uniqueID = 100
117 raid1 = []
118 raid2 = []
119 (swapMin, swapMax) = iutil.swapSuggestion()
120
121 for drive in drives:
122 filesystem = fileSystemTypeGet("software RAID")
123 request = partRequests.PartitionSpec(filesystem, drive=[drive], size=100, primary=1, format=1)
124 request.uniqueID = uniqueID
125 raid1.append(uniqueID)
126 partitions.autoPartitionRequests.append(request)
127
128 filesystem = fileSystemTypeGet("software RAID")
129 request = partRequests.PartitionSpec(filesystem, drive=[drive], size=swapMin+1500,
130 grow=1, format=1);
131 request.uniqueID = uniqueID + 10
132 raid2.append(uniqueID + 10)
133 partitions.autoPartitionRequests.append(request)
134
135 uniqueID = uniqueID + 1
136
137 filesystem = fileSystemTypeGet("ext3")
138 request = partRequests.RaidRequestSpec(filesystem, mountpoint="/boot", raidminor=1,
139 raidmembers=raid1, raidlevel="RAID1", format=1, raidspares=0)
140 partitions.autoPartitionRequests.append(request)
141
142 if len(drives) > 5:
143 raidLevel = "RAID6"
144 elif len(drives) > 2:
145 raidLevel = "RAID5"
146 else:
147 raidLevel = "RAID1"
148
149 filesystem = fileSystemTypeGet("physical volume (LVM)")
150 request = partRequests.RaidRequestSpec(filesystem, raidmembers=raid2, raidminor=2,
151 raidlevel=raidLevel, format=1, raidspares=0)
152 request.uniqueID = 200
153 partitions.autoPartitionRequests.append(request)
154
155 request = partRequests.VolumeGroupRequestSpec(vgname="vg_primary", physvols=[200],
156 pesize=32768, format=1)
157 request.uniqueID = 201
158 partitions.autoPartitionRequests.append(request)
159
160 filesystem = fileSystemTypeGet("swap")
161 request = partRequests.LogicalVolumeRequestSpec(filesystem, format=1, grow=1,
162 size=swapMin, maxSizeMB=swapMax, volgroup=201, lvname="lv_swap")
163 partitions.autoPartitionRequests.append(request)
164
165 filesystem = fileSystemTypeGet("ext3")
166 (size, maxSizeMB) = iutil.swapSuggestion()
167 request = partRequests.LogicalVolumeRequestSpec(filesystem, format=1, grow=1,
168 mountpoint="/", size=1300, volgroup=201, lvname="lv_root")
169 partitions.autoPartitionRequests.append(request)
170 else:
171 BaseInstallClass.setDefaultPartitioning(self, partitions, clear, doClear)
172
173 def setGroupSelection(self, grpset, intf):
174 grpset.unselectAll()
175 grpset.selectGroup("Base")
176
177 def postAction(self, rootPath, serial):
178 script = ( "/sbin/syslogd &\n"
179 "sleep 2\n"
180 "/sbin/e-smith/signal-event post-install\n" )
181 s = Script(script, interp="/bin/sh", inChroot=1)
182 log("%s", s)
183 s.run(rootPath, serial)
184
185 def setInstallData(self, id, intf = None):
186 BaseInstallClass.setInstallData(self, id)
187 self.setAuthentication(id, useShadow=1, useMd5=1)
188 self.setRootPassword(id, pw="ThisIsGoingToBeDisabledAnyway", isCrypted=0)
189 self.setZeroMbr(id, zeroMbr=1)
190 self.setClearParts(id, clear=CLEARPART_TYPE_ALL, initAll=1)
191 self.setDefaultPartitioning(id.partitions, doClear=0)
192 self.setBootloader(id, useLilo=0, location="mbr", linear=1)
193
194 def __init__(self, expert):
195 BaseInstallClass.__init__(self, expert)

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