summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeth Vidal <skvidal@fedoraproject.org>2007-09-24 13:08:15 -0400
committerSeth Vidal <skvidal@fedoraproject.org>2007-09-24 13:08:15 -0400
commit8454fe3216f935746fad17a8c48f4df0e40a0d0d (patch)
treeac27022d7aa6b9d921399fcb04ccb4a44d839671
parentd9a2ea9d3a21bc4041d8aa01d1fb2dee1630177c (diff)
parentbbf1cf314b20a15eff21a8129bb51415fdead41e (diff)
downloadthird_party-func-8454fe3216f935746fad17a8c48f4df0e40a0d0d.tar.gz
third_party-func-8454fe3216f935746fad17a8c48f4df0e40a0d0d.tar.xz
third_party-func-8454fe3216f935746fad17a8c48f4df0e40a0d0d.zip
Merge branch 'master' of ssh://git.fedoraproject.org/git/hosted/func
* 'master' of ssh://git.fedoraproject.org/git/hosted/func: Do not raise ImportError when loading a module. add system.listMethods support add some simple support for base object methods
-rwxr-xr-xmodules/func_module.py23
-rwxr-xr-xmodules/test.py3
-rwxr-xr-xserver/module_loader.py3
-rwxr-xr-xserver/server.py11
4 files changed, 37 insertions, 3 deletions
diff --git a/modules/func_module.py b/modules/func_module.py
index 4bb06d2..7019bc5 100755
--- a/modules/func_module.py
+++ b/modules/func_module.py
@@ -24,20 +24,41 @@ import traceback
class FuncModule(object):
+ version = "0.0.0"
+ api_version = "0.0.0"
+ description = "No Description provided"
+
def __init__(self):
config_obj = config_data.Config()
config_result = config_obj.get()
self.config = config_result
self.__init_log()
+ self.__base_methods = {
+ # __'s so we don't clobber useful names
+ "module_version" : self.__module_version,
+ "module_api_version" : self.__module_api_version,
+ "module_description" : self.__module_description,
+ }
def __init_log(self):
log = logger.Logger()
self.logger = log.logger
def register_rpc(self, handlers, module_name):
+ # add the internal methods, note that this means they
+ # can get clobbbered by subclass versions
+ for meth in self.__base_methods:
+ handlers["%s.%s" % (module_name, meth)] = self.__base_methods[meth]
for meth in self.methods:
handlers["%s.%s" % (module_name,meth)] = self.methods[meth]
-
+ def __module_version(self):
+ return self.version
+
+ def __module_api_version(self):
+ return self.api_version
+
+ def __module_description(self):
+ return self.description
diff --git a/modules/test.py b/modules/test.py
index 31f1e94..ea22007 100755
--- a/modules/test.py
+++ b/modules/test.py
@@ -4,6 +4,9 @@ from codes import *
from modules import func_module
class Test(func_module.FuncModule):
+ version = "11.11.11"
+ api_version = "0.0.1"
+ description = "Just a very simple example module"
def __init__(self):
self.methods = {
"add": self.add
diff --git a/server/module_loader.py b/server/module_loader.py
index 2b20429..a2a00c5 100755
--- a/server/module_loader.py
+++ b/server/module_loader.py
@@ -75,9 +75,8 @@ def load_modules(blacklist=None):
continue
mods[mod_imp_name] = blip
except ImportError, e:
- # shouldn't this be fatal?
+ # A module that raises an ImportError is (for now) simply not loaded.
print e
- raise
return mods
diff --git a/server/server.py b/server/server.py
index 4e320e9..bfdf5a9 100755
--- a/server/server.py
+++ b/server/server.py
@@ -62,6 +62,17 @@ class XmlRpcInterface(object):
self.logger.warning("module %s not loaded, missing register_rpc method" % self.modules[x])
+ # internal methods that we do instead of spreading internal goo
+ # all over the modules. For now, at lest -akl
+
+ self.handlers["system.listMethods"] = self.list_methods
+
+
+ def list_methods(self):
+ return self.handlers.keys()
+
+
+
def get_dispatch_method(self, method):
if method in self.handlers: