mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
addons may provide a list of ifupdown scripts to ignore
Ticket: Reviewed By: Roopa, Nikhil G Testing Done: ifupdown2's python addons are replacing some/most of the old ifupdown shell scripts. When addon_scripts_support is set to 1, ifupdown2 will execute every scripts present in /etc/network/if-$ACTION.d/ if a script exists with a name identical to an ifupdown2 addon, this script won't be executed. Sometimes an ifupdown2 addons doesn't have the same name as the ifupdown script it's supposed to replace. Or maybe one addon is replacing several scripts. For example: bond.py is replacing /etc/network/if-*.d/ifenslave Now each addon is able to provide a list of script to ignore. [16:54:40] root:ifupdown2 # ifquery bond0 iface bond0 bond-slaves tap0 tap1 [16:54:49] root:ifupdown2 # ifreload -a -d &> /tmp/ifreload.log [16:54:54] root:ifupdown2 # cat /tmp/ifreload.log | grep ifenslave debug: tap1: pre-up : running script /etc/network/if-pre-up.d/ifenslave info: executing /etc/network/if-pre-up.d/ifenslave debug: tap1: up : running script /etc/network/if-up.d/ifenslave info: executing /etc/network/if-up.d/ifenslave debug: lo: pre-up : running script /etc/network/if-pre-up.d/ifenslave info: executing /etc/network/if-pre-up.d/ifenslave debug: lo: up : running script /etc/network/if-up.d/ifenslave info: executing /etc/network/if-up.d/ifenslave debug: eth0: pre-up : running script /etc/network/if-pre-up.d/ifenslave info: executing /etc/network/if-pre-up.d/ifenslave debug: eth0: up : running script /etc/network/if-up.d/ifenslave info: executing /etc/network/if-up.d/ifenslave debug: tap0: pre-up : running script /etc/network/if-pre-up.d/ifenslave info: executing /etc/network/if-pre-up.d/ifenslave debug: tap0: up : running script /etc/network/if-up.d/ifenslave info: executing /etc/network/if-up.d/ifenslave [16:54:55] root:ifupdown2 # ... apply patch ... [16:55:16] root:ifupdown2 # ifreload -a -d &> /tmp/ifreload.log [16:55:18] root:ifupdown2 # cat /tmp/ifreload.log | grep ifenslave [16:55:19] root:ifupdown2 # Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
@ -17,6 +17,9 @@ from ifupdown.utils import utils
|
|||||||
|
|
||||||
class bond(moduleBase):
|
class bond(moduleBase):
|
||||||
""" ifupdown2 addon module to configure bond interfaces """
|
""" ifupdown2 addon module to configure bond interfaces """
|
||||||
|
|
||||||
|
overrides_ifupdown_scripts = ['ifenslave', ]
|
||||||
|
|
||||||
_modinfo = { 'mhelp' : 'bond configuration module',
|
_modinfo = { 'mhelp' : 'bond configuration module',
|
||||||
'attrs' : {
|
'attrs' : {
|
||||||
'bond-use-carrier':
|
'bond-use-carrier':
|
||||||
|
@ -222,7 +222,8 @@ class ifupdownMain(ifupdownBase):
|
|||||||
self.pp = pprint.PrettyPrinter(indent=4)
|
self.pp = pprint.PrettyPrinter(indent=4)
|
||||||
self.modules = OrderedDict({})
|
self.modules = OrderedDict({})
|
||||||
self.module_attrs = {}
|
self.module_attrs = {}
|
||||||
|
self.overridden_ifupdown_scripts = []
|
||||||
|
|
||||||
if self.config.get('addon_python_modules_support', '1') == '1':
|
if self.config.get('addon_python_modules_support', '1') == '1':
|
||||||
self.load_addon_modules(self.addon_modules_dir)
|
self.load_addon_modules(self.addon_modules_dir)
|
||||||
if self.config.get('addon_scripts_support', '0') == '1':
|
if self.config.get('addon_scripts_support', '0') == '1':
|
||||||
@ -1198,10 +1199,11 @@ class ifupdownMain(ifupdownBase):
|
|||||||
raise
|
raise
|
||||||
try:
|
try:
|
||||||
minstance = mclass()
|
minstance = mclass()
|
||||||
|
script_override = minstance.get_overrides_ifupdown_scripts()
|
||||||
|
self.overridden_ifupdown_scripts.extend(script_override)
|
||||||
except moduleNotSupported, e:
|
except moduleNotSupported, e:
|
||||||
self.logger.info('module %s not loaded (%s)\n'
|
self.logger.info('module %s not loaded (%s)\n'
|
||||||
%(mname, str(e)))
|
%(mname, str(e)))
|
||||||
pass
|
|
||||||
continue
|
continue
|
||||||
except:
|
except:
|
||||||
raise
|
raise
|
||||||
@ -1281,10 +1283,9 @@ class ifupdownMain(ifupdownBase):
|
|||||||
try:
|
try:
|
||||||
module_list = os.listdir(msubdir)
|
module_list = os.listdir(msubdir)
|
||||||
for module in module_list:
|
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
|
continue
|
||||||
self.script_ops[op].append(
|
self.script_ops[op].append(msubdir + '/' + module)
|
||||||
msubdir + '/' + module)
|
|
||||||
except:
|
except:
|
||||||
# continue reading
|
# continue reading
|
||||||
pass
|
pass
|
||||||
|
@ -333,6 +333,13 @@ class moduleBase(object):
|
|||||||
except:
|
except:
|
||||||
return None
|
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):
|
def _get_reserved_vlan_range(self):
|
||||||
start = end = 0
|
start = end = 0
|
||||||
get_resvvlan = '/var/lib/ifupdown2/hooks/get_reserved_vlan_range.sh'
|
get_resvvlan = '/var/lib/ifupdown2/hooks/get_reserved_vlan_range.sh'
|
||||||
|
Reference in New Issue
Block a user