From 89199a5dfdd57b5c9fbb43acf4bde5e3f50a6f7a Mon Sep 17 00:00:00 2001
From: mdefende <mdefende@uab.edu>
Date: Thu, 9 May 2024 19:36:11 -0500
Subject: [PATCH] add singularity options to the form and script

---
 form.yml.erb           | 25 +++++++++++++++++--------
 template/script.sh.erb |  5 +++--
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/form.yml.erb b/form.yml.erb
index 4b2fe3b..a29a0c3 100644
--- a/form.yml.erb
+++ b/form.yml.erb
@@ -14,12 +14,12 @@
 cluster: "SLURM_CLUSTER"
 
 # Title of the app displayed in the Dashboard
-title: "JupyterLab"
+title: "JupyterLab Singularity"
 
 # Description of the app displayed in the Dashboard (can use multi-line string
 # and Markdown syntax)
 description: |
-  This app will launch a JupyterLab server on one or more cores.
+  This app will launch a JupyterLab server on one or more cores from a given Singularity container.
 
 # Define attribute values that aren't meant to be modified by the user within
 # the Dashboard form
@@ -40,12 +40,9 @@ attributes:
     widget: text_area
     label: Environment Setup
     value: |
-      # The latest version of Anaconda3 with jupyter is loaded by default.
-      # If you would like to load other modules
-      # or use specific version of Anaconda please list below
-      #
-      # format:
-      # module load example_module/VERSION example_module2
+      # load any other modules you may need here such as CUDA
+      # DO NOT LOAD Anaconda3 or Singularity, these are already 
+      # taken care of
 
   # Whether Conda extensions will be available within the JupyterLab
   # server
@@ -59,6 +56,16 @@ attributes:
   # @see https://docs.continuum.io/anaconda/user-guide/tasks/use-jupyter-notebook-extensions
   conda_extensions: "1"
 
+  # User needs to set the path to the container
+  container_path:
+    widget: text_field
+    label: Path to Container File
+
+  # Any extra command line arguments to pass to `singularity exec ...`
+  extra_singularity_args:
+    widget: text_field
+    label: Extra Singularity arguments
+
   # Any extra command line arguments to feed to the `jupyter-lab ...`
   # command that launches the JupyterLab within the batch job
   extra_jupyter_args:
@@ -112,6 +119,8 @@ attributes:
 form:
   - custom_environment
   - conda_extensions
+  - container_path
+  - extra_singularity_args
   - extra_jupyter_args
   - bc_num_hours
   - bc_partition
diff --git a/template/script.sh.erb b/template/script.sh.erb
index bfae0fe..8d9a755 100755
--- a/template/script.sh.erb
+++ b/template/script.sh.erb
@@ -6,8 +6,9 @@ module reset
 #
 # Start JupyterLab Server
 #
-module load Anaconda3
 <%= context.custom_environment.gsub(/\r\n?/, "\n") %>
 unset XDG_RUNTIME_DIR
+export SINGULARITY_BINDPATH='/data,/scratch,/local,/share'
+
 # Launch the JupyterLab Server
-jupyter-lab --config="${CONFIG_FILE}" <%= context.extra_jupyter_args %>
+singularity exec <%= context.extra_singularity_args %> <%= context.container_path %> jupyter-lab --config="${CONFIG_FILE}" <%= context.extra_jupyter_args %>
-- 
GitLab