ansible-roles/smartgears/dataminer_app/templates/algorithms-updater.j2

87 lines
2.6 KiB
Plaintext
Raw Normal View History

#!/bin/bash
set -e
set -o pipefail
INFRA_REFERENCE={{ dataminer_infra_reference }}
ADD_ALGORITHM_DIR={{ smartgears_user_home }}/algorithmInstaller
ADD_ALGORITHM_PATH={{ smartgears_user_home }}/algorithmInstaller/addAlgorithm.sh
ALGORITHMS_FILE={{ smartgears_user_home }}/wps_algorithms/algorithms/${INFRA_REFERENCE}/algorithms
OUT_DIR=$( mktemp -d -t algorithms-updater.XXXXXXXXXX )
ALGORITHMS_TEMP_SCRIPT=$OUT_DIR/add_algorithms
LOG_DIR={{ smartgears_user_home }}/wps_algorithms_install_log/
LOG_FILE=${LOG_DIR}/algorithms_updater.log
LOCK_FILE=${LOG_DIR}/.algorithms_updater.lock
ALGO_DIR={{ smartgears_user_home }}/wps_algorithms/algorithms
RUNNING_JOB=
RUNNING_JOB_RETVAL=
trap "logger 'algorithms-updater: trap intercepted, exiting.' ; cleanup 1" SIGHUP SIGINT SIGTERM
function cleanup() {
rm -fr $OUT_DIR
rm -f $LOCK_FILE
exit $1
}
function create_log_dir() {
if [ ! -d $LOG_DIR ] ; then
mkdir -p $LOG_DIR
fi
}
function check_lock_file() {
# Create the lock file
if [ -f $LOCK_FILE ] ; then
set +o pipefail
set +e
RUNNING_JOB=$( ps auwwx | grep `cat /tmp/io` | grep -v grep )
RUNNING_JOB_RETVAL=$?
if [ $RUNNING_JOB_RETVAL -eq 0 ] ; then
logger 'algorithms-updater: another job still running, exiting.'
rm -fr $OUT_DIR
exit 0
else
rm -f $LOCK_FILE
fi
else
logger 'algorithms-updater: no other jobs running, proceeding.'
fi
set -o pipefail
set -e
echo "$$" > $LOCK_FILE
}
function update_svn_repo() {
logger 'algorithms-updater: update the SVN repo'
cd $ALGO_DIR
svn update > $LOG_FILE 2>&1
}
function algorithms_updater() {
logger 'algorithms-updater: scan the algorithms list and build the algorithms script. Reference infra is {{ dataminer_infra_reference }}'
echo "#!/bin/bash" > $ALGORITHMS_TEMP_SCRIPT
echo "cd $ADD_ALGORITHM_DIR" >> $ALGORITHMS_TEMP_SCRIPT
echo "" >> $ALGORITHMS_TEMP_SCRIPT
cat $ALGORITHMS_FILE | awk -F \| '{ print $6 }' >> $ALGORITHMS_TEMP_SCRIPT
sed -i -e 's/<notextile>//g' $ALGORITHMS_TEMP_SCRIPT
sed -i -e 's/<\/notextile>//g' $ALGORITHMS_TEMP_SCRIPT
chmod 755 $ALGORITHMS_TEMP_SCRIPT
if [ -x $ADD_ALGORITHM_PATH ] ; then
logger 'algorithms-updater: add the algorithms configurations. Reference infra is {{ dataminer_infra_reference }}'
$ALGORITHMS_TEMP_SCRIPT >> $LOG_FILE 2>&1
else
logger 'algorithms-updater: {{ smartgears_user_home }}/algorithmInstaller/addAlgorithm.sh is not an executable, aborting'
cleanup 1
fi
}
#
# Main
#
create_log_dir
check_lock_file
update_svn_repo
algorithms_updater
cleanup 0