2 # Chris Lumens <clumens@redhat.com>
4 # Copyright 2005, 2006, 2007, 2008 Red Hat, Inc.
6 # This copyrighted material is made available to anyone wishing to use, modify,
7 # copy, or redistribute it subject to the terms and conditions of the GNU
8 # General Public License v.2. This program is distributed in the hope that it
9 # will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the
10 # implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 # See the GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License along with
14 # this program; if not, write to the Free Software Foundation, Inc., 51
15 # Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat
16 # trademarks that are incorporated in the source code or documentation are not
17 # subject to the GNU General Public License and may only be used or replicated
18 # with the express permission of Red Hat, Inc.
20 from imgcreate
.pykickstart
.base
import *
21 from imgcreate
.pykickstart
.errors
import *
22 from imgcreate
.pykickstart
.options
import *
25 _
= lambda x
: gettext
.ldgettext("pykickstart", x
)
27 class FC3_LogVolData(BaseData
):
28 def __init__(self
, fstype
="", grow
=False, maxSizeMB
=0, name
="",
29 format
=True, percent
=0, recommended
=False, size
=None,
30 preexist
=False, vgname
="", mountpoint
=""):
31 BaseData
.__init
__(self
)
34 self
.maxSizeMB
= maxSizeMB
37 self
.percent
= percent
38 self
.recommended
= recommended
40 self
.preexist
= preexist
42 self
.mountpoint
= mountpoint
44 def _getArgsAsStr(self
):
48 retval
+= " --fstype=\"%s\"" % self
.fstype
51 if self
.maxSizeMB
> 0:
52 retval
+= " --maxsize=%d" % self
.maxSizeMB
54 retval
+= " --noformat"
56 retval
+= " --percent=%d" % self
.percent
58 retval
+= " --recommended"
60 retval
+= " --size=%d" % self
.size
62 retval
+= " --useexisting"
67 return "logvol %s %s --name=%s --vgname=%s\n" % (self
.mountpoint
, self
._getArgsAsStr
(), self
.name
, self
.vgname
)
69 class FC4_LogVolData(FC3_LogVolData
):
70 def __init__(self
, bytesPerInode
=4096, fsopts
="", fstype
="", grow
=False,
71 maxSizeMB
=0, name
="", format
=True, percent
=0,
72 recommended
=False, size
=None, preexist
=False, vgname
="",
74 FC3_LogVolData
.__init
__(self
, fstype
=fstype
, grow
=grow
,
75 maxSizeMB
=maxSizeMB
, name
=name
,
76 format
=format
, percent
=percent
,
77 recommended
=recommended
, size
=size
,
78 preexist
=preexist
, vgname
=vgname
,
79 mountpoint
=mountpoint
)
80 self
.bytesPerInode
= bytesPerInode
83 def _getArgsAsStr(self
):
84 retval
= FC3_LogVolData
._getArgsAsStr
(self
)
86 if self
.bytesPerInode
> 0:
87 retval
+= " --bytes-per-inode=%d" % self
.bytesPerInode
89 retval
+= " --fsoptions=\"%s\"" % self
.fsopts
93 class RHEL5_LogVolData(FC4_LogVolData
):
94 def __init__(self
, fsopts
="", fstype
="", grow
=False,
95 maxSizeMB
=0, name
="", format
=True, percent
=0,
96 recommended
=False, size
=None, preexist
=False, vgname
="",
97 bytesPerInode
=4096, mountpoint
="", encrypted
=False,
99 FC4_LogVolData
.__init
__(self
, fstype
=fstype
, grow
=grow
,
100 maxSizeMB
=maxSizeMB
, name
=name
,
101 format
=format
, percent
=percent
,
102 recommended
=recommended
, size
=size
,
103 preexist
=preexist
, vgname
=vgname
,
104 bytesPerInode
=bytesPerInode
,
105 mountpoint
=mountpoint
, fsopts
=fsopts
)
106 self
.encrypted
= encrypted
107 self
.passphrase
= passphrase
109 def _getArgsAsStr(self
):
110 retval
= FC4_LogVolData
._getArgsAsStr
(self
)
113 retval
+= " --encrypted"
115 if self
.passphrase
!= "":
116 retval
+= " --passphrase=\"%s\"" % self
.passphrase
120 class F9_LogVolData(FC3_LogVolData
):
121 def __init__(self
, fsopts
="", fstype
="", grow
=False,
122 maxSizeMB
=0, name
="", format
=True, percent
=0,
123 recommended
=False, size
=None, preexist
=False, vgname
="",
124 mountpoint
="", fsprofile
="", encrypted
=False, passphrase
=""):
125 FC3_LogVolData
.__init
__(self
, fstype
=fstype
, grow
=grow
,
126 maxSizeMB
=maxSizeMB
, name
=name
,
127 format
=format
, percent
=percent
,
128 recommended
=recommended
, size
=size
,
129 preexist
=preexist
, vgname
=vgname
,
130 mountpoint
=mountpoint
)
132 self
.fsprofile
= fsprofile
133 self
.encrypted
= encrypted
134 self
.passphrase
= passphrase
136 def _getArgsAsStr(self
):
137 retval
= FC3_LogVolData
._getArgsAsStr
(self
)
139 if self
.fsprofile
!= "":
140 retval
+= " --fsprofile=\"%s\"" % self
.fsprofile
142 retval
+= " --encrypted"
144 if self
.passphrase
!= "":
145 retval
+= " --passphrase=\"%s\"" % self
.passphrase
149 class FC3_LogVol(KickstartCommand
):
150 def __init__(self
, writePriority
=132, lvList
=None):
151 KickstartCommand
.__init
__(self
, writePriority
)
152 self
.op
= self
._getParser
()
162 for part
in self
.lvList
:
163 retval
+= part
.__str
__()
167 def _getParser(self
):
168 def lv_cb (option
, opt_str
, value
, parser
):
169 parser
.values
.format
= False
170 parser
.values
.preexist
= True
172 op
= KSOptionParser(lineno
=self
.lineno
)
173 op
.add_option("--fstype", dest
="fstype")
174 op
.add_option("--grow", dest
="grow", action
="store_true",
176 op
.add_option("--maxsize", dest
="maxSizeMB", action
="store", type="int",
178 op
.add_option("--name", dest
="name", required
=1)
179 op
.add_option("--noformat", action
="callback", callback
=lv_cb
,
180 dest
="format", default
=True, nargs
=0)
181 op
.add_option("--percent", dest
="percent", action
="store", type="int",
183 op
.add_option("--recommended", dest
="recommended", action
="store_true",
185 op
.add_option("--size", dest
="size", action
="store", type="int",
187 op
.add_option("--useexisting", dest
="preexist", action
="store_true",
189 op
.add_option("--vgname", dest
="vgname", required
=1)
192 def parse(self
, args
):
193 (opts
, extra
) = self
.op
.parse_args(args
=args
)
196 raise KickstartValueError
, formatErrorMsg(self
.lineno
, msg
=_("Mount point required for %s") % "logvol")
198 lvd
= self
.handler
.LogVolData()
199 self
._setToObj
(self
.op
, opts
, lvd
)
200 lvd
.mountpoint
=extra
[0]
203 def add(self
, newObj
):
204 self
.lvList
.append(newObj
)
206 class FC4_LogVol(FC3_LogVol
):
207 def __init__(self
, writePriority
=132, lvList
=None):
208 FC3_LogVol
.__init
__(self
, writePriority
, lvList
)
210 def _getParser(self
):
211 op
= FC3_LogVol
._getParser
(self
)
212 op
.add_option("--bytes-per-inode", dest
="bytesPerInode", action
="store",
214 op
.add_option("--fsoptions", dest
="fsopts")
217 class RHEL5_LogVol(FC4_LogVol
):
218 def __init__(self
, writePriority
=132, lvList
=None):
219 FC4_LogVol
.__init
__(self
, writePriority
, lvList
)
221 def _getParser(self
):
222 op
= FC4_LogVol
._getParser
(self
)
223 op
.add_option("--encrypted", action
="store_true", default
=False)
224 op
.add_option("--passphrase")
227 class F9_LogVol(FC4_LogVol
):
228 def __init__(self
, writePriority
=132, lvList
=None):
229 FC4_LogVol
.__init
__(self
, writePriority
, lvList
)
231 def _getParser(self
):
232 op
= FC4_LogVol
._getParser
(self
)
233 op
.add_option("--bytes-per-inode", deprecated
=1)
234 op
.add_option("--fsprofile", dest
="fsprofile", action
="store",
235 type="string", nargs
=1)
236 op
.add_option("--encrypted", action
="store_true", default
=False)
237 op
.add_option("--passphrase")