Add new RHEL7 logvol objects to master
[pykickstart.git] / pykickstart / commands / dmraid.py
blob28d72b69bbd01feea65313ec5e72f13018a2f745
2 # Chris Lumens <clumens@redhat.com>
3 # Peter Jones <pjones@redhat.com>
5 # Copyright 2006, 2007 Red Hat, Inc.
7 # This copyrighted material is made available to anyone wishing to use, modify,
8 # copy, or redistribute it subject to the terms and conditions of the GNU
9 # General Public License v.2. This program is distributed in the hope that it
10 # will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the
11 # implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 # See the GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License along with
15 # this program; if not, write to the Free Software Foundation, Inc., 51
16 # Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat
17 # trademarks that are incorporated in the source code or documentation are not
18 # subject to the GNU General Public License and may only be used or replicated
19 # with the express permission of Red Hat, Inc.
21 from pykickstart.base import BaseData, KickstartCommand
22 from pykickstart.options import KSOptionParser
24 import gettext
25 import warnings
26 _ = lambda x: gettext.ldgettext("pykickstart", x)
28 class FC6_DmRaidData(BaseData):
29 removedKeywords = BaseData.removedKeywords
30 removedAttrs = BaseData.removedAttrs
32 def __init__(self, *args, **kwargs):
33 BaseData.__init__(self, *args, **kwargs)
35 self.name = kwargs.get("name", "")
36 self.devices = kwargs.get("devices", [])
37 self.dmset = kwargs.get("dmset", None)
39 def __eq__(self, y):
40 if not y:
41 return False
43 return self.name == y.name and self.devices == y.devices
45 def __ne__(self, y):
46 return not self == y
48 def __str__(self):
49 retval = BaseData.__str__(self)
50 retval += "dmraid --name=%s" % self.name
52 for dev in self.devices:
53 retval += " --dev=\"%s\"" % dev
55 return retval + "\n"
57 class FC6_DmRaid(KickstartCommand):
58 removedKeywords = KickstartCommand.removedKeywords
59 removedAttrs = KickstartCommand.removedAttrs
61 def __init__(self, writePriority=60, *args, **kwargs):
62 KickstartCommand.__init__(self, writePriority, *args, **kwargs)
63 self.op = self._getParser()
65 self.dmraids = kwargs.get("dmraids", [])
67 def __str__(self):
68 retval = ""
69 for dm in self.dmraids:
70 retval += dm.__str__()
72 return retval
74 def _getParser(self):
75 op = KSOptionParser()
76 op.add_option("--name", dest="name", action="store", type="string",
77 required=1)
78 op.add_option("--dev", dest="devices", action="append", type="string",
79 required=1)
80 return op
82 def parse(self, args):
83 dm = FC6_DmRaidData()
84 (opts, _extra) = self.op.parse_args(args=args, lineno=self.lineno)
85 dm.name = dm.name.split('/')[-1]
86 self._setToObj(self.op, opts, dm)
87 dm.lineno = self.lineno
89 # Check for duplicates in the data list.
90 if dm in self.dataList():
91 warnings.warn(_("A DM RAID device with the name %s and devices %s has already been defined.") % (dm.name, dm.devices))
93 return dm
95 def dataList(self):
96 return self.dmraids