Newer
Older
HOME_DIR=${LOFAR20_DIR:-${PWD}}
if [ ! -d ${HOME_DIR}/bootstrap ]; then
# HOME_DIR/bootstrap needs to exist for this script to work.
echo -e "$(basename ${0}):\n\nERROR\n\tCannot run this script because the \"bootstrap\" cannot be found!\n\n"
exit 1
fi
# Save for the moment when tango will be cloned.
OLD_HOME_DIR=${HOME_DIR}.old
trap ' exit ${?} ' ABRT EXIT HUP INT TERM QUIT ERR
function pull_images()
{

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose && make pull)
}
function build_lofar_images()
{

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose && make build)
function move_tango_dir_out_of_the_way()
mv ${HOME_DIR} ${OLD_HOME_DIR}
}
function remove_images()
{
${HOME_DIR}/bootstrap/sbin/delete_all_docker_images.sh YES_DELETE_ALL
}
function pull_tango()
{
git clone https://git.astron.nl/lofar2.0/tango.git ${HOME_DIR}
# Now remove the old tango dir.
rm -rf ${OLD_HOME_DIR}
}
function clean_images()
{
# This can return a non-0 return code if the system
# has already been shut down.
# Therefore disable Bash's exit on error flag
set +e

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose && make clean)
# And enable it again.
set -e

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose
# There is an issue with the dsconfig container that it every
# other time just exits without telling why.
# Therefore start dsconfig, then wait for 10s to allow it
# to die and just start it again.
# Don't they say that the second time is always a charm?
echo -e "\tWaiting for dsconfig to settle down..."
sleep 10
echo -e "\tDone.\n\tStarting dsconfig again."

Thomas Juerges
committed
make start dsconfig)
}
function configure_tango_db()
{
# This somehow returns with a non-0 return code, make Bash happy.
${HOME_DIR}/sbin/update_ConfigDb.sh ${HOME_DIR}/CDB/LOFAR_ConfigDb.json || true
}
function configure_elk()
{

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose && make start elk-configure-host)
}
function start_support_images()
{

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose && make start elk
make start jupyter)
}
function start_lofar_images()
{

Thomas Juerges
committed
(cd ${HOME_DIR}/docker-compose

Thomas Juerges
committed
make start device-sdp)
echo "-> Stopping Docker images and cleaning cleaning up their volumes..."
# Move the tango repo dir out of the way.
echo "-> Moving the tango directory ${HOME_DIR} out of the way..."
move_tango_dir_out_of_the_way
echo -e "\tDone.\n"
# Now pull the repo.
echo "-> Cloning tango's master branch to ${HOME_DIR}..."
# Now clean out the docker images.
echo "-> Deleting all Docker images from this host..."
echo "-> Installing latest SKA Docker images on this host..."
# Build all of the LOFAR Docker images.
echo "-> Building LOFAR2.0 Docker images..."
# Now start the basic Tango system, including dsconfig.
echo "-> Staring up a minimal Tango session..."
echo "-> Configuring the Tango DB for LOFAR2.0..."
# Now configure the ELK container.
echo "-> Configuring the ELK container for this host..."
echo "-> Start LOFAR2.0 support containers (ELK, Jupyter, etc.)..."
# And finally start all the LOFAR images.
echo "-> Start LOFAR2.0 containers..."
# Now the system should be ready to use.
# For instance the cold start script could now be executed.
echo -e "-> LOFAR2.0 system rebuild was successful.\n\n"