GENICLOUD-31 Bring up the bridge devices last.
authorMarco Yuen <marcoy@gmail.com>
Sat, 9 Jul 2011 23:58:48 +0000 (19:58 -0400)
committerMarco Yuen <marcoy@gmail.com>
Sat, 9 Jul 2011 23:58:48 +0000 (19:58 -0400)
plnet.py

index 549daf2..540a699 100755 (executable)
--- a/plnet.py
+++ b/plnet.py
@@ -59,6 +59,9 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
     interfaces.sort( compare_by('is_primary') )
     interfaces.reverse()
 
     interfaces.sort( compare_by('is_primary') )
     interfaces.reverse()
 
+    # The names of the bridge devices
+    bridgeDevices = []
+
     for interface in interfaces:
         logger.verbose('net:InitInterfaces interface %d: %r'%(device_id,interface))
         logger.verbose('net:InitInterfaces macs = %r' % macs)
     for interface in interfaces:
         logger.verbose('net:InitInterfaces interface %d: %r'%(device_id,interface))
         logger.verbose('net:InitInterfaces macs = %r' % macs)
@@ -157,8 +160,8 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
             if 'IFNAME' in details:
                 ifname = details['IFNAME']
                 device_id -= 1
             if 'IFNAME' in details:
                 ifname = details['IFNAME']
                 device_id -= 1
-            elif orig_ifname:
-                ifname = orig_ifname
+            else:
+                ifname = 'eth0'
                 device_id -= 1
             logger.log('net:InitInterfaces: Bridge detected. Adding %s to devices_map' % ifname)
             devices_map[ifname] = removeBridgedIfaceDetails(details)
                 device_id -= 1
             logger.log('net:InitInterfaces: Bridge detected. Adding %s to devices_map' % ifname)
             devices_map[ifname] = removeBridgedIfaceDetails(details)
@@ -166,6 +169,7 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
 
             logger.log('net:InitInterfaces: Adding bridge %s' % bridgeName)
             bridgeDetails = prepDetails(interface)
 
             logger.log('net:InitInterfaces: Adding bridge %s' % bridgeName)
             bridgeDetails = prepDetails(interface)
+            bridgeDevices.append(bridgeName)
             bridgeDetails['TYPE']   = 'Bridge'
             devices_map[bridgeName] = bridgeDetails
         else:
             bridgeDetails['TYPE']   = 'Bridge'
             devices_map[bridgeName] = bridgeDetails
         else:
@@ -384,10 +388,19 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
         # handle those correctly
         if getvar("SLAVE") == 'yes': continue
 
         # handle those correctly
         if getvar("SLAVE") == 'yes': continue
 
+        # Delay bringing up any bridge devices
+        if dev in bridgeDevices: continue
+
         if not files_only:
             logger.verbose('net:InitInterfaces bringing up %s' % dev)
             os.system("/sbin/ifup %s" % dev)
 
         if not files_only:
             logger.verbose('net:InitInterfaces bringing up %s' % dev)
             os.system("/sbin/ifup %s" % dev)
 
+    # Bring up the bridge devices
+    for bridge in bridgeDevices:
+        if not files_only and bridge in newdevs:
+            logger.verbose('net:InitInterfaces bringing up bridge %s' % bridge)
+            os.system("/sbin/ifup %s" % bridge)
+
 ##
 # Prepare the interface details.
 #
 ##
 # Prepare the interface details.
 #