[rhel7-branch 1/1] network: add s390 options to default ifcfg files (#1074570)
rvykydal
installerbot-noreply at redhat.com
Wed Jul 15 08:19:06 UTC 2015
From: Radek Vykydal <rvykydal at redhat.com>
Resolves: rhbz#1074570
---
dracut/Makefile.am | 1 +
dracut/anaconda-copy-s390ccwconf.sh | 3 +++
dracut/module-setup.sh | 1 +
dracut/parse-kickstart | 1 +
pyanaconda/network.py | 45 +++++++++++++++++++++++++++++++++++++
5 files changed, 51 insertions(+)
create mode 100755 dracut/anaconda-copy-s390ccwconf.sh
diff --git a/dracut/Makefile.am b/dracut/Makefile.am
index 71d6bed..b389a34 100644
--- a/dracut/Makefile.am
+++ b/dracut/Makefile.am
@@ -33,6 +33,7 @@ dist_dracut_SCRIPTS = module-setup.sh \
anaconda-diskroot \
anaconda-copy-ks.sh \
anaconda-copy-cmdline.sh \
+ anaconda-copy-s390ccwconf.sh \
anaconda-ifcfg.sh \
fetch-kickstart-net.sh \
fetch-kickstart-disk \
diff --git a/dracut/anaconda-copy-s390ccwconf.sh b/dracut/anaconda-copy-s390ccwconf.sh
new file mode 100755
index 0000000..0074720
--- /dev/null
+++ b/dracut/anaconda-copy-s390ccwconf.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# Copy over s390 config /etc/ccw.conf for anaconda before pivot
+[ -e /etc/ccw.conf ] && cp /etc/ccw.conf /run/install
diff --git a/dracut/module-setup.sh b/dracut/module-setup.sh
index 7e2df9f..5afdfcb 100755
--- a/dracut/module-setup.sh
+++ b/dracut/module-setup.sh
@@ -37,6 +37,7 @@ install() {
inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot"
inst_hook pre-pivot 50 "$moddir/anaconda-copy-ks.sh"
inst_hook pre-pivot 50 "$moddir/anaconda-copy-cmdline.sh"
+ inst_hook pre-pivot 50 "$moddir/anaconda-copy-s390ccwconf.sh"
inst_hook pre-pivot 99 "$moddir/save-initramfs.sh"
inst_hook pre-shutdown 50 "$moddir/anaconda-pre-shutdown.sh"
# kickstart parsing, WOOOO
diff --git a/dracut/parse-kickstart b/dracut/parse-kickstart
index a4f3666..89fdab6 100755
--- a/dracut/parse-kickstart
+++ b/dracut/parse-kickstart
@@ -264,6 +264,7 @@ def find_devname(mac):
if thismac.lower() == mac.lower():
return netif
+# We duplicate this in pyanaconda/network.py
def s390_settings(device):
cfg = {
'SUBCHANNELS': '',
diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index a9ba670..3e49e8f 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -35,6 +35,7 @@
import IPy
from uuid import uuid4
import itertools
+import glob
from pyanaconda.simpleconfig import SimpleConfigFile
from blivet.devices import FcoeDiskDevice, iScsiDiskDevice
@@ -537,6 +538,18 @@ def add_connection_for_ksdata(networkdata, devname):
values.append(['connection', 'id', devname, 's'])
values.append(['connection', 'interface-name', devname, 's'])
+ # Add s390 settings
+ s390cfg = _get_s390_settings(devname)
+ if s390cfg['SUBCHANNELS']:
+ subchannels = s390cfg['SUBCHANNELS'].split(",")
+ values.append(['802-3-ethernet', 's390-subchannels', subchannels, 'as'])
+ if s390cfg['NETTYPE']:
+ values.append(['802-3-ethernet', 's390-nettype', s390cfg['NETTYPE'], 's'])
+ if s390cfg['OPTIONS']:
+ opts = s390cfg['OPTIONS'].split(" ")
+ opts_dict = {k:v for k,v in (o.split("=") for o in opts)}
+ values.append(['802-3-ethernet', 's390-options', opts_dict, 'a{ss}'])
+
dev_spec = devname
try:
@@ -547,6 +560,38 @@ def add_connection_for_ksdata(networkdata, devname):
added_connections.insert(0, (con_uuid, dev_spec))
return added_connections
+# We duplicate this in dracut/parse-kickstart
+def _get_s390_settings(devname):
+ cfg = {
+ 'SUBCHANNELS': '',
+ 'NETTYPE': '',
+ 'OPTIONS': ''
+ }
+
+ subchannels = []
+ for symlink in sorted(glob.glob("/sys/class/net/%s/device/cdev[0-9]*" % devname)):
+ subchannels.append(os.path.basename(os.readlink(symlink)))
+ if not subchannels:
+ return cfg
+ cfg['SUBCHANNELS'] = ','.join(subchannels)
+
+ ## cat /etc/ccw.conf
+ #qeth,0.0.0900,0.0.0901,0.0.0902,layer2=0,portname=FOOBAR,portno=0
+ #
+ #SUBCHANNELS="0.0.0900,0.0.0901,0.0.0902"
+ #NETTYPE="qeth"
+ #OPTIONS="layer2=1 portname=FOOBAR portno=0"
+ with open('/run/install/ccw.conf') as f:
+ # pylint: disable=redefined-outer-name
+ for line in f:
+ if cfg['SUBCHANNELS'] in line:
+ items = line.strip().split(',')
+ cfg['NETTYPE'] = items[0]
+ cfg['OPTIONS'] = " ".join(i for i in items[1:] if '=' in i)
+ break
+
+ return cfg
+
def _add_slave_connection(slave_type, slave, master, activate, values=None):
values = values or []
#slave_name = "%s slave %d" % (devname, slave_idx)
--
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/779f323891762bf2fb98652639aa5691b948f5be
More information about the anaconda-patches
mailing list