summaryrefslogtreecommitdiffstats
path: root/scripts/lib/mic/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/mic/plugin.py')
-rw-r--r--scripts/lib/mic/plugin.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/scripts/lib/mic/plugin.py b/scripts/lib/mic/plugin.py
index 7c296e9765..df03c15081 100644
--- a/scripts/lib/mic/plugin.py
+++ b/scripts/lib/mic/plugin.py
@@ -19,13 +19,12 @@ import os, sys
19 19
20from mic import msger 20from mic import msger
21from mic import pluginbase 21from mic import pluginbase
22from mic.conf import configmgr
23from mic.utils import errors 22from mic.utils import errors
24 23
25 24
26__ALL__ = ['PluginMgr', 'pluginmgr'] 25__ALL__ = ['PluginMgr', 'pluginmgr']
27 26
28PLUGIN_TYPES = ["imager", "backend"] # TODO "hook" 27PLUGIN_TYPES = ["imager", "source"] # TODO "hook"
29 28
30 29
31class PluginMgr(object): 30class PluginMgr(object):
@@ -99,4 +98,24 @@ class PluginMgr(object):
99 98
100 return pluginbase.get_plugins(ptype) 99 return pluginbase.get_plugins(ptype)
101 100
101 def get_source_plugin_methods(self, source_name, methods):
102 """
103 The methods param is a dict with the method names to find. On
104 return, the dict values will be filled in with pointers to the
105 corresponding methods. If one or more methods are not found,
106 None is returned.
107 """
108 return_methods = None
109 for _source_name, klass in self.get_plugins('source').iteritems():
110 if _source_name == source_name:
111 for _method_name in methods.keys():
112 if not hasattr(klass, _method_name):
113 msger.warning("Unimplemented %s source interface for: %s"\
114 % (_method_name, _source_name))
115 return None
116 func = getattr(klass, _method_name)
117 methods[_method_name] = func
118 return_methods = methods
119 return return_methods
120
102pluginmgr = PluginMgr() 121pluginmgr = PluginMgr()