Skip to content

Commit

Permalink
network: add s390 options to default ifcfg files (#1074570)
Browse files Browse the repository at this point in the history
Resolves: rhbz#1074570
  • Loading branch information
rvykydal committed Jul 15, 2015
1 parent 0b6aded commit 779f323
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 0 deletions.
1 change: 1 addition & 0 deletions dracut/Makefile.am
Expand Up @@ -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 \
Expand Down
3 changes: 3 additions & 0 deletions 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
1 change: 1 addition & 0 deletions dracut/module-setup.sh
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions dracut/parse-kickstart
Expand Up @@ -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': '',
Expand Down
45 changes: 45 additions & 0 deletions pyanaconda/network.py
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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)
Expand Down

0 comments on commit 779f323

Please sign in to comment.