#!/bin/sh
# PURPOSE:	cleanupRawdisp: remove outdated directories with RAWDISP plots on web servers
# AUTHOR:	Burkhard Wolff, ESO-DMO
# VERSIONS:	1.0	-- June 2015
#		1.0.1	-- make link to RAWDISP invisible in local AB monitors (2015-07-23)
#		1.0.2	-- delete outdated directories in <DFO_MON_DIR/RAWDISP (2015-07-30)
#		1.0.3	-- source .bashrc instead of .qcrc and .dfosrc (2018-08-23)
# PARAMETERS:	none
# CONFIG:	none
# =============================================================================
TOOL_VERSION="1.0.3"

# =============================================================================
# 0. preparation
# 0.1 initialize environment (tool to be run as cronjob) and check
# =============================================================================

if [ ! -s $HOME/.qcrc ]
then
	echo "***ERROR: No $HOME/.qcrc found."
	exit -1
fi

if [ ! -s $HOME/.dfosrc ]
then
	echo "***ERROR: No $HOME/.dfosrc found."
	exit -1
fi

source $HOME/.bashrc

CHECK=`printenv | grep DFO`
if [ "Q$CHECK" = "Q" ]
then
	echo "*** ERROR: DFO variables not defined. Check ~/.dfosrc and restart."
	exit -1
fi

if [ "Q$DFO_INSTRUMENT" = "Q" ]
then
	echo "*** ERROR: \$DFO_INSTRUMENT not defined. Check ~/.dfosrc and restart."
	exit -1
fi

if [ "Q$DFO_WEB_SERVER" = "Q" ]
then
	echo "*** ERROR: \$DFO_WEB_SERVER not defined. Check ~/.dfosrc and restart."
	exit -1
fi

if [ "Q$MIRROR_WEB_SERVER" = "Q" ]
then
	echo "*** ERROR: \$MIRROR_WEB_SERVER not defined. Check ~/.dfosrc and restart."
	exit -1
fi

# =============================================================================
# 0.2 get options
# =============================================================================

# define help
cat > $TMP_DIR/cleanupRawdisp.h <<EOT
USAGE:
	cleanupRawdisp -v | -h
	Removes outdated directories with RAWDISP plots on web servers.
	Outdated means: older than TODAY - 7 days.
	The tool should be called once a day with as a cron job.
EOT

# get options
while getopts :hv OPTION
do
	case "$OPTION" in
		v) echo "$TOOL_VERSION"
		   exit 0 ;;
		h) cat $TMP_DIR/cleanupRawdisp.h
		   exit 0 ;;
	esac
done

# =============================================================================
# 1.0 main
# =============================================================================

TODAY=`date +%Y-%m-%d`
OUTDATED=`qcdate $TODAY -7`

# clean old directories on qcweb
ssh -o BatchMode=yes $DFO_WEB_SERVER "bin/webDirCleanup RAWDISP ${DFO_INSTRUMENT} $OUTDATED"
# additional call needed because replication only copies from DFO_WEB_SERVER and never deletes on MIRROR_WEB_SERVER
ssh -o BatchMode=yes $MIRROR_WEB_SERVER "bin/webDirCleanup RAWDISP ${DFO_INSTRUMENT} $OUTDATED"

# edit links in local AB monitor pages
scp qc@qcweb:qc/$DFO_INSTRUMENT/reports/RAWDISP/date_list $TMP_DIR/cr_date_list 2>&1 1>/dev/null
if [ -s $TMP_DIR/cr_date_list ]
then
	DATE_LIST=`cat $TMP_DIR/cr_date_list | sort -u`
else
	DATE_LIST=""
fi
for D in $DATE_LIST
do
	if [ $D = $OUTDATED ]
	then
		break
	else
		YEAR=`echo $D | cut -c1-4`
		YM=`echo $D | cut -c1-7`
		if [ -s $DFO_MON_DIR/FINISHED/$YEAR/$YM/status_${D}.html ]
		then
			sed -i "s/<font color=#FF6600>RAW<\/font>/<font color=#006A9D>RAW<\/font>/" $DFO_MON_DIR/FINISHED/$YEAR/$YM/status_${D}.html
		fi
	fi
done

# delete any remnants in DFS_PRODUCT (also cleaned by finishNight)
if [ -d $DFS_PRODUCT/RAWDISP ]
then
	cd $DFS_PRODUCT/RAWDISP
	ls -d 20* 2>/dev/null > $TMP_DIR/rawdisp_dates
	echo $OUTDATED >> $TMP_DIR/rawdisp_dates
	DATE_LIST=`cat $TMP_DIR/rawdisp_dates | sort -u`
	for D in $DATE_LIST
	do
		if [ $D = $OUTDATED ]
		then
			break
		fi
		rm -rf $DFS_PRODUCT/RAWDISP/$D
	done
fi

# delete outdated directories in <DFO_MON_DIR>/RAWDISP
if [ -d $DFO_MON_DIR/RAWDISP ]
then
	cd $DFO_MON_DIR/RAWDISP
	ls -d 20* 2>/dev/null > $TMP_DIR/rawdisp_logdates
	echo $OUTDATED >> $TMP_DIR/rawdisp_logdates
	DATE_LIST=`cat $TMP_DIR/rawdisp_logdates | sort -u`
	for D in $DATE_LIST
	do
		if [ $D = $OUTDATED ]
		then
			break
		fi
		rm -rf $DFO_MON_DIR/RAWDISP/$D
	done
fi

exit 0

