supports managers implelemented as a module or as a class
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 7 Nov 2011 15:44:18 +0000 (16:44 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 7 Nov 2011 15:44:18 +0000 (16:44 +0100)
sfa/generic/pl.py
sfa/managers/managerwrapper.py

index 167b58a..e4fee67 100644 (file)
@@ -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
 
index 5231c2a..b0326d6 100644 (file)
@@ -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):