X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fgeneric%2F__init__.py;h=ece7e2b857317051f3aa769b82812a7e37eb0390;hb=bcafcbf0f80ffcb32da8eb6579d6c291c6e4e36c;hp=de1a9e141476acfa411d66698152f64edf5c28a3;hpb=0a9aae617f7d6ceb4e169fedc6883928dce0b7b6;p=sfa.git diff --git a/sfa/generic/__init__.py b/sfa/generic/__init__.py index de1a9e14..ece7e2b8 100644 --- a/sfa/generic/__init__.py +++ b/sfa/generic/__init__.py @@ -42,6 +42,10 @@ class Generic: except: logger.log_exc("Cannot locate generic instance with flavour=%s"%flavour) + # provide default for importer_class + def importer_class (self): + return None + # in the simplest case these can be redefined to the class/module objects to be used # see pl.py for an example # some descendant of SfaApi @@ -63,16 +67,12 @@ class Generic: # xxx can probably drop support for managers implemented as modules # which makes it a bit awkward manager_class_or_module = self.make_manager(api.interface) - driver = self.make_driver (api.config, api.interface) + driver = self.make_driver (api) ### arrange stuff together # add a manager wrapper manager_wrap = ManagerWrapper(manager_class_or_module,api.interface,api.config) api.manager=manager_wrap - # insert driver in manager - 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 + # add it in api as well; driver.api is set too as part of make_driver api.driver=driver return api @@ -96,7 +96,9 @@ class Generic: logger.log_exc_critical(message) # need interface to select the right driver - def make_driver (self, config, interface): + def make_driver (self, api): + config=api.config + interface=api.interface flavour = self.flavour message="Generic.make_driver for flavour=%s and interface=%s"%(flavour,interface) @@ -107,8 +109,7 @@ class Generic: try: class_obj = getattr(self,classname)() logger.debug("%s : %s"%(message,class_obj)) - return class_obj(config) + return class_obj(api) except: logger.log_exc_critical(message) -