Ack. On Tue, Feb 28, 2012 at 12:03:33PM +0100, Radek Vykydal wrote: > Resolves: rhbz#500273 > > All devices must be either bonded (using --iface option) or using > default. > --- > kickstart.py | 24 ++++++++++++++++++++---- > storage/iscsi.py | 10 +++++++++- > 2 files changed, 29 insertions(+), 5 deletions(-) > > diff --git a/kickstart.py b/kickstart.py > index de2dbe9..2c52854 100644 > --- a/kickstart.py > +++ b/kickstart.py > @@ -415,16 +415,32 @@ class IgnoreDisk(commands.ignoredisk.RHEL6_IgnoreDisk): > else: > anaconda.id.ksdata.skipSteps.extend(["filter", "filtertype"]) > > -class Iscsi(commands.iscsi.F10_Iscsi): > +class Iscsi(commands.iscsi.RHEL6_Iscsi): > def parse(self, args): > - tg = commands.iscsi.F10_Iscsi.parse(self, args) > + tg = commands.iscsi.RHEL6_Iscsi.parse(self, args) > + > + if tg.iface: > + active_ifaces = network.getActiveNetDevs() > + if tg.iface not in active_ifaces: > + raise KickstartValueError, formatErrorMsg(self.lineno, msg="network interface %s required by iscsi %s target is not up" % (tg.iface, tg.target)) > + > + mode = storage.iscsi.iscsi().mode > + if mode == "none": > + if tg.iface: > + storage.iscsi.iscsi().create_interfaces(active_ifaces) > + elif ((mode == "bind" and not tg.iface) > + or (mode == "default" and tg.iface)): > + raise KickstartValueError, formatErrorMsg(self.lineno, msg="iscsi --iface must be specified (binding used) either for all targets or for none") > > try: > storage.iscsi.iscsi().addTarget(tg.ipaddr, tg.port, tg.user, > tg.password, tg.user_in, > tg.password_in, > - target=tg.target) > - log.info("added iscsi target: %s" %(tg.ipaddr,)) > + target=tg.target, > + iface=tg.iface) > + log.info("added iscsi target %s at %s via %s" %(tg.target, > + tg.ipaddr, > + tg.iface)) > except (IOError, ValueError), e: > raise KickstartValueError, formatErrorMsg(self.lineno, > msg=str(e)) > diff --git a/storage/iscsi.py b/storage/iscsi.py > index 34c4ad0..7e93113 100644 > --- a/storage/iscsi.py > +++ b/storage/iscsi.py > @@ -369,7 +369,7 @@ class iscsi(object): > # NOTE: the same credentials are used for discovery and login > # (unlike in UI) > def addTarget(self, ipaddr, port="3260", user=None, pw=None, > - user_in=None, pw_in=None, intf=None, target=None): > + user_in=None, pw_in=None, intf=None, target=None, iface=None): > found = 0 > logged_in = 0 > > @@ -383,6 +383,12 @@ class iscsi(object): > log.debug("iscsi: skipping logging to iscsi node '%s'" % > node.name) > continue > + if iface: > + node_net_iface = self.ifaces.get(node.iface, node.iface) > + if iface != node_net_iface: > + log.debug("iscsi: skipping logging to iscsi node '%s' via %s" % > + (node.name, node_net_iface)) > + continue > > found = found + 1 > > @@ -406,6 +412,8 @@ class iscsi(object): > for n in self.active_nodes(): > f.write("iscsi --ipaddr %s --port %s --target %s" % > (n.address, n.port, n.name)) > + if n.iface != "default": > + f.write(" --iface %s" % self.ifaces[n.iface]) > auth = n.getAuth() > if auth: > f.write(" --user %s" % auth.username) > -- > 1.7.4 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list -- David Cantrell <dcantrell@xxxxxxxxxx> Supervisor, Installer Engineering Team Red Hat, Inc. | Westford, MA | EST5EDT _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list