Skip to content

Commit

Permalink
Allow to get resource dir from Notebook Service APIs (jupyter-server#375
Browse files Browse the repository at this point in the history
)

* Allow to get resourceDir from Notebook Service APIs

* Update data_studio_jupyter_extensions/configurables/kernelspecs.py

Co-authored-by: Zachary Sailer <[email protected]>

Co-authored-by: Zachary Sailer <[email protected]>
  • Loading branch information
2 people authored and GitHub Enterprise committed May 17, 2022
1 parent bc19d32 commit 040f34d
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
10 changes: 8 additions & 2 deletions data_studio_jupyter_extensions/configurables/kernelspecs.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,14 @@ def _fetch_kernel_specs(self):

self._cache = response
for spec in self._cache.values():
language = spec["language"]
spec["resource_dir"] = os.path.join(DEFAULT_KERNEL_RESOURCES_PATH, language)
# If resourceDir is set, use it.
if spec.get("resourceDir", ""):
spec["resource_dir"] = spec["resourceDir"]
else:
language = spec["language"]
spec["resource_dir"] = os.path.join(
DEFAULT_KERNEL_RESOURCES_PATH, language
)
self._cache_time = time.time()
return self._cache

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import os

import pytest
from jupyter_client.kernelspec import NoSuchKernel

Expand All @@ -7,6 +9,7 @@
NotebookServiceClient,
)
from data_studio_jupyter_extensions.tests.mock.client import MockNotebookServiceClient
from data_studio_jupyter_extensions.utils import DEFAULT_KERNEL_RESOURCES_PATH


@pytest.fixture
Expand All @@ -30,8 +33,14 @@ def test_init_kernelspec_manager(project_id, notebook_id, app_base_url, datastud
def test_fetch_kernel_specs(notebook_service_client):
ksm = DSKernelSpecManager(nbservice_client=notebook_service_client)
specs = ksm._fetch_kernel_specs()

assert "python3" in specs
resource_dir = os.path.join(DEFAULT_KERNEL_RESOURCES_PATH, "python")
assert resource_dir == specs["python3"]["resource_dir"]

assert "spark" in specs
assert "/usr/local/share/jupyter/kernels/scala" == specs["spark"]["resource_dir"]

# This method should cache the kernelspecs.
assert ksm._cache == specs

Expand Down
5 changes: 3 additions & 2 deletions data_studio_jupyter_extensions/tests/mock/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@


def kernelspec_model(name, spec_dict):
# Taken from https://github.pie.apple.com/zsailer/notebook_service_gateway/blob/main/notebook_service_gateway/handlers.py
# Taken from https://github.pie.apple.com/pie-data-studio/notebook_service_gateway/blob/main/data_studio_notebook_service_gateway/handlers/kernels.py
# because notebook-service's OpenAPI spec is outdated.
d = spec_dict
d["interruptMode"] = d["interrupt_mode"]
del d["interrupt_mode"]
d["resourceDir"] = ""
if "resourceDir" not in d:
d["resourceDir"] = ""
d["metadata"].update({"datastudio": ["id", name]})
return d

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,8 @@ components:
display_name: Spark 3
language: scala
interrupt_mode: message
# TODO (andreyvelich): We should use resource_dir in the future.
resourceDir: /usr/local/share/jupyter/kernels/scala
metadata:
datastudio:
spec_id: 15756161
Expand Down

0 comments on commit 040f34d

Please sign in to comment.