Skip to content
This repository has been archived by the owner on Jun 16, 2021. It is now read-only.

Commit

Permalink
Allow for a provider to have multiple lifecycle managers
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin-bates committed Jul 5, 2019
1 parent d44cc08 commit a956009
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
12 changes: 6 additions & 6 deletions remote_kernel_provider/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class RemoteKernelProviderBase(KernelSpecProvider):
# The following must be overridden by subclasses
id = None
kernel_file = None
lifecycle_manager_class = None
lifecycle_manager_classes = []

def launch(self, kernelspec_name, cwd=None, kernel_params=None):
"""Launch a kernel, return (connection_info, kernel_manager).
Expand Down Expand Up @@ -64,20 +64,20 @@ def _get_lifecycle_info(self, kernel_spec):
if lifecycle_info:
class_name = lifecycle_info.get('class_name', None)
if class_name is not None:
if class_name != self.lifecycle_manager_class: # Legacy check...
if class_name not in self.lifecycle_manager_classes: # Legacy check...
legacy_detected = True
lifecycle_info.update({'class_name': self.lifecycle_manager_class})
lifecycle_info.update({'class_name': self.lifecycle_manager_classes[0]})
if 'config' not in lifecycle_info: # if no config stanza, add one for consistency
lifecycle_info.update({"config": {}})

if lifecycle_info is None: # Be sure to have a class_name with empty config
lifecycle_info = {'class_name': self.lifecycle_manager_class, 'config': {}}
lifecycle_info = {'class_name': self.lifecycle_manager_classes[0], 'config': {}}

if legacy_detected:
self.log.warn("Legacy kernelspec detected with at '{resource_dir}'. Ensure the contents of "
"'{kernel_json}' contain a 'lifecycle_info' stanza within 'metadata' with field "
"'class_name: {expected_class}'".
"class_name in '{expected_classes}'".
format(resource_dir=kernel_spec.resource_dir, kernel_json=self.kernel_file,
expected_class=self.lifecycle_manager_class))
expected_classes=self.lifecycle_manager_classes))

return lifecycle_info
2 changes: 1 addition & 1 deletion remote_kernel_provider/tests/test_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class DummyKernelProvider(RemoteKernelProviderBase):
"""A dummy kernelspec provider subclass for testing"""
id = 'dummy'
kernel_file = 'dummy_kspec.json'
lifecycle_manager_class = 'remote_kernel_provider.tests.test_provider.DummyKernelLifecycleManager'
lifecycle_manager_classes = ['remote_kernel_provider.tests.test_provider.DummyKernelLifecycleManager']


class RemoteKernelProviderTests(unittest.TestCase):
Expand Down

0 comments on commit a956009

Please sign in to comment.