]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
Fix query-check object for interfaces with multiple iface sections
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Sun, 1 Jun 2014 04:52:16 +0000 (21:52 -0700)
committerRoopa Prabhu <roopa@cumulusnetworks.com>
Sun, 1 Jun 2014 19:17:23 +0000 (12:17 -0700)
Ticket: CM-1438
Reviewed By:
Testing Done: ifupdown2 sanity

pkg/scheduler.py

index caec627a46115f31bc130d9e41f7de6b363a7869..17c7d761d65ee9a2a6dbfce268e9d52dde0f7d65 100644 (file)
@@ -49,8 +49,7 @@ class ifaceScheduler():
     _STATE_CHECK = True
 
     @classmethod
-    def run_iface_op(cls, ifupdownobj, ifaceobj, op, query_ifaceobj=None,
-                     cenv=None):
+    def run_iface_op(cls, ifupdownobj, ifaceobj, op, cenv=None):
         """ Runs sub operation on an interface """
         ifacename = ifaceobj.name
 
@@ -60,6 +59,8 @@ class ifaceScheduler():
             ifupdownobj.logger.debug('%s: already in state %s' %(ifacename, op))
             return
         if not ifupdownobj.ADDONS_ENABLE: return
+        if op == 'query-checkcurr':
+            query_ifaceobj=ifupdownobj.create_n_save_ifaceobjcurr(ifaceobj)
         for mname in ifupdownobj.module_ops.get(op):
             m = ifupdownobj.modules.get(mname)
             err = 0
@@ -72,8 +73,7 @@ class ifaceScheduler():
                         if (ifaceobj.priv_flags & ifupdownobj.NOCONFIG):
                             continue
                         ifupdownobj.logger.debug(msg)
-                        m.run(ifaceobj, op,
-                              query_ifaceobj)
+                        m.run(ifaceobj, op, query_ifaceobj)
                     else:
                         ifupdownobj.logger.debug(msg)
                         m.run(ifaceobj, op)
@@ -128,8 +128,6 @@ class ifaceScheduler():
                     handler(ifupdownobj, ifaceobjs[0])
             for ifaceobj in ifaceobjs:
                 cls.run_iface_op(ifupdownobj, ifaceobj, op,
-                    query_ifaceobj=ifupdownobj.create_n_save_ifaceobjcurr(
-                        ifaceobj) if op == 'query-checkcurr' else None,
                     cenv=ifupdownobj.generate_running_env(ifaceobj, op)
                         if ifupdownobj.COMPAT_EXEC_SCRIPTS else None) 
                 posthookfunc = ifupdownobj.sched_hooks.get('posthook')
@@ -347,8 +345,15 @@ class ifaceScheduler():
                                          skip_root=True)
                 cls._STATE_CHECK = True
             return
-        run_queue = []
 
+        if ifupdownobj.config.get('skip_ifacesort', '0') == '1':
+            # This is a backdoor to skip sorting of interfaces, if required
+            cls.run_iface_list(ifupdownobj, ifacenames, ops,
+                                  parent=None,order=order,
+                                  followdependents=followdependents)
+            return
+
+        run_queue = []
         # Get a sorted list of all interfaces
         if not indegrees:
             indegrees = OrderedDict()