def makeService(self, options): """ Return a service collection of two services. The web resource tree contains the wsgi interface to django and the async notebook web resources. The process manager service will start the kernel server. The kernel server process is another twistd plugin, and needs a few options passed to it. """ desktop_service = service.MultiService() nbSessionManager = SessionManager(options) web_resource = webResourceFactory(nbSessionManager) web_resource_factory = server.Site(web_resource) tcp_server = internet.TCPServer(options['port'], web_resource_factory, interface='localhost') tcp_server.setServiceParent(desktop_service) ########################## #XXX Hack Time. Fix This!! # class Config(object): kernel = {} database = {} server = {} kernel_config = Config() kernel_config.kernel["kernel_path"] = os.path.abspath(".") kernel_config.kernel["kernel_host"] = "localhost" kernel_config.kernel["kernel_port"] = 8337 kernel_process_control = KernelProcessControl(kernel_config) kernel_process_control.buildProcess() # ########################## procman = ProcessManager() procman.addProcess(kernel_process_control) procman.setServiceParent(desktop_service) return desktop_service
def makeService(self, options): """ """ kernel_service = service.MultiService() procman = ProcessManager() procman.setServiceParent(kernel_service) ######################################## #XXX Hack left over engines_max = 0 #int(config['engines-max']) if engines_max > 1: from knoboo.kernel.interface import UserPool prefix = config['engines-user-prefix'] group = config['engines-group'] user_pool = UserPool(engines_max, prefix, group) else: user_pool = None class InMemoryPasswordDatabase(checkers.InMemoryUsernamePasswordDatabaseDontUse): """This is used for authenticating kernel connections. It is a temporary solution that needs a little more... """ def requestAvatarId(self, credentials): return defer.maybeDeferred( credentials.checkPassword, self.users['user1']).addCallback( self._cbPasswordMatch, str(credentials.username)) realm = KernelManagerRealm(options, procman, user_pool) p = portal.Portal(realm) chk = InMemoryPasswordDatabase(user1="secret") p.registerChecker(chk) kernel_server = internet.TCPServer(options['port'], pb.PBServerFactory(p), interface=options['host']) kernel_server.setServiceParent(kernel_service) return kernel_service