initial import code into git
[platform/upstream/mic.git] / micng / pluginmgr.py
1 #!/usr/bin/python
2 import os
3 import sys
4 import micng.pluginbase.base_plugin as bp
5
6 class PluginMgr(object):
7     def __init__(self, dirlist = []):
8         self.plugin_place = ["/usr/lib/micng/plugins"] + dirlist
9         self.plugins = {}
10     
11     def loadPlugins(self):
12         for pdir in map(os.path.abspath, self.plugin_place):
13             for pitem in os.walk(pdir):
14                 sys.path.append(pitem[0])
15                 for pf in pitem[2]:
16                     if not pf.endswith(".py"):
17                         continue
18
19                     pmod =  __import__(os.path.splitext(pf)[0])
20                     if hasattr(pmod, "mic_plugin"):
21                         pname, pcls = pmod.mic_plugin
22                         ptmp = (pname, pcls)
23                         if hasattr(pcls, "plugin_type"):
24                             if pcls.plugin_type not in self.plugins.keys():
25                                 self.plugins[pcls.plugin_type] = [ptmp]
26                             else:
27                                 self.plugins[pcls.plugin_type].append(ptmp)
28                                      
29     def getPluginByCateg(self, categ = None):
30         if categ is None:
31             return self.plugins
32         else:
33             return self.plugins[categ]