+ self.logger = logger
+
+ # load registries
+ from sfa.server.registry import Registries
+ self.registries = Registries(self)
+
+ # load aggregates
+ from sfa.server.aggregate import Aggregates
+ self.aggregates = Aggregates(self)
+
+
+ def get_interface_manager(self, manager_base = 'sfa.managers'):
+ """
+ Returns the appropriate manager module for this interface.
+ Modules are usually found in sfa/managers/
+ """
+
+ if self.interface in ['registry']:
+ mgr_type = self.config.SFA_REGISTRY_TYPE
+ manager_module = manager_base + ".registry_manager_%s" % mgr_type
+ elif self.interface in ['aggregate']:
+ mgr_type = self.config.SFA_AGGREGATE_TYPE
+ manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
+ elif self.interface in ['slicemgr', 'sm']:
+ mgr_type = self.config.SFA_SM_TYPE
+ manager_module = manager_base + ".slice_manager_%s" % mgr_type
+ elif self.interface in ['component', 'cm']:
+ mgr_type = self.config.SFA_CM_TYPE
+ manager_module = manager_base + ".component_manager_%s" % mgr_type
+ else:
+ raise SfaAPIError("No manager for interface: %s" % self.interface)
+ manager = __import__(manager_module, fromlist=[manager_base])
+ # this isnt necessary but will hlep to produce better error messages
+ # if someone tries to access an operation this manager doesn't implement
+ manager = ManagerWrapper(manager, self.interface)