Пример #1
0
    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
Пример #2
0
    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