#!/bin/bash

# -------------------------------------------------------------------------- #
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org)             #
#                                                                            #
# Licensed 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.                                             #
#--------------------------------------------------------------------------- #

if [ -z "$ONE_LOCATION" ]; then
    OZONES_PID=/var/run/one/ozones.pid
    OZONES_LOCATION=/usr/lib/one/ozones
    OZONES_SERVER=$OZONES_LOCATION/ozones-server.rb
    OZONES_LOCK_FILE=/var/lock/one/.ozones.lock
    OZONES_LOG=/var/log/one/ozones-server.log
    OZONES_LOG_ERROR=/var/log/one/ozones-server.error
    OZONES_CONF=/etc/one/ozones-server.conf
else
    OZONES_PID=$ONE_LOCATION/var/ozones.pid
    OZONES_LOCATION=$ONE_LOCATION/lib/ozones
    OZONES_SERVER=$OZONES_LOCATION/ozones-server.rb
    OZONES_LOCK_FILE=$ONE_LOCATION/var/.ozones.lock
    OZONES_LOG=$ONE_LOCATION/var/ozones-server.log
    OZONES_LOG_ERROR=$ONE_LOCATION/var/ozones-server.error
    OZONES_CONF=$ONE_LOCATION/etc/ozones-server.conf
fi

setup()
{

  if [ -f $OZONES_LOCK_FILE ]; then
    if [ -f  $OZONES_PID ]; then
      ozonesPID=`cat $OZONES_PID`
      ps $ozonesPID &> /dev/null
      if [ $? -eq 0 ]; then
        echo -n "Ozones Server is still running (PID:$ozonesPID). Please "
        echo "try 'ozones-server stop' first."
        exit 1
      fi
    fi
    echo "Stale .lock detected. Erasing it."
    rm $OZONES_LOCK_FILE
  fi
}


start()
{
  if [ ! -f "$OZONES_SERVER" ]; then
    echo "Cannot find $OZONES_SERVER."
    exit 1
  fi

  # Start the ozones daemon
  touch $OZONES_LOCK_FILE
  ruby $OZONES_SERVER > $OZONES_LOG 2>$OZONES_LOG_ERROR &
  LASTPID=$!
  if [ $? -ne 0 ]; then
    echo "Error executing $OZONES_SERVER, please check the log $OZONES_LOG"
    exit 1
  else
      echo $LASTPID > $OZONES_PID
  fi

  sleep 2
  ps $LASTPID &> /dev/null

  if [ $? -ne 0 ]; then
    echo "Error executing $OZONES_SERVER, please check the log $OZONES_LOG"
    exit 1
  fi

  echo "ozones-server started"
}

#
# Function that stops the daemon/service
#
stop()
{
  if [ ! -f $OZONES_PID ]; then
    echo "Couldn't find ozones-server process pid."
    exit 1
  fi

  # Kill the ozones daemon
  kill -INT `cat $OZONES_PID` &> /dev/null

  # Remove pid files
  rm -f $OZONES_LOCK_FILE &> /dev/null

  echo "ozones-server stopped"
}

case "$1" in
  start) setup; start;;
  stop)  stop;;
  *)     echo "Usage: ozones-server {start|stop}" >&2; exit 3;;
esac
