cluster: STABLE3 - resource-agents: new agent for tomcat 6

Marek Grác marx at fedoraproject.org
Wed Jul 14 07:52:30 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=f594d6ccba008bf90b555cf84ac69b4e28156b22
Commit:        f594d6ccba008bf90b555cf84ac69b4e28156b22
Parent:        87863e2c83b8cc3f6d7cb6b657202e04bd2df40f
Author:        Marek 'marx' Grac <mgrac at redhat.com>
AuthorDate:    Wed Jul 14 08:47:41 2010 +0200
Committer:     Marek 'marx' Grac <mgrac at redhat.com>
CommitterDate: Wed Jul 14 08:47:41 2010 +0200

resource-agents: new agent for tomcat 6

Resolves: rhbz#591003
---
 rgmanager/src/resources/tomcat-6.metadata        |   74 +++++++
 rgmanager/src/resources/tomcat-6.sh              |  222 ++++++++++++++++++++++
 rgmanager/src/resources/utils/config-utils.sh.in |    2 +-
 3 files changed, 297 insertions(+), 1 deletions(-)

diff --git a/rgmanager/src/resources/tomcat-6.metadata b/rgmanager/src/resources/tomcat-6.metadata
new file mode 100644
index 0000000..493e0d5
--- /dev/null
+++ b/rgmanager/src/resources/tomcat-6.metadata
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<resource-agent version="rgmanager 2.0" name="tomcat-6">
+    <version>1.0</version>
+
+    <longdesc lang="en">
+        This defines an instance of Tomcat server
+    </longdesc>
+    <shortdesc lang="en">
+        Defines a Tomcat server
+    </shortdesc>
+
+    <parameters>
+        <parameter name="name" primary="1">
+	    <longdesc lang="en">
+	        Specifies a service name for logging and other purposes
+	    </longdesc>
+            <shortdesc lang="en">
+                Name
+            </shortdesc>
+	    <content type="string"/>
+        </parameter>
+
+        <parameter name="config_file">
+            <longdesc lang="en">
+                Define absolute path to configuration file
+            </longdesc>
+            <shortdesc lang="en">
+                Config File
+            </shortdesc>
+	    <content type="string" default="/etc/tomcat6/tomcat6.conf"/>
+        </parameter>
+
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="integer" default="30" />
+	</parameter>
+
+        <parameter name="service_name" inherit="service%name">
+            <longdesc lang="en">
+	    	Inherit the service name.  We need to know
+		the service name in order to determine file
+		systems and IPs for this service.
+            </longdesc>
+            <shortdesc lang="en">
+	    	Inherit the service name.
+            </shortdesc>
+	    <content type="string"/>
+        </parameter>
+    </parameters>
+
+    <actions>
+        <action name="start" timeout="0"/>
+	<action name="stop" timeout="0"/>
+
+	<!-- Checks to see if it''s mounted in the right place -->
+	<action name="status" interval="1m" timeout="10"/>
+	<action name="monitor" interval="1m" timeout="10"/>
+
+	<!-- Checks to see if we can read from the mountpoint -->
+	<action name="status" depth="10" timeout="30" interval="5m"/>
+	<action name="monitor" depth="10" timeout="30" interval="5m"/>
+
+	<action name="meta-data" timeout="0"/>
+	<action name="validate-all" timeout="0"/>
+    </actions>
+
+    <special tag="rgmanager">
+    </special>
+</resource-agent>
diff --git a/rgmanager/src/resources/tomcat-6.sh b/rgmanager/src/resources/tomcat-6.sh
new file mode 100644
index 0000000..3371ea5
--- /dev/null
+++ b/rgmanager/src/resources/tomcat-6.sh
@@ -0,0 +1,222 @@
+#!/bin/bash
+
+export LC_ALL=C
+export LANG=C
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+
+. $(dirname $0)/ocf-shellfuncs
+. $(dirname $0)/utils/config-utils.sh
+. $(dirname $0)/utils/messages.sh
+. $(dirname $0)/utils/ra-skelet.sh
+
+declare TOMCAT_pid_file="`generate_name_for_pid_file`"
+declare TOMCAT_conf_dir="`generate_name_for_conf_dir`/conf"
+declare TOMCAT_gen_config_file="$TOMCAT_conf_dir/server.xml"
+declare TOMCAT_gen_catalina_base="`generate_name_for_conf_dir`"
+
+declare CATALINA_HOME
+declare CATALINA_BASE
+declare CATALINA_TMPDIR
+declare CLASSPATH
+declare TOMCAT_USER
+##
+
+verify_all()
+{
+	clog_service_verify $CLOG_INIT
+
+	if [ -z "$OCF_RESKEY_name" ]; then
+		clog_service_verify $CLOG_FAILED "Invalid Name Of Service"
+		return $OCF_ERR_ARGS
+	fi
+
+	if [ -z "$OCF_RESKEY_service_name" ]; then
+		clog_service_verify $CLOG_FAILED_NOT_CHILD
+		return $OCF_ERR_ARGS
+	fi
+
+	if [ -z "$OCF_RESKEY_config_file" ]; then
+		clog_check_file_exist $CLOG_FAILED_INVALID "$OCF_RESKEY_config_file"
+		clog_service_verify $CLOG_FAILED
+		return $OCF_ERR_ARGS
+	fi
+
+	if [ ! -r "$OCF_RESKEY_config_file" ]; then
+		clog_check_file_exist $CLOG_FAILED_NOT_READABLE $OCF_RESKEY_config_file
+		clog_service_verify $CLOG_FAILED
+		return $OCF_ERR_ARGS
+	fi
+
+	. "$OCF_RESKEY_config_file"
+
+	if [ $? -ne 0 ]; then
+		clog_service_verify $CLOG_FAILED "Error In The File \"$OCF_RESKEY_config_file\""
+		return $OCF_ERR_ARGS
+	fi 
+
+	if [ -z "$CATALINA_HOME" ]; then
+		clog_service_verify $CLOG_FAILED "CATALINA_HOME Not Specified In ${OCF_RESKEY_config_file}"
+		return $OCF_ERR_ARGS;
+	fi	
+
+	if [ ! -d "$CATALINA_HOME" ]; then
+		clog_service_verify $CLOG_FAILED "CATALINA_HOME Does Not Exist"
+		return $OCF_ERR_ARGS;
+	fi
+
+	if [ -z "$CATALINA_TMPDIR" ]; then
+		clog_service_verify $CLOG_FAILED "CATALINA_TMPDIR Not Specified In ${OCF_RESKEY_config_file}"
+		return $OCF_ERR_ARGS;
+	fi	
+
+	if [ ! -d "$CATALINA_TMPDIR" ]; then
+		clog_service_verify $CLOG_FAILED "CATALINA_TMPDIR Does Not Exist"
+		return $OCF_ERR_ARGS;
+	fi
+
+	if [ -z "$TOMCAT_USER" ]; then
+		clog_service_verify $CLOG_FAILED "TOMCAT_USER Does Not Exist"
+		return $OCF_ERR_ARGS;
+	fi
+
+	clog_service_verify $CLOG_SUCCEED
+		
+	return 0
+}
+
+generate_config_file()
+{
+	declare original_file="$1"
+	declare generated_file="$2"
+	declare ip_addresses="$3"
+
+	if [ -f "$generated_file" ]; then
+		sha1_verify "$generated_file"
+		if [ $? -ne 0 ]; then
+			clog_check_sha1 $CLOG_FAILED
+			return 0
+		fi
+	fi	
+
+	clog_generate_config $CLOG_INIT "$original_file" "$generated_file"
+
+	$(dirname $0)/utils/tomcat-parse-config.pl $ip_addresses < "$original_file" > "$generated_file"
+
+        sha1_addToFile "$generated_file"
+	clog_generate_config $CLOG_SUCCEED "$original_file" "$generated_file"
+               
+	return 0;
+}
+
+start()
+{
+	clog_service_start $CLOG_INIT
+
+	create_pid_directory
+	create_conf_directory "$TOMCAT_conf_dir"
+	check_pid_file "$TOMCAT_pid_file"
+
+	if [ $? -ne 0 ]; then
+		clog_check_pid $CLOG_FAILED "$TOMCAT_pid_file"
+		clog_service_start $CLOG_FAILED
+		return $OCF_ERR_GENERIC
+	fi
+	clog_looking_for $CLOG_INIT "IP Addresses"
+
+        get_service_ip_keys "$OCF_RESKEY_service_name"
+        ip_addresses=`build_ip_list`
+
+	if [ -z "$ip_addresses" ]; then
+		clog_looking_for $CLOG_FAILED_NOT_FOUND "IP Addresses"
+		return $OCF_ERR_GENERIC
+	fi
+	
+	clog_looking_for $CLOG_SUCCEED "IP Addresses"
+
+	. "$OCF_RESKEY_config_file"
+
+	generate_config_file "$CATALINA_BASE/conf/server.xml" "$TOMCAT_gen_config_file" "$ip_addresses"
+	rm -f "$TOMCAT_gen_catalina_base/conf/tomcat6.conf"
+	( cat $OCF_RESKEY_config_file | grep -v 'CATALINA_PID=' | grep -v 'CATALINA_BASE='; echo CATALINA_BASE="$TOMCAT_gen_catalina_base"; echo CATALINA_PID="$TOMCAT_pid_file") > "$TOMCAT_gen_catalina_base/conf/tomcat6.conf" 
+	ln -s "$CATALINA_BASE"/* "$TOMCAT_gen_catalina_base" &> /dev/null
+	ln -s "$CATALINA_BASE"/conf/* "$TOMCAT_gen_catalina_base"/conf &> /dev/null
+	
+	export TOMCAT_CFG="$TOMCAT_gen_catalina_base/conf/tomcat6.conf"
+	/usr/sbin/tomcat6 start
+
+	if [ $? -ne 0 ]; then
+		clog_service_start $CLOG_FAILED
+		return $OCF_ERR_GENERIC
+	fi
+
+	clog_service_start $CLOG_SUCCEED
+
+	return 0;
+}
+
+stop()
+{
+	clog_service_stop $CLOG_INIT
+
+	stop_generic "$TOMCAT_pid_file" "$OCF_RESKEY_shutdown_wait"
+	
+	if [ $? -ne 0 ]; then
+		clog_service_stop $CLOG_FAILED
+		return $OCF_ERR_GENERIC
+	fi
+
+        if [ -e "$TOMCAT_pid_file" ]; then
+		rm -f "$TOMCAT_pid_file"
+	fi
+                                
+	clog_service_stop $CLOG_SUCCEED
+	return 0;
+}
+
+status()
+{
+	clog_service_status $CLOG_INIT
+
+	status_check_pid "$TOMCAT_pid_file"
+	if [ $? -ne 0 ]; then
+		clog_service_status $CLOG_FAILED "$TOMCAT_pid_file"
+		return $OCF_ERR_GENERIC
+	fi
+
+	clog_service_status $CLOG_SUCCEED
+	return 0
+}
+
+case $1 in
+	meta-data)
+		cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
+		exit 0
+		;;
+	validate-all)
+		verify_all
+		exit $?
+		;;
+	start)
+		verify_all && start
+		exit $?
+		;;
+	stop)
+		verify_all && stop
+		exit $?
+		;;
+	status|monitor)
+		verify_all
+		status
+		exit $?
+		;;
+	restart)
+		verify_all
+		stop
+		start
+		exit $?
+		;;
+	*)
+		echo "Usage: $0 {start|stop|status|monitor|restart|meta-data|validate-all}"
+		exit $OCF_ERR_UNIMPLEMENTED
+		;;
+esac
diff --git a/rgmanager/src/resources/utils/config-utils.sh.in b/rgmanager/src/resources/utils/config-utils.sh.in
index 1d343ac..05b04fa 100644
--- a/rgmanager/src/resources/utils/config-utils.sh.in
+++ b/rgmanager/src/resources/utils/config-utils.sh.in
@@ -37,7 +37,7 @@ sha1_verify()
 	sha1_new=`cat $oldFile | grep -v "# rgmanager-sha1" | sha1sum | sed 's/^\([a-z0-9]\+\) .*$/\1/'`
 	sha1_old=`tail -n 1 $oldFile | sed 's/^# rgmanager-sha1 \(.*\)$/\1/' | sed 's/^\([a-z0-9]\+\) .*$/\1/'`
 
-	if [ $sha1_new = $sha1_old ]; then
+	if [ "$sha1_new" = "$sha1_old" ]; then
 	        ocf_log debug "Checking: SHA1 checksum > succeed"
 		return 0;
 	else


More information about the cluster-commits mailing list