#!/bin/bash
#
# Sybase Availability Agent for Red Hat Cluster v15.0.2
# Copyright (C) - 2007
# Sybase, Inc. All rights reserved.
#
# Sybase Availability Agent for Red Hat Cluster v15.0.2 is licensed
# under the GNU General Public License Version 2.
#
# Author(s):
#    Jian-ping Hui <jphui@sybase.com>
#
# Description: Service script for starting/stopping/monitoring \
#              Sybase Adaptive Server on: \
#                            Red Hat Enterprise Linux 7 ES \
#                            Red Hat Enterprise Linux 7 AS
#
# NOTES:
#
# (1) Before running this script, we assume that user has installed
#     Sybase ASE 15.0.2 or higher version on the machine. Please
#     customize your configuration in /etc/cluster/cluster.conf according
#     to your actual environment. We assume the following files exist before
#     you start the service:
#         /$sybase_home/SYBASE.sh
#         /$sybase_home/$sybase_ase/install/RUN_$server_name
#
# (2) You can customize the interval value in the meta-data section if needed:
#                <action name="start" timeout="300s" />
#                <action name="stop" timeout="300s" />
#
#                <!-- Checks to see if it''s mounted in the right place -->
#                <action name="status"  interval="30s" timeout="100s" />
#                <action name="monitor" interval="30s" timeout="100s" />
#
#                <!--Checks to see if we can read from the mountpoint -->
#                <action name="status" depth="10" timeout="100s" interval="120s" />
#                <action name="monitor" depth="10" timeout="100s" interval="120s" />
#
#                <action name="meta-data" timeout="5s" />
#                <action name="validate-all" timeout="5s" />
#     The timeout value is not supported by Redhat in RHCS5.0.
#

#######################################################################
# Initialization:

if [ -f /etc/init.d/functions ]; then
	. /etc/init.d/functions
fi
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs

#######################################################################

# Default timeouts when we aren't using the rgmanager wrapper
if ! ocf_is_true "$OCF_RESKEY_is_rgmanager_wrapper"; then
	if [ -z "$OCF_RESKEY_CRM_meta_timeout" ]; then
		case $1 in
			start|stop) OCF_RESKEY_CRM_meta_timeout=300000 ;;
			*) OCF_RESKEY_CRM_meta_timeout=100000 ;;
		esac
	fi
	default_timeout=$(((${OCF_RESKEY_CRM_meta_timeout}/1000) - 5))
	default_force_stop_timeout=$(((${OCF_RESKEY_CRM_meta_timeout}/1000) - 5))
	: ${OCF_RESKEY_shutdown_timeout=${default_force_stop_timeout}}
	: ${OCF_RESKEY_deep_probe_timeout=${default_timeout}}
	: ${OCF_RESKEY_start_timeout=${default_timeout}}
fi

sybase_user_default="sybase"
sybase_home_default="detect"
ase_default="detect"
ocs_default="detect"

: ${OCF_RESKEY_sybase_user=${sybase_user_default}}
: ${OCF_RESKEY_sybase_ase=${ase_default}}
: ${OCF_RESKEY_sybase_ocs=${ocs_default}}
: ${OCF_RESKEY_sybase_home=${sybase_home_default}}

if [ "$__OCF_ACTION" != "meta-data" ]; then
	if [ "$OCF_RESKEY_sybase_home" = "detect" ]; then
		if [ -d "/opt/sap" ]; then
			OCF_RESKEY_sybase_home="/opt/sap"
		elif [ -d "/opt/sybase" ]; then
			OCF_RESKEY_sybase_home="/opt/sybase"
		else
			ocf_log err "sybaseASE: Unable to detect 'sybase_home'."
			exit $OCF_ERR_ARGS
		fi
	fi

	sybase_env="$OCF_RESKEY_sybase_home/SYBASE.env"

	if [ "$OCF_RESKEY_sybase_ase" = "detect" ]; then
		if [ -f "$sybase_env" ]; then
			OCF_RESKEY_sybase_ase=$(grep "SYBASE_ASE" "$sybase_env" | cut -d= -f2)
		else
			ocf_log err "sybaseASE: Unable to detect 'sybase_ase'."
			exit $OCF_ERR_ARGS
		fi
	fi

	if [ "$OCF_RESKEY_sybase_ocs" = "detect" ]; then
		if [ -f "$sybase_env" ]; then
			OCF_RESKEY_sybase_ocs=$(grep "SYBASE_OCS" "$sybase_env" | cut -d= -f2)
		else
			ocf_log err "sybaseASE: Unable to detect 'sybase_ocs'."
			exit $OCF_ERR_ARGS
		fi
	fi
fi


interfaces_file_default="${OCF_RESKEY_sybase_home}/interfaces"
: ${OCF_RESKEY_interfaces_file=${interfaces_file_default}}

if [ $__OCF_ACTION != "meta-data" ]; then
	logfile_default="$OCF_RESKEY_sybase_home/$OCF_RESKEY_sybase_ase/install/$OCF_RESKEY_server_name.log"
else
	logfile_default="detect"
fi
: ${OCF_RESKEY_logfile=${logfile_default}}

export LD_POINTER_GUARD=0

#######################################################################################
# Declare some variables we will use in the script.                                   #
#######################################################################################
declare login_string=""
declare RUNSERVER_SCRIPT=$OCF_RESKEY_sybase_home/$OCF_RESKEY_sybase_ase/install/RUN_$OCF_RESKEY_server_name
declare CONSOLE_LOG="$OCF_RESKEY_logfile"

##################################################################################################
# This function will be called by Pacemaker to get the meta data of resource agent "sybaseASE".  #
##################################################################################################
meta_data()
{
	cat <<EOT
<?xml version="1.0" ?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="sybaseASE" version="1.0">
	<version>1.0</version>

	<longdesc lang="en">
		Sybase ASE Failover Instance
	</longdesc>
	<shortdesc lang="en">
		Sybase ASE Failover Instance
	</shortdesc>

	<parameters>
		<parameter name="sybase_home">
			<longdesc lang="en">
				The home directory of sybase products
			</longdesc>
			<shortdesc lang="en">
				SYBASE home directory
			</shortdesc>
			<content type="string" default="${sybase_home_default}"/>
		</parameter>

		<parameter name="sybase_ase">
			<longdesc lang="en">
				The directory name under sybase_home where ASE products are installed
			</longdesc>
			<shortdesc lang="en">
				SYBASE_ASE directory name
			</shortdesc>
			<content type="string" default="$ase_default" />
		</parameter>

		<parameter name="sybase_ocs">
			<longdesc lang="en">
				The directory name under sybase_home where OCS products are installed, i.e. ASE-15_0
			</longdesc>
			<shortdesc lang="en">
				SYBASE_OCS directory name
			</shortdesc>
			<content type="string" default="${ocs_default}" />
		</parameter>

		<parameter name="server_name" unique="1" required="1">
			<longdesc lang="en">
				The ASE server name which is configured for the HA service
			</longdesc>
			<shortdesc lang="en">
				ASE server name
			</shortdesc>
			<content type="string" />
		</parameter>

		<parameter name="interfaces_file">
			<longdesc lang="en">
				The full path of interfaces file which is used to start/access the ASE server
			</longdesc>
			<shortdesc lang="en">
				Interfaces file
			</shortdesc>
			<content type="string" default="$interfaces_file_default"/>
		</parameter>

		<parameter name="sybase_user">
			<longdesc lang="en">
				The user who can run ASE server
			</longdesc>
			<shortdesc lang="en">
				Sybase user
			</shortdesc>
			<content type="string" default="$sybase_user_default" />
		</parameter>

		<parameter name="db_user" required="1">
			<longdesc lang="en">
				The database user required to login to isql.
			</longdesc>
			<shortdesc lang="en">
				Sybase user
			</shortdesc>
			<content type="string"/>
		</parameter>

		<parameter name="db_passwd">
			<longdesc lang="en">
				The database user's password required to login to isql.
			</longdesc>
			<shortdesc lang="en">
				Sybase user
			</shortdesc>
			<content type="string"/>
		</parameter>

		<parameter name="logfile">
			<longdesc lang="en">
				Logfile
			</longdesc>
			<shortdesc lang="en">
				Logfile
			</shortdesc>
			<content type="string" default="$logfile_default" />
		</parameter>

	</parameters>

	<actions>
		<actio                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   