From 1de86ae1a8fd68cb8dd3244623ad9f3f2a41c54f Mon Sep 17 00:00:00 2001
From: Stefano Alberto Russo <stefano.russo@gmail.com>
Date: Fri, 1 May 2020 17:28:48 +0200
Subject: [PATCH] Added support for shared slurmtestuser home folder.

---
 services/base/entrypoint.sh                               | 2 +-
 services/base/prestartup.py                               | 4 +++-
 services/slurmbase/Dockerfile                             | 3 +++
 services/slurmbase/prestartup_slurmbase.sh                | 8 ++++++++
 .../slurmclustermaster/prestartup_slurmclustermaster.sh   | 4 ++++
 5 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 services/slurmbase/prestartup_slurmbase.sh

diff --git a/services/base/entrypoint.sh b/services/base/entrypoint.sh
index b3c80a5..fe984ac 100644
--- a/services/base/entrypoint.sh
+++ b/services/base/entrypoint.sh
@@ -88,7 +88,7 @@ fi
 #---------------------
 
 if [ "x$SAFEMODE" == "xFalse" ]; then
-    echo "[INFO] Executing  prestartup scripts (current + parents):"
+    echo "[INFO] Executing  prestartup scripts (parents + current):"
     python /prestartup.py
 else
     echo "[INFO] Not executing prestartup scripts as we are in safemode"
diff --git a/services/base/prestartup.py b/services/base/prestartup.py
index 82eb0ec..1bcfd45 100644
--- a/services/base/prestartup.py
+++ b/services/base/prestartup.py
@@ -34,7 +34,9 @@ def shell(command, interactive=False):
 prestartup_scripts_path='/prestartup'
 def sorted_ls(path):
     mtime = lambda f: os.stat(os.path.join(path, f)).st_mtime
-    return list(sorted(os.listdir(path), key=mtime))
+    file_list = list(sorted(os.listdir(path), key=mtime))
+    file_list.reverse()
+    return file_list
 
 for item in sorted_ls(prestartup_scripts_path):
     if item.endswith('.sh'):
diff --git a/services/slurmbase/Dockerfile b/services/slurmbase/Dockerfile
index 18e4791..16126b7 100755
--- a/services/slurmbase/Dockerfile
+++ b/services/slurmbase/Dockerfile
@@ -28,3 +28,6 @@ RUN useradd slurmtestuser
 RUN mkdir -p /home/slurmtestuser/.ssh
 RUN cat /rosetta/.ssh/id_rsa.pub >> /home/slurmtestuser/.ssh/authorized_keys
 RUN chown -R slurmtestuser:slurmtestuser /home/slurmtestuser   
+
+# Add prestartup
+COPY prestartup_slurmbase.sh /prestartup/
\ No newline at end of file
diff --git a/services/slurmbase/prestartup_slurmbase.sh b/services/slurmbase/prestartup_slurmbase.sh
new file mode 100644
index 0000000..1c2fb84
--- /dev/null
+++ b/services/slurmbase/prestartup_slurmbase.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -e
+
+# "Deactivate" local slurmtestuser home
+mv /home/slurmtestuser /home_slurmtestuser_vanilla
+
+# Link slurmtestuser against the home in the shared folder (which will be setup by the master node)
+ln -s /shared/home_slurmtestuser /home/slurmtestuser
diff --git a/services/slurmclustermaster/prestartup_slurmclustermaster.sh b/services/slurmclustermaster/prestartup_slurmclustermaster.sh
index e1e24db..7f5354c 100644
--- a/services/slurmclustermaster/prestartup_slurmclustermaster.sh
+++ b/services/slurmclustermaster/prestartup_slurmclustermaster.sh
@@ -1,4 +1,8 @@
 #!/bin/bash
 set -e
 
+# Generic rosetta user shared folder
 mkdir -p /shared/rosetta && chown rosetta:rosetta /shared/rosetta
+
+# Shared home for slurmtestuser to simulate a shared home folders filesystem
+cp -a /home_slurmtestuser_vanilla /shared/home_slurmtestuser
-- 
GitLab