move pykickstart -> imgcreate.pykickstart
[pykickstart/EL-5.git] / pykickstart / commands / logvol.py
blob180a6171ceaf3a34f815fae2c452a45a1d8b556f
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 *
24 import gettext
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)
32 self.fstype = fstype
33 self.grow = grow
34 self.maxSizeMB = maxSizeMB
35 self.name = name
36 self.format = format
37 self.percent = percent
38 self.recommended = recommended
39 self.size = size
40 self.preexist = preexist
41 self.vgname = vgname
42 self.mountpoint = mountpoint
44 def _getArgsAsStr(self):
45 retval = ""
47 if self.fstype != "":
48 retval += " --fstype=\"%s\"" % self.fstype
49 if self.grow:
50 retval += " --grow"
51 if self.maxSizeMB > 0:
52 retval += " --maxsize=%d" % self.maxSizeMB
53 if not self.format:
54 retval += " --noformat"
55 if self.percent > 0:
56 retval += " --percent=%d" % self.percent
57 if self.recommended:
58 retval += " --recommended"
59 if self.size > 0:
60 retval += " --size=%d" % self.size
61 if self.preexist:
62 retval += " --useexisting"
64 return retval
66 def __str__(self):
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="",
73 mountpoint=""):
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
81 self.fsopts = fsopts
83 def _getArgsAsStr(self):
84 retval = FC3_LogVolData._getArgsAsStr(self)
86 if self.bytesPerInode > 0:
87 retval += " --bytes-per-inode=%d" % self.bytesPerInode
88 if self.fsopts != "":
89 retval += " --fsoptions=\"%s\"" % self.fsopts
91 return retval
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,
98 passphrase=""):
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)
112 if self.encrypted:
113 retval += " --encrypted"
115 if self.passphrase != "":
116 retval += " --passphrase=\"%s\"" % self.passphrase
118 return retval
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)
131 self.fsopts = fsopts
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
141 if self.encrypted:
142 retval += " --encrypted"
144 if self.passphrase != "":
145 retval += " --passphrase=\"%s\"" % self.passphrase
147 return retval
149 class FC3_LogVol(KickstartCommand):
150 def __init__(self, writePriority=132, lvList=None):
151 KickstartCommand.__init__(self, writePriority)
152 self.op = self._getParser()
154 if lvList == None:
155 lvList = []
157 self.lvList = lvList
159 def __str__(self):
160 retval = ""
162 for part in self.lvList:
163 retval += part.__str__()
165 return retval
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",
175 default=False)
176 op.add_option("--maxsize", dest="maxSizeMB", action="store", type="int",
177 nargs=1)
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",
182 nargs=1)
183 op.add_option("--recommended", dest="recommended", action="store_true",
184 default=False)
185 op.add_option("--size", dest="size", action="store", type="int",
186 nargs=1)
187 op.add_option("--useexisting", dest="preexist", action="store_true",
188 default=False)
189 op.add_option("--vgname", dest="vgname", required=1)
190 return op
192 def parse(self, args):
193 (opts, extra) = self.op.parse_args(args=args)
195 if len(extra) == 0:
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]
201 self.add(lvd)
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",
213 type="int", nargs=1)
214 op.add_option("--fsoptions", dest="fsopts")
215 return op
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")
225 return op
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")
238 return op