From ee3fcf4431cba28fd503ae8b6c37f84801b6a76e Mon Sep 17 00:00:00 2001 From: Roopa Prabhu Date: Fri, 26 Sep 2014 14:23:15 -0700 Subject: [PATCH] Minor fixes for multiple interfaces with the same config + performance fix for the dependency graph generator code Ticket: Reviewed By: Testing Done: sanity test --- ifupdown/ifupdownmain.py | 9 ++++----- ifupdown/scheduler.py | 12 +++++++----- ifupdown/statemanager.py | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/ifupdown/ifupdownmain.py b/ifupdown/ifupdownmain.py index 2c60bd1..d733a41 100644 --- a/ifupdown/ifupdownmain.py +++ b/ifupdown/ifupdownmain.py @@ -314,13 +314,12 @@ class ifupdownMain(ifupdownBase): for d in del_list: dlist.remove(d) - def query_dependents(self, ifaceobj, ops): + def query_dependents(self, ifaceobj, ops, ifacenames): """ Gets iface dependents by calling into respective modules """ dlist = None # Get dependents for interface by querying respective modules - for mname, module in self.modules.items(): - module = self.modules.get(mname) + for module in self.modules.values(): try: if ops[0] == 'query-running': if (not hasattr(module, @@ -331,7 +330,7 @@ class ifupdownMain(ifupdownBase): if (not hasattr(module, 'get_dependent_ifacenames')): continue dlist = module.get_dependent_ifacenames(ifaceobj, - self.ifaceobjdict.keys()) + ifacenames) except Exception, e: self.logger.warn('%s: error getting dependent interfaces (%s)' %(ifaceobj.name, str(e))) @@ -357,7 +356,7 @@ class ifupdownMain(ifupdownBase): continue dlist = ifaceobj.lowerifaces if not dlist: - dlist = self.query_dependents(ifaceobj, ops) + dlist = self.query_dependents(ifaceobj, ops, ifacenames) else: continue if dlist: diff --git a/ifupdown/scheduler.py b/ifupdown/scheduler.py index 7782f12..398dffd 100644 --- a/ifupdown/scheduler.py +++ b/ifupdown/scheduler.py @@ -81,7 +81,7 @@ class ifaceScheduler(): ifaceobj.set_state_n_status(ifaceState.from_str(op), ifaceStatus.SUCCESS) - if ifupdownobj.COMPAT_EXEC_SCRIPTS: + if ifupdownobj.config.get('addon_scripts_support', '0') == '1': # execute /etc/network/ scripts for mname in ifupdownobj.script_ops.get(op, []): ifupdownobj.logger.debug('%s: %s : running script %s' @@ -122,10 +122,12 @@ class ifaceScheduler(): for ifaceobj in ifaceobjs: cls.run_iface_op(ifupdownobj, ifaceobj, op, cenv=ifupdownobj.generate_running_env(ifaceobj, op) - if ifupdownobj.COMPAT_EXEC_SCRIPTS else None) - posthookfunc = ifupdownobj.sched_hooks.get('posthook') - if posthookfunc: - posthookfunc(ifupdownobj, ifaceobj, op) + if ifupdownobj.config.get('addon_scripts_support', + '0') == '1' else None) + posthookfunc = ifupdownobj.sched_hooks.get('posthook') + if posthookfunc: + [posthookfunc(ifupdownobj, ifaceobj, ops[0]) + for ifaceobj in ifaceobjs] @classmethod def _check_upperifaces(cls, ifupdownobj, ifaceobj, ops, parent, diff --git a/ifupdown/statemanager.py b/ifupdown/statemanager.py index 83d6e52..ef9ca7f 100644 --- a/ifupdown/statemanager.py +++ b/ifupdown/statemanager.py @@ -100,7 +100,8 @@ class stateManager(): op (str): ifupdown operation """ - self.logger.debug('%s: statemanager sync state' %ifaceobj.name) + self.logger.debug('%s: statemanager sync state %s' + %(ifaceobj.name, op)) old_ifaceobjs = self.ifaceobjdict.get(ifaceobj.name) if 'up' in op: if not old_ifaceobjs: -- 2.39.5