#!/bin/sh
#
#*************************************************

#Copyright (c) KylinSoft Co., Ltd. [2021-2025]. All rights reserved.
#File name: G100
#Author: ZouZhimin
#Version: 1
#Description: Manages Vastbase-G100 as Linux-HA resource 
#Date: 2022.10.27
#Others: For Vastbase-G100 2.2
#Function List: 
#1.anything_status(): report whether the database is running
#2.anything_monitor():report whether the database seems to be working
#3.anything_start():start the database
#4.anything_stop():stop the database

#History: 
#1. Date: 2022.10.27 Author: ZouZhimin Modification:add G100 ocf script 

#*************************************************

# fix Vastbase-G100 2.2
# Author:	Kylin
#
#	usage: $0 {start|stop|status|monitor|validate-all|meta-data}
#  OCF parameters:
#
##########################################################################
# Initialization:
#OCF_ROOT="/usr/lib/ocf"
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
#########################################################################

name="G100"

meta_data() {
	cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="$name">
<version>1.0</version>

<longdesc lang="en">
This script manages $name
</longdesc>
<shortdesc lang="en">OCF Resource Agent compliant $name.</shortdesc>

<parameters>

<parameter name="VASTBASE_HOME" unique="0" required="1">
<longdesc lang="en">
Directory containing vastbase
</longdesc>
<shortdesc lang="en">vastbase installdir</shortdesc>
<content type="string" default="/home/vastbase/local/vastbase" />
</parameter>

</parameters>

<actions>
<action name="start"   timeout="50" />
<action name="stop"    timeout="60" />
<action name="monitor" depth="10"  timeout="15s" interval="30s" start-delay="1s" />
<action name="validate-all"  timeout="30s" />
<action name="meta-data"  timeout="5s" />
</actions>
</resource-agent>
END
}

anything_status() 
{
	ret0=`ps -ef |grep -v grep |grep "$VASTBASE_HOME/bin/vastbase"|wc -l`
	if [ 1  -a $ret0 -gt 0 ]; then
		return $OCF_SUCCESS;
	elif [ 1  -a $ret0 -eq 0 ]; then
		return $OCF_NOT_RUNNING;
	else
		return $OCF_ERR_GENERIC;
	fi
}

anything_start()
{
    anything_status
    ret=$?
    if [ $ret -eq 0 ]; then
      ocf_log info "$name agent already running"
      return $OCF_SUCCESS;
    else
       su - vastbase -c "vb_ctl start"
       anything_monitor
       ret1=$?
       if [ $ret1 -eq 0 ]; then
          ocf_log info "$name agent start ok"
          return $OCF_SUCCESS;
       else
          ocf_log info "$name agent start failed"
          return $OCF_ERR_GENERIC;
       fi
  fi
}


anything_stop()
{
    anything_status
    ret=$?
    if [ $ret -eq 7 ]; then
    #   ocf_log info $ret
    ocf_log debug "vastbase server already stopped"
    return $OCF_SUCCESS
    else
    su - vastbase -c "vb_ctl stop"
    fi
    
    anything_monitor
    ret=$?
    if [ $ret -eq 7 ]; then
        ocf_log info "$name agent stop ok"
        return $OCF_SUCCESS;
    else
        ocf_log info "$name agent stop failed"
        return $OCF_ERR_GENERIC;
    fi
 

}

anything_monitor()
{
  anything_status
  ret=$?
  #ocf_log info $ret
  if [ $ret -eq 0 ]; then
     ocf_log info " $name is running!"
     return $OCF_SUCCESS
  elif [ $ret -eq 7 ]; then
     ocf_log info "$name is not running" 
     return $OCF_NOT_RUNNING
  else
    ocf_log info "$name is failed"
    return $OCF_ERR_GENERIC
  fi
}

anything_validate()
{
 return $OCF_SUCCESS
}

case $1 in
    start)	anything_start
		;;
	
    stop)	anything_stop
    		;;
		
    status)	anything_status
    		;;
		
    monitor)	anything_monitor
    		;;
		
    validate-all)	anything_validate
    			exit  $OCF_SUCCESS
    			;;
			
    meta-data)	meta_data
                exit  $OCF_SUCCESS
  		;;
    *)
                ocf_log err "$0 was called with unsupported arguments: $*"
                exit $OCF_ERR_UNIMPLEMENTED
                ;;
esac
exit $?
