From 07d0d50cd79a85e3c38fdf936dae5322b946dfc9 Mon Sep 17 00:00:00 2001
From: Julien Leduc <julien.leduc@cern.ch>
Date: Mon, 26 Jun 2017 16:53:56 +0200
Subject: [PATCH] Merging further added a /CANSTART file so that eos waits for
 all keys to be OK before starting. /bin/sh -> /bin/bash to allow function
 names with `-`... yum and yum-config-manager overridden when in BUILDTREE
 environment ctafrontend not booting needs further work

---
 .../cc7/opt/run/bin/mkSymlinks.sh             |  4 +--
 .../cc7/buildtree-stage1-rpms/Dockerfile      |  2 +-
 .../cc7/buildtree-stage2-scripts/Dockerfile   |  2 +-
 .../ctafrontend/cc7/opt/run/bin/client.sh     |  2 +-
 .../ctafrontend/cc7/opt/run/bin/ctacli.sh     |  2 +-
 .../ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh | 14 ++++++--
 .../cc7/opt/run/bin/ctafrontend.sh            |  4 +--
 .../ctafrontend/cc7/opt/run/bin/init.sh       |  4 +--
 .../ctafrontend/cc7/opt/run/bin/init_pod.sh   | 11 +++++-
 .../docker/ctafrontend/cc7/opt/run/bin/kdc.sh |  2 +-
 .../ctafrontend/cc7/opt/run/bin/mkSymlinks.sh | 36 +++++++++++++++++++
 .../ctafrontend/cc7/opt/run/bin/rmcd.sh       |  4 +--
 .../ctafrontend/cc7/opt/run/bin/taped.sh      |  4 +--
 .../orchestration/create_instance.sh          |  6 ++++
 14 files changed, 78 insertions(+), 19 deletions(-)
 create mode 100755 continuousintegration/docker/ctafrontend/cc7/opt/run/bin/mkSymlinks.sh

diff --git a/continuousintegration/docker/buildtree_runner/cc7/opt/run/bin/mkSymlinks.sh b/continuousintegration/docker/buildtree_runner/cc7/opt/run/bin/mkSymlinks.sh
index 1aabd39bba..c74dcab238 100755
--- a/continuousintegration/docker/buildtree_runner/cc7/opt/run/bin/mkSymlinks.sh
+++ b/continuousintegration/docker/buildtree_runner/cc7/opt/run/bin/mkSymlinks.sh
@@ -33,6 +33,4 @@ ln -s -v -t /usr/bin \
   ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/mediachanger/cta-mediachanger-mount \
   ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/disk/xrdclfsopaquetest \
   ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/xroot-client-test/xrootHammer
-ln -s -v -t /usr/lib64 \
-  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/xroot_plugins/libXrdCtaOfs.so
-  
+find ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR} | grep '.so$' | xargs -itoto ln -s -v -t /usr/lib64 toto
diff --git a/continuousintegration/docker/ctafrontend/cc7/buildtree-stage1-rpms/Dockerfile b/continuousintegration/docker/ctafrontend/cc7/buildtree-stage1-rpms/Dockerfile
index 4f4dbf3ed2..164cb21a87 100644
--- a/continuousintegration/docker/ctafrontend/cc7/buildtree-stage1-rpms/Dockerfile
+++ b/continuousintegration/docker/ctafrontend/cc7/buildtree-stage1-rpms/Dockerfile
@@ -26,7 +26,7 @@ FROM gitlab-registry.cern.ch/linuxsupport/cc7-base
 # my environment variables
 ENV ORCHESTRATIONDIR="continuousintegration/orchestration/pods" \
     LOCALORCHESTRATIONDIR="/opt/ci" \
-    BASEDIR="continuousintegration/docker/buildtree_runner/cc7" \
+    BASEDIR="continuousintegration/docker/ctafrontend/cc7" \
     CTAREPODIR="/tmp/repo"
 
 # Manage repos before running yum
diff --git a/continuousintegration/docker/ctafrontend/cc7/buildtree-stage2-scripts/Dockerfile b/continuousintegration/docker/ctafrontend/cc7/buildtree-stage2-scripts/Dockerfile
index 6a3ac9d4c9..94f040db25 100644
--- a/continuousintegration/docker/ctafrontend/cc7/buildtree-stage2-scripts/Dockerfile
+++ b/continuousintegration/docker/ctafrontend/cc7/buildtree-stage2-scripts/Dockerfile
@@ -26,7 +26,7 @@ FROM buildtree-runner-stage1
 # my environment variables
 ENV ORCHESTRATIONDIR="continuousintegration/orchestration/pods" \
     LOCALORCHESTRATIONDIR="/opt/ci" \
-    BASEDIR="continuousintegration/docker/buildtree_runner/cc7" \
+    BASEDIR="continuousintegration/docker/ctafrontend/cc7" \
     CTAREPODIR="/tmp/repo"
 
 # Add pod specific configuration
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/client.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/client.sh
index 504aa72daa..0c9ad38f37 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/client.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/client.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable ceph
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctacli.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctacli.sh
index 12089d411a..62d034794f 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctacli.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctacli.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable ceph
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 a9cbb5a19b..118d0d1585 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctaeos-mgm.sh
@@ -1,6 +1,6 @@
-#!/bin/sh 
+#!/bin/bash 
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable eos-citrine-commit
@@ -84,6 +84,16 @@ echo -n '0 u:daemon g:daemon n:ctaeos+ N:6361884315374059521 c:1481241620 e:0 f:
   mkdir -p /fst
   chown daemon:daemon /fst/
 
+
+# Waiting for /CANSTART file before starting eos
+echo -n "Waiting for /CANSTART before going further"
+for ((i=0;i<600;i++)); do
+  test -f /CANSTART && break
+  sleep 1
+  echo -n .
+done
+test -f /CANSTART && echo OK || exit 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
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctafrontend.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctafrontend.sh
index 852b16b7a6..29a6fbc7c7 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctafrontend.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/ctafrontend.sh
@@ -1,6 +1,6 @@
-#!/bin/sh 
+#!/bin/bash 
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable ceph
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init.sh
index 6a9143eae8..c2448aba64 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init.sh
@@ -1,6 +1,6 @@
-#!/bin/sh 
+#!/bin/bash 
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 # enable cta repository from previously built artifacts
 yum-config-manager --enable cta-artifacts
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init_pod.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init_pod.sh
index 418e26abc2..f7915854c5 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init_pod.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/init_pod.sh
@@ -1,4 +1,5 @@
-#!/bin/bash
+# This file must be sourced from another shell script
+# . /opt/run/bin/init_pod.sh
 
 LOGMOUNT=/mnt/logs
 
@@ -26,3 +27,11 @@ echo "DONE"
 #echo -n "Yum should resolve names using IPv4 DNS: "
 #echo "ip_resolve=IPv4" >> /etc/yum.conf
 #echo "DONE"
+
+# redefining yum commands if in BUILDTREE environment
+if [[ -n ${BUILDTREE_BASE} ]]; then
+  echo "Configuring BUILDTREE environment"
+  yum-config-manager() { echo "Skipping yum-config-manager $@"; }
+  yum() { echo "Skipping yum $@"; }
+  /opt/run/bin/mkSymlinks.sh
+fi
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/kdc.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/kdc.sh
index d95482d88c..711919e619 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/kdc.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/kdc.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 # Install missing RPMs (kdc)
 yum -y install heimdal-server heimdal-workstation
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/mkSymlinks.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/mkSymlinks.sh
new file mode 100755
index 0000000000..2d21b1d61d
--- /dev/null
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/mkSymlinks.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# make symbolic links to all CTA binaries.
+
+# Following binary list is build from (run in the build tree):
+# find -type f -executable | egrep -v "\.so$" | egrep -v "\.sh$" | grep -v RPM/BUILD | grep -v CMake | grep -v CPack
+
+echo Creating symlinks for CTA binaries and symlinks.
+ln -s -v -t /usr/bin \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/catalogue/cta-catalogue-admin-host-create \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/catalogue/cta-database-poll \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/catalogue/cta-catalogue-admin-user-create \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/catalogue/cta-catalogue-schema-create \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/catalogue/cta-catalogue-schema-drop \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/cmdline/cta \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/dumpObject \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/listObjectStore \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/makeMinimalVFS \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/cta-objectstore-dump-object \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/cta-objectstore-list \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/objectstore/cta-objectstore-initialize \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/nameserver/makeMockNameServerBasePath \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tapeserver/castor/tape/tapeserver/drive/TapeDriveReadWriteTest \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tapeserver/castor/tape/tapeserver/daemon/cta-tapeserverd \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tapeserver/cta-taped \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tests/cta-systemTests \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tests/cta-catalogueUnitTests \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tests/cta-unitTests \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tests/cta-unitTests-multiProcess \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/tests/cta-oraUnitTests \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/xroot_plugins/cta-xrootd_plugins-fakeeos \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/mediachanger/cta-mediachanger-dismount \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/mediachanger/cta-mediachanger-mount \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/disk/xrdclfsopaquetest \
+  ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR}/xroot-client-test/xrootHammer
+find ${BUILDTREE_BASE}/${BUILDTREE_SUBDIR} | grep '.so$' | xargs -itoto ln -s -v -t /usr/lib64 toto
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/rmcd.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/rmcd.sh
index 6c95c1dfbd..7f6fd7d68c 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/rmcd.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/rmcd.sh
@@ -1,6 +1,6 @@
-#!/bin/sh 
+#!/bin/bash 
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable ceph
diff --git a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/taped.sh b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/taped.sh
index b5e2298d92..309402867b 100755
--- a/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/taped.sh
+++ b/continuousintegration/docker/ctafrontend/cc7/opt/run/bin/taped.sh
@@ -1,6 +1,6 @@
-#!/bin/sh 
+#!/bin/bash 
 
-/opt/run/bin/init_pod.sh
+. /opt/run/bin/init_pod.sh
 
 yum-config-manager --enable cta-artifacts
 yum-config-manager --enable ceph
diff --git a/continuousintegration/orchestration/create_instance.sh b/continuousintegration/orchestration/create_instance.sh
index f6e8b10c7c..e78733357f 100755
--- a/continuousintegration/orchestration/create_instance.sh
+++ b/continuousintegration/orchestration/create_instance.sh
@@ -240,6 +240,12 @@ kubectl --namespace=${instance} exec kdc cat /root/eos-server.keytab | kubectl -
 kubectl --namespace=${instance} exec ctacli -- kinit -kt /root/ctaadmin1.keytab ctaadmin1@TEST.CTA
 kubectl --namespace=${instance} exec client -- kinit -kt /root/user1.keytab user1@TEST.CTA
 
+
+
+# allow eos to start
+kubectl --namespace=${instance} exec ctaeos -- touch /CANSTART
+
+
 # create users on the mgm
 # this is done in ctaeos-mgm.sh as the mgm needs this to setup the ACLs
 
-- 
GitLab