From 6ab036705fc0bac5be9ff0e36cffc84be0ffba60 Mon Sep 17 00:00:00 2001
From: Julien Leduc <julien.leduc@cern.ch>
Date: Tue, 19 Dec 2017 12:17:23 +0100
Subject: [PATCH] Adding systemd support for the eos instance

---
 .../ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh | 43 +++++++++++++------
 .../docker/ctafrontend/cc7/rc.local.shared    |  7 +++
 .../orchestration/create_instance.sh          |  2 +-
 3 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh
index 6c31973bc2..b75b240fc3 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh
@@ -109,20 +109,38 @@ echo
 echo "Limits summary for user daemon:"
 sudo -u daemon bash -c 'ulimit -a'
 
-# Using jemalloc as specified in
-# it-puppet-module-eos:
-#  code/templates/etc_sysconfig_mgm.erb
-#  code/templates/etc_sysconfig_mgm_env.erb
-#  code/templates/etc_sysconfig_fst.erb
-#  code/templates/etc_sysconfig_fst_env.erb
-test -e /usr/lib64/libjemalloc.so.1 && echo "Using jemalloc for EOS processes"
-test -e /usr/lib64/libjemalloc.so.1 && export LD_PRELOAD=/usr/lib64/libjemalloc.so.1
-
-# start and setup eos for xrdcp to the ${CTA_TEST_DIR}
+if [ "-${CI_CONTEXT}-" == '-systemd-' ]; then
+  # generate eos_env file for systemd
+  cat /etc/sysconfig/eos | sed -e 's/^export\s*//' > /etc/sysconfig/eos_env
+  test -e /usr/lib64/libjemalloc.so.1 && echo LD_PRELOAD=/usr/lib64/libjemalloc.so.1 >> /etc/sysconfig/eos_env
+
+  # start eos
+  systemctl start eos@mq
+  systemctl start eos@mgm
+  systemctl start eos@fst
+
+  echo -n "Waiting for eos to start"
+  for ((i=1;i<20;i++)); do systemctl status eos@{mq,mgm,fst} &>/dev/null && break; sleep 1; echo -n .; done
+  systemctl status eos@{mq,mgm,fst} &>/dev/null && echo OK || echo FAILED
+
+  systemctl status eos@{mq,mgm,fst}
+
+else
+  # Using jemalloc as specified in
+  # it-puppet-module-eos:
+  #  code/templates/etc_sysconfig_mgm.erb
+  #  code/templates/etc_sysconfig_mgm_env.erb
+  #  code/templates/etc_sysconfig_fst.erb
+  #  code/templates/etc_sysconfig_fst_env.erb
+  test -e /usr/lib64/libjemalloc.so.1 && echo "Using jemalloc for EOS processes"
+  test -e /usr/lib64/libjemalloc.so.1 && export LD_PRELOAD=/usr/lib64/libjemalloc.so.1
+
+  # start and setup eos for xrdcp to the ${CTA_TEST_DIR}
   #/etc/init.d/eos start
     /usr/bin/xrootd -n mq -c /etc/xrd.cf.mq -l /var/log/eos/xrdlog.mq -b -Rdaemon
     /usr/bin/xrootd -n mgm -c /etc/xrd.cf.mgm -m -l /var/log/eos/xrdlog.mgm -b -Rdaemon
     /usr/bin/xrootd -n fst -c /etc/xrd.cf.fst -l /var/log/eos/xrdlog.fst -b -Rdaemon
+fi
 
   eos vid enable krb5
   eos vid enable sss
@@ -184,5 +202,6 @@ test -e /usr/lib64/libjemalloc.so.1 && export LD_PRELOAD=/usr/lib64/libjemalloc.
 
 touch /EOSOK
 
-/bin/bash
-
+if [ "-${CI_CONTEXT}-" == '-nosystemd-' ]; then
+  /bin/bash
+fi
diff --git a/continuousintegration/docker/ctafrontend/cc7/rc.local.shared b/continuousintegration/docker/ctafrontend/cc7/rc.local.shared
index 3a83e343e9..7cb81181a7 100755
--- a/continuousintegration/docker/ctafrontend/cc7/rc.local.shared
+++ b/continuousintegration/docker/ctafrontend/cc7/rc.local.shared
@@ -38,3 +38,10 @@ if [ $(echo ${MY_CONTAINER} | grep -s '^taped') ]; then
   echo "Running /opt/run/bin/taped.sh" &> ${logfile}
   /opt/run/bin/taped.sh 2>&1 | tee -a ${logfile}
 fi
+
+if [ $(echo ${MY_NAME} | grep -s '^ctaeos') ]; then
+  echo "Running /shared/ctaeos-mgm.sh" &> ${logfile}
+  /opt/run/bin/ctaeos-mgm.sh 2>&1 | tee -a ${logfile}
+fi
+
+echo "DONE" >> ${logfile}
diff --git a/continuousintegration/orchestration/create_instance.sh b/continuousintegration/orchestration/create_instance.sh
index 6f82f10f0e..a0a9e6cabd 100755
--- a/continuousintegration/orchestration/create_instance.sh
+++ b/continuousintegration/orchestration/create_instance.sh
@@ -141,7 +141,7 @@ fi
 
 if [ $usesystemd == 1 ] ; then
     echo "Using systemd to start services on some pods"
-    for podname in ctafrontend tpsrv; do
+    for podname in ctafrontend tpsrv ctaeos; do
         sed -i "/^\ *command:/d" ${poddir}/pod-${podname}*.yaml
     done
 fi
-- 
GitLab