#!/bin/bash -e

source $OPENSHIFT_CARTRIDGE_SDK_BASH

function start {
	LOGPIPE=${OPENSHIFT_HOMEDIR}/app-root/runtime/logshifter-python
	rm -f $LOGPIPE && mkfifo $LOGPIPE
	/usr/bin/logshifter -tag python < $LOGPIPE &
    
    PYTHONPATH=$OPENSHIFT_DATA_DIR:$OPENSHIFT_DATA_DIR/config/:$OPENSHIFT_REPO_DIR/.openshift:$OPENSHIFT_REPO_DIR/config:$OPENSHIFT_REPO_DIR/EXT:$OPENSHIFT_REPO_DIR/wsgi::$OPENSHIFT_CELERY_DIR/conf.d:$OPENSHIFT_REPO_DIR:$PYTHONPATH
    
    echo  "Starting Celery"
    #echo "nohup nice -n 10 ${OPENSHIFT_CELERY_DIR}usr/celery multi start worker --config=${OPENSHIFT_CELERY_CONFIG=celeryconfig}  --loglevel=DEBUG --hostname=$OPENSHIFT_APP_DNS --pidfile=${OPENSHIFT_CELERY_DIR}etc/celeryd.pid --logfile=${OPENSHIFT_HOMEDIR}app-root/logs/celery_log.txt &> $LOGPIPE &" > ${OPENSHIFT_LOG_DIR}celery_log.txt
    nohup nice -n 10 ${OPENSHIFT_CELERY_DIR}usr/celery multi start worker --config=${OPENSHIFT_CELERY_CONFIG=celeryconfig}  --loglevel=DEBUG --hostname=$OPENSHIFT_APP_DNS --pidfile=${OPENSHIFT_CELERY_DIR}etc/celeryd.pid --logfile=${OPENSHIFT_LOG_DIR}celery_log.txt &> $LOGPIPE &
    if ps -p `cat ${OPENSHIFT_CELERY_DIR}etc/celeryd.pid` > /dev/null; 
    then
       echo "Starting celery worked"
    else
        echo "Starting celery failed"
    fi
}

function stop {
    celery multi stop worker --pidfile=${OPENSHIFT_CELERY_DIR}etc/celeryd.pid
    if ps -p `cat ${OPENSHIFT_CELERY_DIR}etc/celeryd.pid` > /dev/null; 
    then
        kill -9 `cat ${OPENSHIFT_CELERY_DIR}etc/celeryd.pid`
        rm -f ${OPENSHIFT_CELERY_DIR}etc/celeryd.pid
    else
        echo "nothing to kill"
    fi
    echo "stopped"
}

function restart {
    celery multi restart worker --config=${OPENSHIFT_CELERY_CONFIG=celeryconfig}  --loglevel=DEBUG --hostname=$OPENSHIFT_APP_DNS --pidfile=${OPENSHIFT_CELERY_DIR}etc/celeryd.pid --logfile=${OPENSHIFT_LOG_DIR}celery_log.txt 
    echo "Restarted celery"
    
}

function status() {
    pid=`cat ${OPENSHIFT_CELERY_DIR}etc/celeryd.pid`
    PROCESS_COUNT=$(ps -ef | grep "${PROCESS_NAME}" | grep -v "grep" | wc -l)
    client_result $pwd
    if [ -f $pid ] && ( kill -0 $(cat $pid) ); then
        client_result "Celery is running at pid:${pid}, $PROCESS_COUNT instances of celery"
    else
        client_result "Celery is not running"
    fi
}


function catchall {
    echo "not yet implemented"
}

# Ensure arguments.
if ! [ $# -gt 0 ]; then
    echo "Usage: $0 [start|restart|stop|status]"
    exit 1
fi

# Source utility functions.
source $OPENSHIFT_CARTRIDGE_SDK_BASH

case "$1" in
  start)       start ;;
  stop)        stop ;;
  restart)     restart ;;
  status)      status ;;
  reload)      catchall ;;
  tidy)        catchall ;;
  pre-build)   catchall ;;
  build)       catchall ;;
  deploy)      catchall ;;
  post-deploy) catchall ;;
  *)           exit 0
esac

exit 0
