last plc-dependent code moved to PlDriver
[sfa.git] / sfa / generic / __init__.py
index ea6ce05..3c3855d 100644 (file)
@@ -35,7 +35,7 @@ class Generic:
         #mixed = flavour.capitalize()
         module_path="sfa.generic.%s"%flavour
         classname="%s"%flavour
-        logger.info("Generic.the_flavour with flavour=%s"%flavour)
+        logger.debug("Generic.the_flavour with flavour=%s"%flavour)
         try:
             module = __import__ (module_path, globals(), locals(), [classname])
             return getattr(module, classname)(flavour,config)
@@ -46,7 +46,7 @@ class Generic:
     # see pl.py for an example
     # some descendant of SfaApi
     def api_class (self) : pass
-    # in practical terms these are modules for now
+    # the python classes to use to build up the context
     def registry_class (self) : pass
     def slicemgr_class (self) : pass
     def aggregate_class (self) : pass
@@ -60,21 +60,23 @@ class Generic:
         if not 'interface' in kwargs:
             logger.critical("Generic.make_api: no interface found")
         api = self.api_class()(*args, **kwargs)
-        manager = self.make_manager(api.interface)
+        manager_class_or_module = self.make_manager(api.interface)
         driver = self.make_driver (api.config, api.interface)
         ### arrange stuff together
         # add a manager wrapper
-        manager = ManagerWrapper(manager,api.interface)
-        api.manager=manager
+        manager_wrap = ManagerWrapper(manager_class_or_module,api.interface,api.config)
+        api.manager=manager_wrap
         # insert driver in manager
-        manager.driver=driver
+        logger.debug("Setting manager.driver, manager=%s"%manager_class_or_module)
+        # xxx this should go into the object and not the class !?!
+        manager_class_or_module.driver=driver
         # add it in api as well for convenience
         api.driver=driver
         return api
 
     def make_manager (self, interface):
         """
-        interface expected in ['registry', 'aggregate', 'slice', 'component']
+        interface expected in ['registry', 'aggregate', 'slicemgr', 'component']
         flavour is e.g. 'pl' or 'max' or whatever
         """
         flavour = self.flavour
@@ -82,9 +84,12 @@ class Generic:
         
         classname = "%s_manager_class"%interface
         try:
-            module = getattr(self,classname)()
-            logger.info("%s : %s"%(message,module))
-            return module
+            module_or_class = getattr(self,classname)()
+            logger.debug("%s : %s"%(message,module_or_class))
+            # this gets passed to ManagerWrapper that will call the class constructor 
+            # if it's a class, or use the module as is if it's a module
+            # so bottom line is, don't try the constructor here
+            return module_or_class
         except:
             logger.log_exc_critical(message)
         
@@ -99,7 +104,7 @@ class Generic:
             classname = "driver_class"
         try:
             class_obj = getattr(self,classname)()
-            logger.info("%s : %s"%(message,class_obj))
+            logger.debug("%s : %s"%(message,class_obj))
             return class_obj(config)
         except:
             logger.log_exc_critical(message)