diff --git a/addons/bond.py b/addons/bond.py index 5fb3a45..0f7c3fa 100644 --- a/addons/bond.py +++ b/addons/bond.py @@ -17,6 +17,9 @@ from ifupdown.utils import utils class bond(moduleBase): """ ifupdown2 addon module to configure bond interfaces """ + + overrides_ifupdown_scripts = ['ifenslave', ] + _modinfo = { 'mhelp' : 'bond configuration module', 'attrs' : { 'bond-use-carrier': diff --git a/ifupdown/ifupdownmain.py b/ifupdown/ifupdownmain.py index c11e7ac..f086b97 100644 --- a/ifupdown/ifupdownmain.py +++ b/ifupdown/ifupdownmain.py @@ -222,7 +222,8 @@ class ifupdownMain(ifupdownBase): self.pp = pprint.PrettyPrinter(indent=4) self.modules = OrderedDict({}) self.module_attrs = {} - + self.overridden_ifupdown_scripts = [] + if self.config.get('addon_python_modules_support', '1') == '1': self.load_addon_modules(self.addon_modules_dir) if self.config.get('addon_scripts_support', '0') == '1': @@ -1198,10 +1199,11 @@ class ifupdownMain(ifupdownBase): raise try: minstance = mclass() + script_override = minstance.get_overrides_ifupdown_scripts() + self.overridden_ifupdown_scripts.extend(script_override) except moduleNotSupported, e: self.logger.info('module %s not loaded (%s)\n' %(mname, str(e))) - pass continue except: raise @@ -1281,10 +1283,9 @@ class ifupdownMain(ifupdownBase): try: module_list = os.listdir(msubdir) for module in module_list: - if self.modules.get(module) is not None: + if self.modules.get(module) or module in self.overridden_ifupdown_scripts: continue - self.script_ops[op].append( - msubdir + '/' + module) + self.script_ops[op].append(msubdir + '/' + module) except: # continue reading pass diff --git a/ifupdownaddons/modulebase.py b/ifupdownaddons/modulebase.py index 5b7840a..96f07ef 100644 --- a/ifupdownaddons/modulebase.py +++ b/ifupdownaddons/modulebase.py @@ -333,6 +333,13 @@ class moduleBase(object): except: return None + def get_overrides_ifupdown_scripts(self): + """ return the ifupdown scripts replaced by the current module """ + try: + return self.overrides_ifupdown_scripts + except: + return [] + def _get_reserved_vlan_range(self): start = end = 0 get_resvvlan = '/var/lib/ifupdown2/hooks/get_reserved_vlan_range.sh'