[PATCH master 2/7] networking: mirror end-of-installation network config tweaks in ksdata.
Radek Vykydal
rvykydal at redhat.com
Fri Aug 24 09:36:12 UTC 2012
ksdata are updated in NetworkSpoke.apply from ifcfg files.
At the end of installation we need to modify ifcfg files
(network configuration) for devices used by storage and to
set ONBOOT defaults. So update also ksdata.
---
pyanaconda/install.py | 2 +-
pyanaconda/installclass.py | 3 ++-
pyanaconda/installclasses/fedora.py | 6 +++++-
pyanaconda/network.py | 14 ++++++++++----
pyanaconda/yuminstall.py | 2 +-
5 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/pyanaconda/install.py b/pyanaconda/install.py
index 25ef730..0652d46 100644
--- a/pyanaconda/install.py
+++ b/pyanaconda/install.py
@@ -87,7 +87,7 @@ def doInstall(storage, payload, ksdata, instClass):
ksdata.keyboard.execute(storage, ksdata, instClass)
ksdata.timezone.execute(storage, ksdata, instClass)
- writeNetworkConf(storage, instClass)
+ writeNetworkConf(storage, ksdata, instClass)
# Creating users and groups requires some pre-configuration.
u = Users()
diff --git a/pyanaconda/installclass.py b/pyanaconda/installclass.py
index 8e519aa..100c072 100644
--- a/pyanaconda/installclass.py
+++ b/pyanaconda/installclass.py
@@ -161,7 +161,8 @@ class BaseInstallClass(object):
return (all(result.values()), result)
- def setNetworkOnbootDefault(self):
+ # sets default ONBOOT values and updates ksdata accordingly
+ def setNetworkOnbootDefault(self, ksdata):
pass
def __init__(self):
diff --git a/pyanaconda/installclasses/fedora.py b/pyanaconda/installclasses/fedora.py
index e90f7a3..3fe2bd3 100644
--- a/pyanaconda/installclasses/fedora.py
+++ b/pyanaconda/installclasses/fedora.py
@@ -115,7 +115,7 @@ class InstallClass(BaseInstallClass):
# than two versions ago!
return newVer >= oldVer and newVer - oldVer <= 2
- def setNetworkOnbootDefault(self):
+ def setNetworkOnbootDefault(self, ksdata):
# if something's already enabled, we can just leave the config alone
for devName in network.getDevices():
if network.get_ifcfg_value(devName, "ONBOOT", ROOT_PATH) == "yes":
@@ -129,6 +129,10 @@ class InstallClass(BaseInstallClass):
dev.loadIfcfgFile()
dev.set(('ONBOOT', 'yes'))
dev.writeIfcfgFile()
+ for nd in ksdata.network.network:
+ if nd.device == dev.iface:
+ nd.onboot = True
+ break
break
def __init__(self):
diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index 7261ef6..5a24caa 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -860,7 +860,8 @@ def disableNMForStorageDevices(storage):
log.warning("disableNMForStorageDevices: ifcfg file for %s not found" %
devname)
-def autostartFCoEDevices(storage):
+# sets ONBOOT=yes (and its mirror value in ksdata) for devices used by FCoE
+def autostartFCoEDevices(storage, ksdata):
for devname in getDevices():
if usedByFCoE(devname, storage):
dev = NetworkDevice(ROOT_PATH + netscriptsDir, devname)
@@ -870,6 +871,10 @@ def autostartFCoEDevices(storage):
dev.writeIfcfgFile()
log.debug("setting ONBOOT=yes for network device %s used by fcoe"
% devname)
+ for nd in ksdata.network.network:
+ if nd.device == dev.iface:
+ nd.onboot = True
+ break
else:
log.warning("autoconnectFCoEDevices: ifcfg file for %s not found" %
devname)
@@ -894,12 +899,13 @@ def usedByRootOnISCSI(iface, storage):
return False
-def writeNetworkConf(storage, instClass):
+def writeNetworkConf(storage, ksdata, instClass):
write_sysconfig_network()
disableIPV6()
copyConfigToPath(ROOT_PATH)
# TODO the default for ONBOOT needs to be lay down
# before newui we didn't set it for kickstart installs
- instClass.setNetworkOnbootDefault()
+ instClass.setNetworkOnbootDefault(ksdata)
+ # NM_CONTROLLED is not mirrored in ksdata
disableNMForStorageDevices(storage)
- autostartFCoEDevices(storage)
+ autostartFCoEDevices(storage, ksdata)
diff --git a/pyanaconda/yuminstall.py b/pyanaconda/yuminstall.py
index ab4a469..8781f80 100644
--- a/pyanaconda/yuminstall.py
+++ b/pyanaconda/yuminstall.py
@@ -1632,7 +1632,7 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon
network.disableIPV6()
network.copyConfigToPath(ROOT_PATH)
if not anaconda.ksdata:
- anaconda.instClass.setNetworkOnbootDefault()
+ anaconda.instClass.setNetworkOnbootDefault(ksdata)
anaconda.storage.write()
else:
# ensure that /etc/mtab is a symlink to /proc/self/mounts
--
1.7.4
More information about the anaconda-patches
mailing list