From 1957f8a717df2e893da2f840ec0e811f570beddf Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Mon, 7 Nov 2011 16:44:18 +0100 Subject: [PATCH] supports managers implelemented as a module or as a class --- sfa/generic/pl.py | 2 +- sfa/managers/managerwrapper.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sfa/generic/pl.py b/sfa/generic/pl.py index 167b58af..e4fee67f 100644 --- a/sfa/generic/pl.py +++ b/sfa/generic/pl.py @@ -16,7 +16,7 @@ class pl (Generic): def registry_manager_class (self) : return sfa.managers.registry_manager def slicemgr_manager_class (self) : - return sfa.managers.slice_manager + return sfa.managers.slice_manager.SliceManager def aggregate_manager_class (self) : return sfa.managers.aggregate_manager diff --git a/sfa/managers/managerwrapper.py b/sfa/managers/managerwrapper.py index 5231c2aa..b0326d67 100644 --- a/sfa/managers/managerwrapper.py +++ b/sfa/managers/managerwrapper.py @@ -1,4 +1,6 @@ -from sfa.util.faults import SfaNotImplemented +from types import ModuleType, ClassType + +from sfa.util.faults import SfaNotImplemented, SfaAPIError from sfa.util.sfalogging import logger #################### @@ -14,7 +16,15 @@ class ManagerWrapper: the standard AttributeError """ def __init__(self, manager, interface): - self.manager = manager + if isinstance (manager, ModuleType): + # old-fashioned module implementation + self.manager = manager + elif isinstance (manager, ClassType): + # create an instance; we don't pass the api in argument as it is passed + # to the actual method calls anyway + self.manager = manager() + else: + raise SfaAPIError,"Argument to ManagerWrapper must be a module or class" self.interface = interface def __getattr__(self, method): -- 2.45.2