[PATCH rhel7-branch 1/5] network: add team support to kickstart (#1003591)

Radek Vykydal rvykydal at redhat.com
Wed Nov 6 10:02:15 UTC 2013


Resolves: rhbz#1003591
---
 anaconda.spec.in        |  1 +
 dracut/parse-kickstart  | 32 ++++++++++++++++++++++++++++++--
 pyanaconda/kickstart.py |  2 +-
 3 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/anaconda.spec.in b/anaconda.spec.in
index 14d9338..3939c1c 100644
--- a/anaconda.spec.in
+++ b/anaconda.spec.in
@@ -107,6 +107,7 @@ Requires: pytz
 Requires: libxklavier
 Requires: libgnomekbd
 Requires: realmd
+Requires: teamd
 %ifarch %livearches
 Requires: usermode
 Requires: zenity
diff --git a/dracut/parse-kickstart b/dracut/parse-kickstart
index 2192e2c..3dd8e0e 100755
--- a/dracut/parse-kickstart
+++ b/dracut/parse-kickstart
@@ -98,7 +98,7 @@ class DriverDisk(commands.driverdisk.F14_DriverDisk):
         if location:
             return "inst.driverdisk=%s" % location
 
-class Network(commands.network.F19_Network):
+class Network(commands.network.F20_Network):
     def dracut_args(self, args, lineno, net):
         '''
         NOTE: The first 'network' line get special treatment:
@@ -276,7 +276,7 @@ def ksnet_to_ifcfg(net, filename=None):
     if not dev:
         return
     if (not os.path.isdir("/sys/class/net/%s" % dev)
-        and not net.bondslaves):
+        and not net.bondslaves and not net.teamslaves):
         log.info("can't find device %s" % dev)
         return
     ifcfg = dict()
@@ -366,6 +366,34 @@ def ksnet_to_ifcfg(net, filename=None):
             log.info("writing ifcfg %s for slave %s of bond %s" % (slave_filename, slave, dev))
             write_ifcfg(slave_filename, slave_ifcfg)
 
+    if net.teamslaves:
+
+        ifcfg.pop('HWADDR')
+        ifcfg['TYPE'] = "Team"
+        ifcfg['NAME'] = "Team connection %s" % dev
+        ifcfg['TEAM_CONFIG'] = "'" + net.teamconfig + "'"
+
+        for i, (slave, cfg) in enumerate(net.teamslaves):
+            slave_ifcfg = {
+                            'DEVICE': slave,
+                            'DEVICETYPE' : "TeamPort",
+                            'NAME' : "%s slave %s" % (dev, i),
+                            'UUID' : str(uuid.uuid4()),
+                            'ONBOOT' : "yes",
+                            'TEAM_MASTER' : dev,
+#                            'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
+                          }
+            if cfg:
+                slave_ifcfg['TEAM_PORT_CONFIG'] = "'" + cfg + "'"
+
+            # not using NM naming conventions, following dracut so that it does not
+            # override kickstart config by generating its own ifcfg files for slaves
+            #slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
+            # FIXME - change in dracut?
+            slave_filename = "/tmp/ifcfg/ifcfg-%s" % slave
+            log.info("writing ifcfg %s for slave %s of team %s" % (slave_filename, slave, dev))
+            write_ifcfg(slave_filename, slave_ifcfg)
+
     if net.vlanid:
         interface_name = "%s.%s" % (dev, net.vlanid)
         ifcfg.pop('HWADDR')
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index b206231..2d5e7b3 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -867,7 +867,7 @@ class Logging(commands.logging.FC6_Logging):
                 remote_server = "%s:%s" %(self.host, self.port)
             logger.updateRemote(remote_server)
 
-class Network(commands.network.F19_Network):
+class Network(commands.network.F20_Network):
     def execute(self, storage, ksdata, instClass):
         network.write_network_config(storage, ksdata, instClass, ROOT_PATH)
 
-- 
1.7.11.7



More information about the anaconda-patches mailing list