#!/bin/sh # # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Further, this software is distributed without any warranty that it is # free of the rightful claim of any third person regarding infringement # or the like. Any license provided herein, whether implied or # otherwise, applies only to this software file. Patent licenses, if # any, provided herein do not apply to combinations of this program with # other software, or any other product whatsoever. # # You should have received a copy of the GNU General Public License # along with this program; if not, write the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. # ####################################################################### # Initialization: . ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs #. /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs ####################################################################### meta_data() { cat < 1.0 This is a L7vsd Resource Agent. L7vsd resource agent END } ####################################################################### l7vsd_usage() { cat < /dev/null 2>&1 RET=$? if [ $RET -ne 0 ]; then MSG="l7vsd start error!" outputLog err ${OCF_ERR_GENERIC} $MSG return $OCF_ERR_GENERIC fi l7vsd_status if [ $? -eq $OCF_SUCCESS ]; then # l7vsd is running ocf_log info "l7vsd starts." return $OCF_SUCCSESS fi fi MSG="l7vsd does not work. (ps=$RET) " outputLog err ${OCF_ERR_GENERIC} ${MSG} return $OCF_ERR_GENERIC } ############################### # Resource stop Method ############################### l7vsd_stop() { ocf_log info "l7vsd stopping ..." isRunning; RET=$? if [ $RET -eq 0 ]; then ocf_log info "l7vsd stopped." return $OCF_SUCCESS fi /etc/init.d/l7vsd stop > /dev/null 2>&1 count=0 while [ $count -le 10 ] do isRunning; RET=$? if [ $RET -eq 0 ]; then ocf_log info "l7vsd stopped." return $OCF_SUCCESS fi count=`expr $count + 1` sleep 1 done l7vsd_pkill RET=$? return $RET } ############################### # Logging Method ############################### outputLog(){ MODE=$1 shift case $MODE in info) RET=$1; shift; ocf_log $MODE "[$0 ${__OCF_ACTION}] OK;return=$RET" "$@";; err) RET=$1; shift; ocf_log $MODE "[$0 ${__OCF_ACTION}] NG;return=$RET" "$@";; esac } ############################### # kill process ############################### l7vsd_pkill(){ pkill -9 -f "/usr/sbin/l7vsd" ocf_log info "kill l7vsd process!" while true do sleep 1 isRunning; RET=$? if [ $RET -eq 0 ]; then # stop OK ocf_log info "l7vsd process stopped!" return $OCF_SUCCESS fi done } ############################### # Resource Running Check Method ############################### isRunning(){ RET=0 RET=`ps -ef | grep /usr/sbin/l7vsd | grep -v grep | wc -l` return $RET } ############################### # Get Resource Status Method ############################### l7vsd_status(){ /etc/init.d/l7vsd status > /dev/null 2>&1 RET=$? if [ $RET -eq 0 ]; then return $OCF_SUCCESS else MSG="l7vsd status ERROR!: $RET" outputLog err ${OCF_ERR_GENERIC} ${MSG} return $OCF_ERR_GENERIC fi } ############################### # Get Resource Monitor Method ############################### l7vsd_monitor() { isRunning; RET=$? if [ $RET -eq 1 ]; then # l7vsd is running l7vsd_status if [ $? -eq $OCF_SUCCESS ]; then # status OK return $OCF_SUCCESS else break fi elif [ $RET -eq 0 ]; then MSG="l7vsd is not running." outputLog err ${OCF_NOT_RUNNING} ${MSG} return $OCF_NOT_RUNNING fi MSG="l7vsd does not work. (ps=$RET) " outputLog err ${OCF_ERR_GENERIC} ${MSG} return $OCF_ERR_GENERIC } case $__OCF_ACTION in meta-data) meta_data exit $OCF_SUCCESS ;; start) l7vsd_start;; stop) l7vsd_stop;; monitor) l7vsd_monitor;; usage|help) l7vsd_usage exit $OCF_SUCCESS ;; *) l7vsd_usage exit $OCF_ERR_UNIMPLEMENTED ;; esac rc=$? ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc" exit $rc