[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