ideonate / cdsdashboards

JupyterHub extension for ContainDS Dashboards
https://cdsdashboards.readthedocs.io/
Other
199 stars 38 forks source link

Voila renders only on ‘Default / None’ env, i.e. only from base env #111

Open congineer opened 1 year ago

congineer commented 1 year ago

Describe the bug

Voila dashboard on any env other than the unspecified ‘Default / None’ times out without any traefik errors.

NOTE: plotlydash and streamlit dashboards do render with any custom env.

To Reproduce

1) TLJH install with Voila 3.* 2) /opt/tljh/config/jupyterhub_config.d/cdsdashboards.py with c.CDSDashboardsConfig.allow_custom_conda_env = True

Screenshots

1) ‘Default / None’. i.e. base env

cdsdashboards_voila_base_env_Screenshot_20230626_230827

2) any custom env

cdsdashboards_voila_custom_env_Screenshot_20230626_230642

Configuration

TLJH, JupyterHub 1.5.1

/opt/tljh/config/jupyterhub_config.d/cdsdashboards.py

`

Replacement for UserCreatingSpawner (a simple extension of SystemdSpawner) - The Littlest JupyterHub's default spawner

c.JupyterHub.spawner_class = 'cdsdashboards.hubextension.spawners.variableusercreating.VariableUserCreatingSpawner'

c.SystemdSpawner.unit_name_template = 'jupyter-{USERNAME}{DASHSERVERNAME}'

c.JupyterHub.allow_named_servers = True

# Provide selector with known sudo environments
# WARNING: if below .allow_custom_conda_env is also activated,
# and the user forgets to pick an environment from selector,
# the dashboard fallbacks to 'base' env instead of the first name in the list!
# GOOD: use .conda_envs as the only option as long as no explicit request for user envs hit
#c.CDSDashboardsConfig.conda_envs = ['default', '']

# Allow typing custom user environment names
# IDEA: swtch on .allow_custom_conda_env only upon the first request for such feature
c.CDSDashboardsConfig.allow_custom_conda_env = True

c.CDSDashboardsConfig.builder_class = 'cdsdashboards.builder.processbuilder.ProcessBuilder'

#from cdsdashboards.app import CDS_TEMPLATE_PATHS
from cdsdashboards.app import CDS_TEMPLATE_PATHS_RESTRICTED
from cdsdashboards.hubextension import cds_extra_handlers

#c.JupyterHub.template_paths = CDS_TEMPLATE_PATHS
c.JupyterHub.template_paths = CDS_TEMPLATE_PATHS_RESTRICTED
c.JupyterHub.extra_handlers = cds_extra_handlers

# Restrict which Users can Spawn Servers and Dashboards
#c.CDSDashboardsConfig.spawn_allow_group = 'canSpawnServersAndDashboards'
c.CDSDashboardsConfig.spawn_block_group = 'noServersButCanViewDashboards'

# Default behavior to start off
c.JupyterHub.redirect_to_server = False
c.JupyterHub.default_url = '/hub/home-cds'

# Re-arrange Presentation Frameworks in selector and exclude:
# a) slows down Jupyter Server: 'panel'
# b) non-operational ones: 'bokeh', 'rshiny'
c.CDSDashboardsConfig.presentation_types = ['voila', 'streamlit', 'plotlydash']

# DEBUG: uncomment to see more info is something is failing
c.JupyterHub.log_level = 'DEBUG'
c.Spawner.debug = True
# c.KubeSpawner.debug = True
c.LocalProcessSpawner.debug = True

`