1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

addon: handle unsupported modules

Example: If /sbin/ethtool is not installed dont run the
ethtool addon module.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
This commit is contained in:
Roopa Prabhu
2016-07-10 20:23:17 -07:00
parent 0aeb3df334
commit b54179d2ae
4 changed files with 21 additions and 2 deletions

View File

@@ -7,12 +7,14 @@ import json
import ifupdown.policymanager as policymanager
try:
import os
from ipaddr import IPNetwork
from sets import Set
from ifupdown.iface import *
from ifupdown.exceptions import moduleNotSupported
from ifupdown.utils import utils
from ifupdownaddons.utilsbase import *
from ifupdownaddons.modulebase import moduleBase
from ifupdownaddons.modulebase import moduleBase, NotSupported
from ifupdownaddons.iproute2 import iproute2
import ifupdown.ifupdownflags as ifupdownflags
except ImportError, e:
@@ -41,6 +43,8 @@ class ethtool(moduleBase,utilsBase):
def __init__(self, *args, **kargs):
moduleBase.__init__(self, *args, **kargs)
if not os.path.exists('/sbin/ethtool'):
raise moduleNotSupported('module init failed: no /sbin/ethtool found')
self.ipcmd = None
# keep a list of iface objects who have modified link attributes
self.ifaceobjs_modified_configs = []

View File

@@ -21,3 +21,6 @@ class invalidValueError(Error):
class errorReadingStateError(Error):
pass
class moduleNotSupported(Error):
pass

View File

@@ -24,6 +24,7 @@ from scheduler import *
from collections import deque
from collections import OrderedDict
from graph import *
from exceptions import *
from sets import Set
"""
@@ -829,7 +830,15 @@ class ifupdownMain(ifupdownBase):
mclass = getattr(m, mname)
except:
raise
try:
minstance = mclass()
except moduleNotSupported, e:
self.logger.info('module %s not loaded (%s)\n'
%(mname, str(e)))
pass
continue
except:
raise
self.modules[mname] = minstance
try:
self.module_attrs[mname] = minstance.get_modinfo()

View File

@@ -15,6 +15,9 @@ from ifupdown.iface import *
import ifupdown.policymanager as policymanager
import ifupdown.ifupdownflags as ifupdownflags
class NotSupported(Exception):
pass
class moduleBase(object):
""" Base class for ifupdown addon modules