OSDN Git Service

Update Heartbeat RA and cib.xml examples.
[ultramonkey-l7/ultramonkey-l7-v2.git] / doc / heartbeat-ra / L7vsd
index efe75f9..5a68c26 100644 (file)
@@ -40,16 +40,8 @@ This is a L7vsd Resource Agent.
 </longdesc>
 <shortdesc lang="en">L7vsd resource agent</shortdesc>
 
-<parameters>
-<parameter name="state" unique="1">
-<longdesc lang="en">
-Location to store the resource state in.
-</longdesc>
-<shortdesc lang="en">State file</shortdesc>
-<content type="string" default="" />
-</parameter>
-
-</parameters>
+<parameter/>
+<parameters/>
 
 <actions>
 <action name="start"        timeout="60" />
@@ -67,30 +59,66 @@ l7vsd_usage() {
        cat <<END
 usage: $0 {start|stop|monitor|meta-data}
 
-Expects to have a fully populated OCF RA-compliant environment set.
 END
 }
 
 ###############################
-# Resource start Method (dummy)
+# Resource start Method
 ###############################
 l7vsd_start() {
-       l7vsd_monitor
-       RET=$?
-       if [[ $RET -eq $OCF_SUCCESS || $RET -eq $OCF_NOT_RUNNING ]];then
-               touch ${OCF_RESKEY_state}
-               return $OCF_SUCCESS
-       else 
-               return $OCF_ERR_GENERIC
-       fi
+        ocf_log info "l7vsd is starting ..."
+        l7vsd_monitor
+        RET=$?
+        if [ $RET -eq $OCF_SUCCESS ]; then
+                ocf_log info "l7vsd is already running."
+                return $OCF_SUCCESS
+        elif [ $RET -eq $OCF_NOT_RUNNING ]; then
+                /etc/init.d/l7vsd start > /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() {
-    rm ${OCF_RESKEY_state}
-    return $OCF_SUCCESS
+        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
 }
 
 ###############################
@@ -108,11 +136,30 @@ outputLog(){
 }
 
 ###############################
+# 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 l7vsd | grep -v grep | grep -v less | grep -v vi | wc -l`
+       RET=`ps -ef | grep /usr/sbin/l7vsd | grep -v grep | wc -l`
        return $RET
 }
 
@@ -121,7 +168,6 @@ isRunning(){
 ###############################
 l7vsd_status(){
        /etc/init.d/l7vsd status > /dev/null 2>&1
-       #/usr/sbin/l7vsadm -l > /dev/null 2>&1
        RET=$?
        if [ $RET -eq 0 ]; then
                return $OCF_SUCCESS
@@ -136,11 +182,6 @@ l7vsd_status(){
 # Get Resource Monitor Method
 ###############################
 l7vsd_monitor() {
-       if [ -f ${OCF_RESKEY_state} ]; then
-               break
-       else
-               return $OCF_NOT_RUNNING
-       fi
        isRunning;
        RET=$?
        if [ $RET -eq 1 ]; then
@@ -162,8 +203,6 @@ l7vsd_monitor() {
        return $OCF_ERR_GENERIC
 }
 
-: ${OCF_RESKEY_state=${HA_RSCTMP}/L7vsd-${OCF_RESOURCE_INSTANCE}.state}
-
 case $__OCF_ACTION in
 meta-data)     meta_data
                exit $OCF_SUCCESS ;;