#!/bin/bash
#
# This script is designed to run the Async Tasks CLI tool.
# The script assumes all RPM dependencies were installed, so jar
# files can be found under /usr/share/java. The tool's configuration
# should be under the /etc directory.
#
# Bare in mind this script has to run on 3.0.x setup, so all relevant paths include
# rhevm and not engine (i.e - rhevm-compat and not engine-compat)

die () {
        printf >&2 "$@"
        exit 1
}

usage () {
        printf "engine-tasks-cli: CLI for managing async tasks \n"
        printf "USAGE:\n"
        printf "\tengine-tasks-cli [option...] [optional: -c=<path_to_config_file>]\n"
        printf "Option:\n"
        printf "\t-l, --list\n"
        printf "\t\tlist all tasks.\n"
        printf "\t-z, --zombies\n"
        printf "\t\tlist zombie tasks.\n"
        printf "\t-r, --remove-task=<task_id>\n"
        printf "\t\tremoves a task that its id is specified by <task_id>\n"
        printf "\t-R, --remove-all-zombies\n"
        printf "\t\tremoves all zombie tasks from the system.\n"
        printf "\t-D, --remove-command-zombies=<entity_id>\n"
        printf "\t\tremoves all zombie tasks of a command that its entity ID is specified by <entity_id>\n"
        printf "\t-h, --help\n"
        printf "\t\tdisplay this help and exit.\n"

        return 0
}

# Import configurations
PUSHDIR=`readlink -f $0`
pushd `dirname $PUSHDIR` > /dev/null

# Support alternate configuration file
DEFAULT_CONF_FILE_ARGUMENT="-c=/etc/ovirt-engine/engine-async-tasks-cli/engine-async-tasks-cli.properties"

if [ "$1" == "--help" -o "$1" == "-h" ]; then
        usage
        exit 0
fi

EXPECTED_ARGS=1
NO_ARGS_EXIT_CODE=5
if [ $# -lt $EXPECTED_ARGS ]
then
  exit $NO_ARGS_EXIT_CODE
fi



# Verify all classpath elements available
JAVA_LIB_HOME=/usr/share/java
JARS_LIB_3_0=/usr/share/rhevm/rhevm-config/lib
UTILITY_LIB=/usr/share/java/ovirt-engine
CP=/etc/ovirt-engine/engine-async-tasks-cli/:$JAVA_LIB_HOME/commons-logging.jar:$JAVA_LIB_HOME/commons-collections.jar:$JAVA_LIB_HOME/commons-lang.jar:$JAVA_LIB_HOME/commons-configuration.jar:$JAVA_LIB_HOME/commons-jxpath.jar:$JAVA_LIB_HOME/log4j.jar:$JAVA_LIB_HOME/commons-codec.jar:$JAVA_LIB_HOME/postgresql-jdbc.jar:$JARS_LIB_3_0/rhevm-encryptutils.jar:$JARS_LIB_3_0/rhevm-compat.jar:$UTILITY_LIB/engine-async-tasks-cli.jar:$JAVA_LIB_HOME/rhevm-tools-common.jar
for f in $(echo $CP|sed 's/:/ /g')
do
        if [ ! -s $f ]; then
                die "Error: can't run without missing JAR file: $f\n"
        fi
done

#  Run!
if [ $# -eq 2 ] #checks if alternate config file was explicitly passed by user
then
  DEFAULT_CONF_FILE_ARGUMENT=""
fi

java -cp .:$CP org.ovirt.engine.core.atc.logic.AsyncTasksCli $DEFAULT_CONF_FILE_ARGUMENT "$@"


exit $?
