[Ovirt-devel] [PATCH] fix ipv4 static/dhcp/disabled networking changes

Joey Boggs jboggs at redhat.com
Wed Jul 20 20:20:47 UTC 2011


This fixes networking changes when switching from dhcp/static to disabled. Before the ifcfg scripts would contain old values from the previous configuration. Support for disabled devices is now added and some useless remnant bash->python coding cleaned up
---
 scripts/network.py            |   45 +++++++++++++++++++---------------------
 scripts/ovirt-config-setup.py |   34 +++++++++++++++++-------------
 scripts/ovirtfunctions.py     |    2 +-
 3 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/scripts/network.py b/scripts/network.py
index 8159283..8956d00 100644
--- a/scripts/network.py
+++ b/scripts/network.py
@@ -42,27 +42,21 @@ class Network:
 
     def configure_interface(self):
         log("Configuring Interface")
+        self.disabled_nic = 0
         if OVIRT_VARS.has_key("OVIRT_IP_ADDRESS"):
             IPADDR = OVIRT_VARS["OVIRT_IP_ADDRESS"]
             NETMASK = OVIRT_VARS["OVIRT_IP_NETMASK"]
             GATEWAY = OVIRT_VARS["OVIRT_IP_GATEWAY"]
 
-        if OVIRT_VARS.has_key("OVIRT_BOOTIF"):
-            self.CONFIGURED_NIC = OVIRT_VARS["OVIRT_BOOTIF"]
-        if not self.CONFIGURED_NIC is None:
-            log("\nDeleting existing network configuration...\n")
-            os.system("cp -a  /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/backup.lo")
-            for file in os.listdir("/etc/sysconfig/network-scripts/"):
-                if "ifcfg-" in file:
-                    remove_config("/etc/sysconfig/network-scripts/" + file)
-            os.system("rm -rf /etc/sysconfig/network-scripts/ifcfg-* &>/dev/null")
-            os.system("cp -a  /etc/sysconfig/network-scripts/backup.lo /etc/sysconfig/network-scripts/ifcfg-lo")
-        else:
+        if self.CONFIGURED_NIC is None:
             log("\nAborting...\n")
             return False
 
-        for file in os.listdir(self.WORKDIR):
-            os.system("rm -rf %s/%s") % (self.WORKDIR, file)
+        if OVIRT_VARS.has_key("OVIRT_BOOTIF"):
+            if OVIRT_VARS["OVIRT_BOOTIF"].endswith("-DISABLED"):
+                self.disabled_nic = 1
+            self.CONFIGURED_NIC = OVIRT_VARS["OVIRT_BOOTIF"].strip("-DISABLED")
+
         n_address = open("/sys/class/net/" + self.CONFIGURED_NIC + "/address")
         nic_hwaddr = n_address.readline().strip("\n")
         n_address.close()
@@ -112,10 +106,14 @@ class Network:
 
 
         if not OVIRT_VARS.has_key("OVIRT_IP_ADDRESS"):
-	    if not self.VL_CONFIG:
-	        self.IF_CONFIG += "set %s/BRIDGE %s\n" % (IF_ROOT, BRIDGE)
-            self.BR_CONFIG += "set %s/BOOTPROTO dhcp\n" % BR_ROOT
-        else:
+            if OVIRT_VARS.has_key("OVIRT_BOOTIF") and self.disabled_nic == 0:
+                if not self.VL_CONFIG:
+	            self.IF_CONFIG += "set %s/BRIDGE %s\n" % (IF_ROOT, BRIDGE)
+                self.BR_CONFIG += "set %s/BOOTPROTO dhcp\n" % BR_ROOT
+            elif self.disabled_nic == 1:
+                self.BR_CONFIG += "set %s/BOOTPROTO none\n" % BR_ROOT
+
+        elif OVIRT_VARS.has_key("OVIRT_IP_ADDRESS"):
             if OVIRT_VARS.has_key("OVIRT_IP_ADDRESS") and OVIRT_VARS["OVIRT_IP_ADDRESS"] != "off":
                 self.BR_CONFIG += "set %s/BOOTPROTO static\n" % (BR_ROOT)
 		if self.VL_CONFIG == "":
@@ -134,7 +132,6 @@ class Network:
             self.VL_CONFIG = self_VL_CONFIG.split("\n")
         except:
             pass
-        log("VL_CONFIG: " + self.VL_CONFIG)
         return True
 
     def configure_dns(self):
@@ -194,13 +191,12 @@ class Network:
 #        except:
 #            pass
 #
-#        for script in os.listdir("/etc/sysconfig/network-scripts/"):
-#            if "ifcfg" in script:
-#                if not "ifcfg-lo" in script:
-#                    ovirt_safe_delete_config(script)
+        for script in os.listdir("/etc/sysconfig/network-scripts/"):
+            if self.CONFIGURED_NIC in script:
+                log("Removing Script: " + script)
+                ovirt_safe_delete_config("/etc/sysconfig/network-scripts/" + script)
+        augtool("rm", "/files/etc/sysconfig/network-scripts/ifcfg-br"+self.CONFIGURED_NIC, "")
 
-        config = self.WORKDIR + "/config-augtool"
-        
         for line in self.IF_CONFIG:
             log(line)
             try:
@@ -209,6 +205,7 @@ class Network:
             except:
                 oper, file = line.split()
                 augtool(oper, line, "")
+
         for line in self.BR_CONFIG:
             log(line)
             try:
diff --git a/scripts/ovirt-config-setup.py b/scripts/ovirt-config-setup.py
index 6ac09dc..582fad1 100755
--- a/scripts/ovirt-config-setup.py
+++ b/scripts/ovirt-config-setup.py
@@ -1140,7 +1140,10 @@ class NodeConfigScreen():
 
       def process_nic_config(self):
           augtool("rm", "/files/" + OVIRT_DEFAULTS + "/OVIRT_BOOTIF", "")
-          augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_BOOTIF", '"' + self.nic_lb.current() + '"')
+          if self.disabled_ipv4_nic_proto.value() == 1:
+              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_BOOTIF", '"' + self.nic_lb.current() + '-DISABLED"')
+          else:
+              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_BOOTIF", '"' + self.nic_lb.current() + '"')
           augtool("rm", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_ADDRESS", "")
           augtool("rm", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_NETMASK", "")
           augtool("rm", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_GATEWAY", "")
@@ -1155,26 +1158,27 @@ class NodeConfigScreen():
                   msg = "  - IPv4 Address\n"
               if self.ipv4_netdevmask.value() == "":
                   msg += "  - IPv4 Netmask Address\n"
-              if self.ipv6_netdevip.value() == "":
-                  msg = "  - IPv6 Address\n"
+              if self.ipv4_netdevgateway.value() == "":
+                  msg = "  - IPv4 Gateway Address\n"
+              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_ADDRESS", '"' + self.ipv4_netdevip.value() + '"')
+              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_NETMASK", '"' + self.ipv4_netdevmask.value() + '"')
+              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_GATEWAY", '"' + self.ipv4_netdevgateway.value() + '"')
+
           if self.static_ipv6_nic_proto.value() == 1:
               if self.ipv6_netdevmask.value() == "":
                   msg += "  - IPv6 Netmask Address\n"
               if self.ipv6_netdevgateway.value() == "":
                   msg += "  - IPv6 Gateway Address\n"
               # left out gateway check to prevent multiple ones
-              if msg != "":
-                  msg = "Please Input:\n" + msg
-                  warn = ButtonChoiceWindow(self.screen, "Network Settings", msg, buttons = ['Ok'])
-                  self.__nic_config_failed = 1
-                  self.ipv4_current_netdevip = self.ipv4_netdevip.value()
-                  self.ipv4_current_netdevmask = self.ipv4_netdevmask.value()
-                  self.ipv4_current_netdevgateway = self.ipv4_netdevgateway.value()
-                  self.reset_screen_colors()
-                  return
-              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_ADDRESS", '"' + self.ipv4_netdevip.value() + '"')
-              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_NETMASK", '"' + self.ipv4_netdevmask.value() + '"')
-              augtool("set", "/files/" + OVIRT_DEFAULTS + "/OVIRT_IP_GATEWAY", '"' + self.ipv4_netdevgateway.value() + '"')
+          if msg != "":
+              msg = "Please Input:\n" + msg
+              warn = ButtonChoiceWindow(self.screen, "Network Settings", msg, buttons = ['Ok'])
+              self.__nic_config_failed = 1
+              self.ipv4_current_netdevip = self.ipv4_netdevip.value()
+              self.ipv4_current_netdevmask = self.ipv4_netdevmask.value()
+              self.ipv4_current_netdevgateway = self.ipv4_netdevgateway.value()
+              self.reset_screen_colors()
+              return
           else:
               # if exists remove static keys from dictionary
               if OVIRT_VARS.has_key("OVIRT_IP_ADDRESS"):
diff --git a/scripts/ovirtfunctions.py b/scripts/ovirtfunctions.py
index 37aabe7..cdf4b56 100644
--- a/scripts/ovirtfunctions.py
+++ b/scripts/ovirtfunctions.py
@@ -604,7 +604,7 @@ def remove_config(files):
     if os.path.exists("/config/files"):
         if os.path.getsize('/config/files') == 0:
             print "There are currently no persisted files."
-        return True
+            return True
     if os.path.ismount("/config"):
       if isinstance(files,STRING_TYPE):
         files_list = []
-- 
1.7.5.4




More information about the ovirt-devel mailing list