#!/bin/bash

echo
echo "=================================================================="
echo "[WARNING] This script is deprecated. Use \"\$ ./onos.sh zk\" instead."
echo "=================================================================="
echo

# Set paths

ONOS_HOME=`dirname $0`
ZK_DIR=${HOME}/zookeeper-3.4.5
#ZK_CONF=${ONOS_HOME}/conf/zoo.cfg
ZOO_LOG_DIR=${ONOS_HOME}/onos-logs

function start {
  # Run Zookeeper with our configuration
  echo "Starting Zookeeper"
#  echo "[31;48m[WARNING] This script copies conf/zoo.cfg to $ZK_DIR/conf/zoo.cfg (overwrites)[0m"
#  echo "[31;48moriginal zoo.cfg was backed up as zoo.cfg.backup[0m"
#  if [ $ZK_DIR/conf/zoo.cfg ]; then
#    cp $ZK_DIR/conf/zoo.cfg $ZK_DIR/conf/zoo.cfg.backup
#  fi
#  hostid > /var/lib/zookeeper/myid
#  cp $ZK_CONF $ZK_DIR/conf
#  echo "cp $ZK_CONF $ZK_DIR/conf"
  $ZK_DIR/bin/zkServer.sh start
}

function stop {
  # Kill the existing processes
  pids=`jps -l | grep org.apache.zookeeper.server | awk '{print $1}'`
  for p in ${pids}; do
    if [ x$p != "x" ]; then
      kill -KILL $p
      echo "Killed existing prosess (pid: $p)"
    fi
  done
}
function status {
  $ZK_DIR/bin/zkServer.sh status
}

case "$1" in
  start)
    start 
    ;;
  stop)
    stop
    ;;
  status)
    status
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac
