#!/bin/bash
#
# KylinFS distribute filesystem database
#
# chkconfig: 345 99 1
# description: kylinfs_db is a distribute key-value based database
#
# Copyright 2023-2026
### BEGIN INIT INFO
# Provides: kylinfs
# Required-Start:
# Required-Stop:  kylinfs
### END INIT INFO

. /etc/kfs-env.sh

RETVAL=0
KYLINFS_CMD="${INSTALL_DIR}/metadb.sh"

[[ -f "$KYLINFS_CMD" ]] || {
  exit 2
}

kill_proc()
{
  local name=${1?}
  local pid=$(get_pid $name)

  if [ -z "$pid" ]; then
      echo "      Not Running"
      return
  fi

  local signal="-TERM"   # default signal
  kill $signal $pid

  sleep 1

  for ((i=0; i<60; i++)) do
      pid=$(get_pid $name)
      if [ -z "$pid" ]; then
          echo "      Done"
          return;
      else
          sleep 2
      fi
  done
  echo "      Failed"
}

get_pid()
{
  local name="${@}"
  local pid=$(ps -ef|grep -v grep |grep "$name"|awk '{print $2}')
  echo ${pid}
}

start() {
  echo -n "Starting kylinfs metadb: "
  "${KYLINFS_CMD}"
  RETVAL=$?
  local pid=$(get_pid "kylinfs db")
  return $RETVAL
}	

stop() {
  echo -n "Shutting down kylinfs metadb: "
  kill_proc "kylinfs db"
  RETVAL=$?
  return $RETVAL
}

status() {
  echo -n "Checking kylinfs metadb status: "
  local pid=$(get_pid "kylinfs db")
  if [ -z "$pid" ]; then
    echo "     Stopped"
  else
    echo "     Running"
  fi
  return 0
}

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

