Exemple #1
0
    async def get(self, kernel_name: str) -> None:
        ksm = self.kernel_spec_cache
        kernel_name = url_unescape(kernel_name)
        kernel_user_filter = self.request.query_arguments.get('user')
        kernel_user = None
        if kernel_user_filter:
            kernel_user = kernel_user_filter[0].decode("utf-8")
        try:
            spec = await ensure_async(ksm.get_kernel_spec(kernel_name))
        except KeyError:
            raise web.HTTPError(404, u'Kernel spec %s not found' % kernel_name)
        if is_kernelspec_model(spec):
            model = spec
        else:
            model = kernelspec_model(self, kernel_name, spec.to_dict(),
                                     spec.resource_dir)
        d = apply_user_filter(model, self.settings['eg_authorized_users'],
                              self.settings['eg_unauthorized_users'],
                              kernel_user)

        if d is None:
            raise web.HTTPError(
                403, u'User %s is not authorized to use kernel spec %s' %
                (kernel_user, kernel_name))

        self.set_header("Content-Type", 'application/json')
        self.finish(json.dumps(model))
    async def get(self) -> None:
        ksc = self.kernel_spec_cache
        km = self.kernel_manager
        model = {}
        model["default"] = km.default_kernel_name
        model["kernelspecs"] = specs = {}

        kernel_user_filter = self.request.query_arguments.get("user")
        kernel_user = None
        if kernel_user_filter:
            kernel_user = kernel_user_filter[0].decode("utf-8")
            if kernel_user:
                self.log.debug("Searching kernels for user '%s' " %
                               kernel_user)

        kspecs = await ensure_async(ksc.get_all_specs())

        list_kernels_found = []
        for kernel_name, kernel_info in kspecs.items():
            try:
                if is_kernelspec_model(kernel_info):
                    d = kernel_info
                else:
                    d = kernelspec_model(self, kernel_name,
                                         kernel_info["spec"],
                                         kernel_info["resource_dir"])
                d = apply_user_filter(
                    d,
                    self.settings["eg_authorized_users"],
                    self.settings["eg_unauthorized_users"],
                    kernel_user,
                )
                if d is not None:
                    specs[kernel_name] = d
                    list_kernels_found.append(d["name"])
                else:
                    self.log.debug(
                        "User %s is not authorized to use kernel spec %s" %
                        (kernel_user, kernel_name))
            except Exception:
                self.log.error("Failed to load kernel spec: '%s'", kernel_name)
                continue

        self.set_header("Content-Type", "application/json")
        self.finish(json.dumps(model))