#! /bin/sh
#
# Copyright (c) 2014-2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# chkconfig: - 60 60
# processname: sm-api
# description: Service Management API
#
### BEGIN INIT INFO
# Description: sm-api...
#
# Short-Description: Service Management API.
# Provides: sm-api
# Required-Start: $network
# Should-Start: $syslog
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 6
### END INIT INFO

. /etc/init.d/functions

# Linux Standard Base (LSB) Error Codes
RETVAL=0
LSB_GENERIC_ERROR=1
LSB_INVALID_ARGS=2
LSB_UNSUPPORTED_FEATURE=3
LSB_NOT_INSTALLED=5
LSB_NOT_RUNNING=7

SM_API_NAME="sm-api"
SM_API="/usr/bin/${SM_API_NAME}"
SM_API_CONFIG_FILE="/etc/sm-api/sm-api.conf"

daemon_pidfile="/var/run/${SM_API_NAME}.pid"


if [ ! -e "${SM_API}" ] ; then
    logger "${SM_API} is missing"
    exit ${LSB_NOT_INSTALLED}
fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
export PATH

case "$1" in
    start)
        echo -n "Starting ${SM_API_NAME}: "
        if [ -n "`pidof ${SM_API_NAME}`" ] ; then
            echo -n "is already running "
            RETVAL=0
        else
            /bin/sh -c "${SM_API} --config-file=${SM_API_CONFIG_FILE} --verbose --use-syslog --syslog-log-facility local1"' >> /dev/null 2>&1 & echo $!' > ${daemon_pidfile}
            RETVAL=$?
        fi
        if [ ${RETVAL} -eq 0 ] ; then
            pid=`pidof ${SM_API_NAME}`
            echo "OK"
            logger "${SM_API} (${pid})"
        else
            echo "FAIL"
            RETVAL=${LSB_GENERIC_ERROR}
        fi
        ;;

    stop)
        echo " "
        echo -n "Stopping ${SM_API_NAME}: "

	if [ -e ${daemon_pidfile} ] ; then
            pid=`cat ${daemon_pidfile}`
	    kill -TERM $pid
	    rm -f ${daemon_pidfile}
	    rm -f /var/lock/subsys/${SM_API_NAME}
	    echo "OK"
        else
            echo "FAIL"
        fi    
        ;;

    restart)
        $0 stop
        sleep 1
        $0 start
        ;;

    status)
        if [ -e ${daemon_pidfile} ] ; then
            pid=`cat ${daemon_pidfile}`
	    ps -p $pid | grep -v "PID TTY" >> /dev/null 2>&1
	    if [ $? -eq 0 ] ; then
                echo "${SM_API_NAME} is running"
		RETVAL=0
	    else
                echo "${SM_API_NAME} is NOT running"
		RETVAL=1
            fi
        else
            echo "${SM_API_NAME} is running; no pidfile"
            RETVAL=1
        fi
        ;;

    condrestart)
        [ -f /var/lock/subsys/${SM_API_NAME} ] && $0 restart
        ;;

    *)
        echo "usage: $0 { start | stop | status | restart | condrestart | status }"
        ;;
esac

exit ${RETVAL}
