[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH rhel6-branch 6/7] iscsi: add interface binding support to kickstart (#500273)



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 redhat com
> https://www.redhat.com/mailman/listinfo/anaconda-devel-list

-- 
David Cantrell <dcantrell redhat com>
Supervisor, Installer Engineering Team
Red Hat, Inc. | Westford, MA | EST5EDT


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]