예제 #1
0
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