diff options
author | Seth Vidal <skvidal@fedoraproject.org> | 2007-09-24 13:08:15 -0400 |
---|---|---|
committer | Seth Vidal <skvidal@fedoraproject.org> | 2007-09-24 13:08:15 -0400 |
commit | 8454fe3216f935746fad17a8c48f4df0e40a0d0d (patch) | |
tree | ac27022d7aa6b9d921399fcb04ccb4a44d839671 | |
parent | d9a2ea9d3a21bc4041d8aa01d1fb2dee1630177c (diff) | |
parent | bbf1cf314b20a15eff21a8129bb51415fdead41e (diff) | |
download | third_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-x | modules/func_module.py | 23 | ||||
-rwxr-xr-x | modules/test.py | 3 | ||||
-rwxr-xr-x | server/module_loader.py | 3 | ||||
-rwxr-xr-x | server/server.py | 11 |
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: |