From f5322fc3874d1685e4e5e44098292977700ff9d7 Mon Sep 17 00:00:00 2001 From: lucabem Date: Wed, 27 May 2020 12:27:18 +0200 Subject: [PATCH] Added functionality to allow filter kernels by Jupyter Enterprise Gateway using KERNEL_USERNAME env var --- notebook/gateway/managers.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/notebook/gateway/managers.py b/notebook/gateway/managers.py index fb53f044a..f7c0a9b02 100644 --- a/notebook/gateway/managers.py +++ b/notebook/gateway/managers.py @@ -519,6 +519,12 @@ class GatewayKernelSpecManager(KernelSpecManager): return self.base_endpoint + def _get_endpoint_for_user_filter(self, default_endpoint): + kernel_user = os.environ.get('KERNEL_USERNAME') + if kernel_user: + return '?user='.join([default_endpoint, kernel_user]) + return default_endpoint + @gen.coroutine def get_all_specs(self): fetched_kspecs = yield self.list_kernel_specs() @@ -543,6 +549,9 @@ class GatewayKernelSpecManager(KernelSpecManager): def list_kernel_specs(self): """Get a list of kernel specs.""" kernel_spec_url = self._get_kernelspecs_endpoint_url() + + kernel_spec_url = self._get_endpoint_for_user_filter(kernel_spec_url) + self.log.debug("Request list kernel specs at: %s", kernel_spec_url) response = yield gateway_request(kernel_spec_url, method='GET') kernel_specs = json_decode(response.body) @@ -558,6 +567,9 @@ class GatewayKernelSpecManager(KernelSpecManager): The name of the kernel. """ kernel_spec_url = self._get_kernelspecs_endpoint_url(kernel_name=str(kernel_name)) + + kernel_spec_url = self._get_endpoint_for_user_filter(kernel_spec_url) + self.log.debug("Request kernel spec at: %s" % kernel_spec_url) try: response = yield gateway_request(kernel_spec_url, method='GET') @@ -586,6 +598,7 @@ class GatewayKernelSpecManager(KernelSpecManager): The name of the desired resource """ kernel_spec_resource_url = url_path_join(self.base_resource_endpoint, str(kernel_name), str(path)) + kernel_spec_resource_url = self._get_endpoint_for_user_filter(kernel_spec_resource_url) self.log.debug("Request kernel spec resource '{}' at: {}".format(path, kernel_spec_resource_url)) try: response = yield gateway_request(kernel_spec_resource_url, method='GET')