From 9481a020f0d4fda3cb437d497a61d867e05513e6 Mon Sep 17 00:00:00 2001 From: Zach Sailer Date: Thu, 5 May 2022 07:58:00 -0700 Subject: [PATCH] allow GatewayClient managers to be configurable --- jupyter_server/serverapp.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/jupyter_server/serverapp.py b/jupyter_server/serverapp.py index 50f7e9f047..cd4401212a 100644 --- a/jupyter_server/serverapp.py +++ b/jupyter_server/serverapp.py @@ -1456,18 +1456,28 @@ def _observe_contents_manager_class(self, change): ) kernel_manager_class = Type( - default_value=AsyncMappingKernelManager, klass=MappingKernelManager, config=True, help=_i18n("The kernel manager class to use."), ) + @default("kernel_manager_class") + def _default_kernel_manager_class(self): + if self.gateway_config.gateway_enabled: + return "jupyter_server.gateway.managers.GatewayMappingKernelManager" + return AsyncMappingKernelManager + session_manager_class = Type( - default_value=SessionManager, config=True, help=_i18n("The session manager class to use."), ) + @default("session_manager_class") + def _default_session_manager_class(self): + if self.gateway_config.gateway_enabled: + return "jupyter_server.gateway.managers.GatewaySessionManager" + return SessionManager + config_manager_class = Type( default_value=ConfigManager, config=True, @@ -1477,7 +1487,6 @@ def _observe_contents_manager_class(self, change): kernel_spec_manager = Instance(KernelSpecManager, allow_none=True) kernel_spec_manager_class = Type( - default_value=KernelSpecManager, config=True, help=""" The kernel spec manager class to use. Should be a subclass @@ -1488,6 +1497,12 @@ def _observe_contents_manager_class(self, change): """, ) + @default("kernel_spec_manager_class") + def _default_kernel_spec_manager_class(self): + if self.gateway_config.gateway_enabled: + return "jupyter_server.gateway.managers.GatewayKernelSpecManager" + return KernelSpecManager + login_handler_class = Type( default_value=LoginHandler, klass=web.RequestHandler, @@ -1829,15 +1844,6 @@ def init_configurables(self): # this determination, instantiate the GatewayClient config singleton. self.gateway_config = GatewayClient.instance(parent=self) - if self.gateway_config.gateway_enabled: - self.kernel_manager_class = ( - "jupyter_server.gateway.managers.GatewayMappingKernelManager" - ) - self.session_manager_class = "jupyter_server.gateway.managers.GatewaySessionManager" - self.kernel_spec_manager_class = ( - "jupyter_server.gateway.managers.GatewayKernelSpecManager" - ) - self.kernel_spec_manager = self.kernel_spec_manager_class( parent=self, )