#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

### BEGIN INIT INFO
# Provides:        ranger-kms
# Required-Start:  $local_fs $remote_fs $network $named $syslog $time
# Required-Stop:   $local_fs $remote_fs $network $named $syslog $time
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start/Stop Ranger kms
### END INIT INFO

#LINUX_USER=kms
BIN_PATH=/usr/bin
MOD_NAME=ranger-kms

realScriptPath=`readlink -f $0`
realScriptDir=`dirname $realScriptPath`
RANGER_KMS_DIR=`(cd $realScriptDir; pwd)`
for custom_env_script in `find ${RANGER_KMS_DIR}/ews/webapp/WEB-INF/classes/conf/ -name "ranger-kms-env*"`; do
        if [ -f $custom_env_script ]; then
                . $custom_env_script
        fi
done
if [ -z "${RANGER_KMS_PID_NAME}" ]
then
        RANGER_KMS_PID_NAME=rangerkms.pid
fi
if [ -z "${RANGER_KMS_PID_DIR_PATH}" ]
then
	RANGER_KMS_PID_DIR_PATH=/var/run/ranger_kms
fi
# User can set their own pid path using RANGER_KMS_PID_DIR_PATH and
# RANGER_KMS_PID_NAME variable before calling the script. The user can modify
# the value of the RANGER_KMS_PID_DIR_PATH in ranger-kms-env-piddir.sh to
# change pid path and set the value of RANGER_KMS_PID_NAME to change the
# pid file.
pidf=${RANGER_KMS_PID_DIR_PATH}/${RANGER_KMS_PID_NAME}

if [ -f $pidf ]; then
	pid=`cat $pidf`
else
    pid=`ps -ef | grep java | grep -- '-Dproc_rangerkms' | grep -v grep | awk '{ print $2 }'`
fi

case $1 in
start)
	if [ "${pid}" != "" ]
	then
		echo "Ranger KMS Service is already running"
		exit 1
	else
		echo "Starting Apache Ranger KMS."
		/bin/su --login  $LINUX_USER -c "${BIN_PATH}/${MOD_NAME} start"
	fi
	;;
stop)
	if [ "${pid}" != "" ]
	then
		echo "Stopping Apache Ranger KMS."
		/bin/su --login  $LINUX_USER -c "${BIN_PATH}/${MOD_NAME} stop"
	else
		echo "Ranger KMS Service is NOT running"
		exit 1
	fi
	;;
restart)
	if [ "${pid}" != "" ]
	then
		echo "Stopping Apache Ranger KMS."
		/bin/su --login  $LINUX_USER -c "${BIN_PATH}/${MOD_NAME} stop"
		sleep 10
	fi
	echo "Starting Apache Ranger KMS."
	/bin/su --login  $LINUX_USER -c "${BIN_PATH}/${MOD_NAME} start"
	;;
status)
	if [ "${pid}" != "" ]
	then
		echo "Ranger KMS Service is  running [pid={$pid}]"
	else
		echo "Ranger KMS Service is  NOT running." 

	fi
	;;
*)
	echo "Invalid argument [$1]; Only start|stop|restart|status are supported."
    exit 1
esac
