class ConfigurationManager(object): def read_config(self, path): path = path.split('.').pop(0).split('/').pop() confmod = __import__(path) self.identity = Identity() if not self.identity.load_identity(confmod.conf['identity']): return False self.connections = [] for connection in confmod.conf['connections']: plugins = [] # XXX Validate existance of connections.plugins for plugin_config in connection.get('plugins', []): if not plugin_config.get('module'): continue filename = plugin_config['module'] try: name = filename.rsplit('.')[0] except (IndexError, ValueError): logging.warn('Invalid module filename \'%s\'' % filename) else: module = __import__(name) plugins.append((module, plugin_config)) connection['plugins'] = plugins self.connections.append(connection) return True def get_identity(self): return self.identity def list_connections(self): return self.connections