From 11f19ecb926db942a14b4ee7a7feb33f62707427 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jarom=C3=ADr=20Hradil?= <jaromir.hradil@cesnet.cz>
Date: Fri, 13 Sep 2024 15:07:53 +0200
Subject: [PATCH] Adding custom EOSC styling

---
 cesnet-central/deployments/fullhub.yaml    | 38 +++++++++------------
 common/deployments/hub-production.yaml     | 38 +++++++++------------
 common/deployments/hub-staging.yaml        | 38 +++++++++------------
 common/playbooks/files/jupyterhub-jwt.yaml |  2 +-
 testing/deployments/hub.yaml               | 39 +++++++++-------------
 5 files changed, 62 insertions(+), 93 deletions(-)

diff --git a/cesnet-central/deployments/fullhub.yaml b/cesnet-central/deployments/fullhub.yaml
index 1b8ac40..9d6cf26 100644
--- a/cesnet-central/deployments/fullhub.yaml
+++ b/cesnet-central/deployments/fullhub.yaml
@@ -51,8 +51,8 @@ singleuser:
     guarantee: .02
   defaultUrl: "/lab"
   image:
-    name: eginotebooks/single-user
-    tag: "sha-0f4a63c"
+    name: eginotebooks/single-user-eosc
+    tag: "sha-d17f966"
   profileList:
     - display_name: Small Environment - 2 vCPU / 4 GB RAM (non-collaboratice)
       description: >
@@ -131,6 +131,14 @@ singleuser:
     singleuser-webdav-wrapper.sh:
       mode: 0755
       mountPath: /usr/local/bin/jupyterhub-singleuser-webdav-wrapper
+      #NotebookNotary.db_file=':memory:' is used due to issues
+      #notebook notary file was causing in ~/.jupyter in ownCloud mount
+      #
+      #LabApp.custom_css=True allows to use custom CSS for EOSC style
+      #
+      #ResourceUseDisplay.mem_warning_threshold=0.75 sets memory warning at 75%
+      #threshold for resource-usage extension which is also used by EGI
+      #notebooks-resource-warning extension 
       stringData: |-
         #! /bin/sh
         #
@@ -143,30 +151,12 @@ singleuser:
         /usr/local/bin/jupyterhub-wait-remote-home
 
         cd .
-
         exec jupyterhub-singleuser \
           --FileCheckpoints.checkpoint_dir='/home/jovyan/.notebookCheckpoints' \
           --NotebookNotary.db_file=':memory:' \
+          --LabApp.custom_css=True \
+          --ResourceUseDisplay.mem_warning_threshold=0.25 \
           "$@"
-    disable-labnews:
-      mode: 0644
-      mountPath: /opt/conda/share/jupyter/lab/settings/overrides.json
-      stringData: |-
-        {
-          "@jupyterlab/apputils-extension:notification": {
-            "checkForUpdates": "false",
-            "fetchNews": "false"
-          },
-          "@jupyterlab/application-extension:context-menu": {
-            "contextMenu": [
-              {
-                "command": "filebrowser:share-main",
-                "selector": ".jp-DirListing-item[data-isdir]",
-                "disabled": true
-              }
-            ]
-          }
-        }
 
 hub:
   services:
@@ -179,7 +169,7 @@ hub:
   # recommended to keep in sync with common/playbooks/files/jupyterhub-jwt.yaml
   image:
     name: eginotebooks/hub
-    tag: "sha-bebde36"
+    tag: "sha-857a93e"
   config:
     Authenticator:
       enable_auth_state: true
@@ -324,6 +314,8 @@ hub:
       c.WebDavOIDCSpawner.token_mount_path = "/var/run/secrets/oidc/"
       c.WebDavOIDCSpawner.http_timeout = 90
 {% endraw %}
+  templatePaths:
+    - /egi-notebooks-hub/ec-templates
   extraFiles:
     welcome.html:
       mountPath: /usr/local/share/jupyterhub/templates/welcome.html
diff --git a/common/deployments/hub-production.yaml b/common/deployments/hub-production.yaml
index 43ff32c..eb82d6c 100644
--- a/common/deployments/hub-production.yaml
+++ b/common/deployments/hub-production.yaml
@@ -51,8 +51,8 @@ singleuser:
     guarantee: .2
   defaultUrl: "/lab"
   image:
-    name: eginotebooks/single-user
-    tag: "sha-0f4a63c"
+    name: eginotebooks/single-user-eosc
+    tag: "sha-d17f966"
   profileList:
     - display_name: Small Environment - 2 vCPU / 4 GB RAM
       description: >
@@ -113,6 +113,14 @@ singleuser:
     singleuser-webdav-wrapper.sh:
       mode: 0755
       mountPath: /usr/local/bin/jupyterhub-singleuser-webdav-wrapper
+      #NotebookNotary.db_file=':memory:' is used due to issues
+      #notebook notary file was causing in ~/.jupyter in ownCloud mount
+      #
+      #LabApp.custom_css=True allows to use custom CSS for EOSC style
+      #
+      #ResourceUseDisplay.mem_warning_threshold=0.75 sets memory warning at 75%
+      #threshold for resource-usage extension which is also used by EGI
+      #notebooks-resource-warning extension 
       stringData: |-
         #! /bin/sh
         #
@@ -125,30 +133,12 @@ singleuser:
         /usr/local/bin/jupyterhub-wait-remote-home
 
         cd .
-
         exec jupyterhub-singleuser \
           --FileCheckpoints.checkpoint_dir='/home/jovyan/.notebookCheckpoints' \
           --NotebookNotary.db_file=':memory:' \
+          --LabApp.custom_css=True \
+          --ResourceUseDisplay.mem_warning_threshold=0.25 \
           "$@"
-    disable-labnews:
-      mode: 0644
-      mountPath: /opt/conda/share/jupyter/lab/settings/overrides.json
-      stringData: |-
-        {
-          "@jupyterlab/apputils-extension:notification": {
-            "checkForUpdates": "false",
-            "fetchNews": "false"
-          },
-          "@jupyterlab/application-extension:context-menu": {
-            "contextMenu": [
-              {
-                "command": "filebrowser:share-main",
-                "selector": ".jp-DirListing-item[data-isdir]",
-                "disabled": true
-              }
-            ]
-          }
-        }
 
 hub:
   services:
@@ -161,7 +151,7 @@ hub:
   # recommended to keep in sync with common/playbooks/files/jupyterhub-jwt.yaml
   image:
     name: eginotebooks/hub
-    tag: "sha-bebde36"
+    tag: "sha-857a93e"
   config:
     Authenticator:
       enable_auth_state: true
@@ -307,6 +297,8 @@ hub:
       c.WebDavOIDCSpawner.token_mount_path = "/var/run/secrets/oidc/"
       c.WebDavOIDCSpawner.http_timeout = 90
 {% endraw %}
+  templatePaths:
+    - /egi-notebooks-hub/ec-templates
   extraFiles:
     welcome.html:
       mountPath: /usr/local/share/jupyterhub/templates/welcome.html
diff --git a/common/deployments/hub-staging.yaml b/common/deployments/hub-staging.yaml
index 7982d17..7bdada1 100644
--- a/common/deployments/hub-staging.yaml
+++ b/common/deployments/hub-staging.yaml
@@ -51,8 +51,8 @@ singleuser:
     guarantee: .2
   defaultUrl: "/lab"
   image:
-    name: eginotebooks/single-user
-    tag: "sha-0f4a63c"
+    name: eginotebooks/single-user-eosc
+    tag: "sha-d17f966"
   profileList:
     - display_name: Small Environment - 2 vCPU / 4 GB RAM
       description: >
@@ -113,6 +113,14 @@ singleuser:
     singleuser-webdav-wrapper.sh:
       mode: 0755
       mountPath: /usr/local/bin/jupyterhub-singleuser-webdav-wrapper
+      #NotebookNotary.db_file=':memory:' is used due to issues
+      #notebook notary file was causing in ~/.jupyter in ownCloud mount
+      #
+      #LabApp.custom_css=True allows to use custom CSS for EOSC style
+      #
+      #ResourceUseDisplay.mem_warning_threshold=0.75 sets memory warning at 75%
+      #threshold for resource-usage extension which is also used by EGI
+      #notebooks-resource-warning extension 
       stringData: |-
         #! /bin/sh
         #
@@ -125,30 +133,12 @@ singleuser:
         /usr/local/bin/jupyterhub-wait-remote-home
 
         cd .
-
         exec jupyterhub-singleuser \
           --FileCheckpoints.checkpoint_dir='/home/jovyan/.notebookCheckpoints' \
           --NotebookNotary.db_file=':memory:' \
+          --LabApp.custom_css=True \
+          --ResourceUseDisplay.mem_warning_threshold=0.25 \
           "$@"
-    disable-labnews:
-      mode: 0644
-      mountPath: /opt/conda/share/jupyter/lab/settings/overrides.json
-      stringData: |-
-        {
-          "@jupyterlab/apputils-extension:notification": {
-            "checkForUpdates": "false",
-            "fetchNews": "false"
-          },
-          "@jupyterlab/application-extension:context-menu": {
-            "contextMenu": [
-              {
-                "command": "filebrowser:share-main",
-                "selector": ".jp-DirListing-item[data-isdir]",
-                "disabled": true
-              }
-            ]
-          }
-        }
 
 hub:
   services:
@@ -161,7 +151,7 @@ hub:
   # recommended to keep in sync with common/playbooks/files/jupyterhub-jwt.yaml
   image:
     name: eginotebooks/hub
-    tag: "sha-bebde36"
+    tag: "sha-857a93e"
   config:
     Authenticator:
       enable_auth_state: true
@@ -305,6 +295,8 @@ hub:
       c.WebDavOIDCSpawner.token_mount_path = "/var/run/secrets/oidc/"
       c.WebDavOIDCSpawner.http_timeout = 90
 {% endraw %}
+  templatePaths:
+    - /egi-notebooks-hub/ec-templates
   extraFiles:
     welcome.html:
       mountPath: /usr/local/share/jupyterhub/templates/welcome.html
diff --git a/common/playbooks/files/jupyterhub-jwt.yaml b/common/playbooks/files/jupyterhub-jwt.yaml
index 5e9d7d2..6a34c05 100644
--- a/common/playbooks/files/jupyterhub-jwt.yaml
+++ b/common/playbooks/files/jupyterhub-jwt.yaml
@@ -20,7 +20,7 @@ spec:
       containers:
         - name: jwt
           # recommended to keep it in sync with */deployments/*.yaml
-          image: eginotebooks/hub:sha-bebde36
+          image: eginotebooks/hub:sha-857a93e
           args:
             - fastapi
             - run
diff --git a/testing/deployments/hub.yaml b/testing/deployments/hub.yaml
index a6f6a00..04de662 100644
--- a/testing/deployments/hub.yaml
+++ b/testing/deployments/hub.yaml
@@ -52,8 +52,8 @@ singleuser:
     guarantee: .2
   defaultUrl: "/lab"
   image:
-    name: eginotebooks/single-user
-    tag: "sha-0f4a63c"
+    name: eginotebooks/single-user-eosc
+    tag: "sha-d17f966"
   profileList:
     - display_name: Small Environment - 2 vCPU / 4 GB RAM
       description: >
@@ -114,6 +114,15 @@ singleuser:
     singleuser-webdav-wrapper.sh:
       mode: 0755
       mountPath: /usr/local/bin/jupyterhub-singleuser-webdav-wrapper
+
+      #NotebookNotary.db_file=':memory:' is used due to issues
+      #notebook notary file was causing in ~/.jupyter in ownCloud mount
+      #
+      #LabApp.custom_css=True allows to use custom CSS for EOSC style
+      #
+      #ResourceUseDisplay.mem_warning_threshold=0.75 sets memory warning at 75%
+      #threshold for resource-usage extension which is also used by EGI
+      #notebooks-resource-warning extension 
       stringData: |-
         #! /bin/sh
         #
@@ -126,30 +135,12 @@ singleuser:
         /usr/local/bin/jupyterhub-wait-remote-home
 
         cd .
-
         exec jupyterhub-singleuser \
           --FileCheckpoints.checkpoint_dir='/home/jovyan/.notebookCheckpoints' \
           --NotebookNotary.db_file=':memory:' \
+          --LabApp.custom_css=True \
+          --ResourceUseDisplay.mem_warning_threshold=0.25 \
           "$@"
-    disable-labnews:
-      mode: 0644
-      mountPath: /opt/conda/share/jupyter/lab/settings/overrides.json
-      stringData: |-
-        {
-          "@jupyterlab/apputils-extension:notification": {
-            "checkForUpdates": "false",
-            "fetchNews": "false"
-          },
-          "@jupyterlab/application-extension:context-menu": {
-            "contextMenu": [
-              {
-                "command": "filebrowser:share-main",
-                "selector": ".jp-DirListing-item[data-isdir]",
-                "disabled": true
-              }
-            ]
-          }
-        }
 
 hub:
   services:
@@ -162,7 +153,7 @@ hub:
   # recommended to keep in sync with common/playbooks/files/jupyterhub-jwt.yaml
   image:
     name: eginotebooks/hub
-    tag: "sha-bebde36"
+    tag: "sha-857a93e"
   config:
     Authenticator:
       enable_auth_state: true
@@ -306,6 +297,8 @@ hub:
       c.WebDavOIDCSpawner.token_mount_path = "/var/run/secrets/oidc/"
       c.WebDavOIDCSpawner.http_timeout = 90
 {% endraw %}
+  templatePaths:
+    - /egi-notebooks-hub/ec-templates
   extraFiles:
     welcome.html:
       mountPath: /usr/local/share/jupyterhub/templates/welcome.html
-- 
GitLab