#!/bin/sh
#
# deltacloud-core   Deltacloud API Core
# chkconfig: 345 90 60
# description: deltacloud-core is primary server process for the \
#             Deltacloud Core component.

### BEGIN INIT INFO
# Provides: deltacloud-core
# Required-Start: 
# Required-Stop: 
# Default-Start: 3 5 
# Default-Stop: 0 1 2 6 
# Short-Description: Deltacloud Core API deamon
# Description: Deltacloud Core API provides access to different cloud providers \
#   using single REST API 
### END INIT INFO

. /etc/rc.d/init.d/functions

[ -r /etc/sysconfig/deltacloud-core ] && . /etc/sysconfig/deltacloud-core

exec="/usr/bin/deltacloudd"
prog="deltacloud-core"

[ ! -d /var/log/$prog ] && mkdir -p /var/log/$prog

# You can overide these variables using /etc/sysconfig/deltacloud-core
#
# ENV=production|development
# DRIVER=ec2|mock|gogrid
#
#
API_ENV="${ENV:-production}"
HOST="${HOST:-localhost}"
DRIVER="${DRIVER:-ec2}"
PORT="${PORT:-3002}"
LOGFILE="${LOGFILE:-/var/log/$prog/$DRIVER.log}"
lockfile="${LOCKFILE:-/var/lock/subsys/$prog }"
DELTACLOUD_USER="${DELTACLOUD_USER:-nobody}"

[ -r $LOGFILE ] && chown nobody $LOGFILE
[ -r $lockfile ] && chown nobody $lockfile

start() {
    [ -x $exec ] || exit 5

    echo -n $"Starting $prog: "
    daemon --user $DELTACLOUD_USER $exec -i $DRIVER -r $HOST -e $API_ENV --port $PORT >> $LOGFILE 2>&1 &
    retval=$?

    if [ $retval -eq 0 ] && touch $lockfile ; then
      echo_success
      echo
    else
      echo_failure
      echo
    fi
    return $retval
}

stop() {
    echo -n $"Shutting down $prog: "
    killproc deltacloudd
    retval=$?
    if [ $retval -eq 0 ] && rm -f $lockfile ; then
      echo_success
      echo
    else
      echo_failure
      echo
    fi
    return $retval
}

case "$1" in
    start)
      start
      ;;
    stop)
      stop
      ;;
    restart)
      stop
      start
      ;;
    reload)
      ;;
    force-reload)
      restart
      ;;
    status)
      status $PROG
      retval=$?
      ;;
    *)
      echo "Usage: $prog {start|stop|restart|status}"
      exit 1
  ;;
esac

exit $?
