[Cluster-devel] cluster/rgmanager/src/resources apache.sh mysq ...

mgrac at sourceware.org mgrac at sourceware.org
Mon Sep 18 13:48:09 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	mgrac at sourceware.org	2006-09-18 13:48:07

Modified files:
	rgmanager/src/resources: apache.sh mysql.sh openldap.sh 
	rgmanager/src/resources/utils: config-utils.sh ra-skelet.sh 

Log message:
	PID files are stored in common directory. Name of the PID file is generated from the OCF_RESOURCE_INSTANCE. Resource agents for Apache, MySQL and OpenLDAP are updated.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/apache.sh.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/mysql.sh.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/openldap.sh.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/config-utils.sh.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/ra-skelet.sh.diff?cvsroot=cluster&r1=1.1&r2=1.2

--- cluster/rgmanager/src/resources/apache.sh	2006/09/14 13:53:50	1.2
+++ cluster/rgmanager/src/resources/apache.sh	2006/09/18 13:48:07	1.3
@@ -27,23 +27,21 @@
 export LANG=C
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
-declare APACHE_HTTPD=/usr/sbin/httpd
-declare APACHE_genConfig="/tmp/httpd.$OCF_RESKEY_name"
-declare APACHE_pid_file
-declare APACHE_serverConfigFile
-declare APACHE_defaultPidFile=run/httpd.pid
-
 . $(dirname $0)/ocf-shellfuncs
 . $(dirname $0)/utils/config-utils.sh
 . $(dirname $0)/utils/messages.sh
 . $(dirname $0)/utils/ra-skelet.sh
 
+declare APACHE_HTTPD=/usr/sbin/httpd
+declare APACHE_genConfig="/tmp/httpd.$OCF_RESKEY_name"
+declare APACHE_serverConfigFile
+declare APACHE_pid_file="`generate_name_for_pid_file`"
+
 declare APACHE_parseConfig=$(dirname $0)/utils/httpd-parse-config.pl
 
 apache_pidFile()
 {
 	declare tmpFile="/tmp/httpd.$OCF_RESKEY_name.$$"
-	declare CFG_pidFile
 	declare CFG_serverRoot
 
 	if [ -f "$APACHE_genConfig" ]; then
@@ -58,25 +56,13 @@
 		generate_configFile "$APACHE_serverConfigFile" "$tmpFile"
 	fi	
 
-	CFG_pidFile=`grep -e '^PidFile' "$tmpFile" | head -n 1 | \
-		sed 's/^PidFile "\(.*\)"/\1/;s/^PidFile \(.*\)/\1/'`
 	CFG_serverRoot=`grep -e '^ServerRoot' "$tmpFile" | head -n 1 | \
 		sed 's/^ServerRoot "\(.*\)"/\1/;s/^ServerRoot \(.*\)/\1/'`
 
-	if [ -z "$CFG_pidFile" ]; then
-		CFG_pidFile="$APACHE_defaultPidFile"
-	fi
-
 	if [ -z "$CFG_serverRoot" ]; then
 		CFG_serverRoot="$OCF_RESKEY_serverRoot"
 	fi
 
-	if [[ "$CFG_pidFile" =~ '^/' ]]; then
-		APACHE_pid_file="$CFG_pidFile"
-	else 
-		APACHE_pid_file="$CFG_serverRoot/$CFG_pidFile"
-	fi
-
 	rm -f "$tmpFile"
 
 	return;
@@ -159,7 +145,6 @@
 	cat >> "$generatedConfigFile" << EOT
 # From a cluster perspective, the key fields are:
 #     Listen - must be set to service floating IP address.
-#     PidFile - path to the file where PID of running application is stored
 #     ServerRoot - path to the ServerRoot (initial value is set in service conf)
 #
 
@@ -177,7 +162,10 @@
 	done;
 	IFS="$IFS_old"
 
-	cat "$originalConfigFile" | sed 's/^Listen/### Listen/;s/^Port/### Port/' | \
+	echo "PidFile \"$APACHE_pid_file\"" >> "$generatedConfigFile";
+	echo >> "$generatedConfigFile"
+
+	cat "$originalConfigFile" | sed 's/^Listen/### Listen/;s/^Port/### Port/;s/^PidFile/### PidFile/' | \
 	"$APACHE_parseConfig" -D"$OCF_RESKEY_name" >> "$generatedConfigFile"
 
 	sha1_addToFile "$generatedConfigFile"
@@ -191,6 +179,8 @@
 
 	clog_service_start $CLOG_INIT	
 
+	create_pid_directory
+
 	if [ -e "$APACHE_pid_file" ]; then
 		clog_check_pid $CLOG_FAILED "$APACHE_pid_file"
 		clog_service_start $CLOG_FAILED
@@ -237,21 +227,14 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	if [ ! -e "$APACHE_pid_file" ]; then
-		clog_check_file_exist $CLOG_FAILED_NOT_FOUND "$APACHE_pid_file"
-		clog_service_stop $CLOG_FAILED
-		return $OCF_ERR_GENERIC
-	fi
-
-	"$APACHE_HTTPD" -k stop
-
+	stop_generic "$APACHE_pid_file"
+	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
 		return $OCF_ERR_GENERIC
-	else
-		clog_service_stop $CLOG_SUCCEED
 	fi
 	
+	clog_service_stop $CLOG_SUCCEED
 	return 0;
 }
 
@@ -276,7 +259,7 @@
 		
 case $1 in
 	meta-data)
-		cat $(dirname $0)/apache.metadata
+		cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
 		exit 0
 		;;
 	verify-all)
--- cluster/rgmanager/src/resources/mysql.sh	2006/09/14 13:53:50	1.3
+++ cluster/rgmanager/src/resources/mysql.sh	2006/09/18 13:48:07	1.4
@@ -27,16 +27,16 @@
 export LANG=C
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
-declare MYSQL_MYSQLD=/usr/bin/mysqld_safe
-declare MYSQL_ipAddress
-declare MYSQL_pid_file="/var/run/mysqld/mysql.$OCF_RESKEY_name.pid"
-declare MYSQL_timeout=30
-
 . $(dirname $0)/ocf-shellfuncs
 . $(dirname $0)/utils/config-utils.sh
 . $(dirname $0)/utils/messages.sh
 . $(dirname $0)/utils/ra-skelet.sh
 
+declare MYSQL_MYSQLD=/usr/bin/mysqld_safe
+declare MYSQL_ipAddress
+declare MYSQL_pid_file="`generate_name_for_pid_file`"
+declare MYSQL_timeout=30
+
 verify_all()
 {
 	clog_service_verify $CLOG_INIT
@@ -73,6 +73,8 @@
 	
 	clog_service_start $CLOG_INIT
 
+	create_pid_directory
+
 	if [ -e "$MYSQL_pid_file" ]; then
 		clog_check_pid $CLOG_FAILED "$MYSQL_pid_file"
 		clog_service_start $CLOG_FAILED
@@ -136,21 +138,14 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	if [ ! -e "$MYSQL_pid_file" ]; then
-		clog_check_file_exist $CLOG_FAILED_NOT_FOUND "$MYSQL_pid_file"
-		clog_service_stop $CLOG_FAILED
-		return $OCF_ERR_GENERIC
-	fi
-
-	kill `cat "$MYSQL_pid_file"`
-
+	stop_generic "$MYSQL_pid_file"
+	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
 		return $OCF_ERR_GENERIC
-	else
-		clog_service_stop $CLOG_SUCCEED
 	fi
 	
+	clog_service_stop $CLOG_SUCCEED
 	return 0;
 }
 
@@ -170,7 +165,7 @@
 
 case $1 in
 	meta-data)
-		cat $(dirname $0)/mysql.metadata
+		cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
 		exit 0
 		;;
 	verify-all)
--- cluster/rgmanager/src/resources/openldap.sh	2006/09/14 13:53:50	1.2
+++ cluster/rgmanager/src/resources/openldap.sh	2006/09/18 13:48:07	1.3
@@ -27,15 +27,16 @@
 export LANG=C
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
-declare LDAP_SLAPD=/usr/sbin/slapd
-declare LDAP_pid_file=/var/run/slapd.pid
-declare LDAP_url_list
-
 . $(dirname $0)/ocf-shellfuncs
 . $(dirname $0)/utils/config-utils.sh
 . $(dirname $0)/utils/messages.sh
 . $(dirname $0)/utils/ra-skelet.sh
 
+declare LDAP_SLAPD=/usr/sbin/slapd
+declare LDAP_pid_file="`generate_name_for_pid_file`"
+declare LDAP_gen_config_file="/tmp/openldap.$OCF_RESKEY_name"
+declare LDAP_url_list
+
 verify_all()
 {
 	clog_service_verify $CLOG_INIT
@@ -88,6 +89,31 @@
 	echo $url_list
 }
 
+generate_config_file()
+{
+	declare original_file="$1"
+	declare generated_file="$2"
+
+	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"
+
+	generate_configTemplate "$generated_file" "$1"
+	echo "pidfile \"$LDAP_pid_file\"" >> $generated_file
+	echo >> $generated_file	
+	sed 's/^[[:space:]]*pidfile/### pidfile/i' < "$original_file" >> "$generated_file"
+	
+        sha1_addToFile "$generated_file"
+	clog_generate_config $CLOG_SUCCEED "$original_file" "$generated_file"
+               
+	return 0;
+}
 
 start()
 {
@@ -95,6 +121,8 @@
 	
 	clog_service_start $CLOG_INIT
 
+	create_pid_directory
+
 	if [ -e "$LDAP_pid_file" ]; then
 		clog_check_pid $CLOG_FAILED "$LDAP_pid_file"
 		clog_service_start $CLOG_FAILED
@@ -126,7 +154,9 @@
 		return $OCF_ERR_GENERIC
 	fi
 
-	$LDAP_SLAPD -f "$OCF_RESKEY_config_file" -n "$OCF_RESOURCE_INSTANCE" \
+	generate_config_file "$OCF_RESKEY_config_file" "$LDAP_gen_config_file"
+
+	$LDAP_SLAPD -f "$LDAP_gen_config_file" -n "$OCF_RESOURCE_INSTANCE" \
 		-h "$LDAP_url_list" $OCF_RESKEY_slapd_options
 
 	if [ $? -ne 0 ]; then
@@ -143,21 +173,14 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	if [ ! -e "$LDAP_pid_file" ]; then
-		clog_check_file_exist $CLOG_FAILED_NOT_FOUND "$LDAP_pid_file"
-		clog_service_stop $CLOG_FAILED
-		return $OCF_ERR_GENERIC
-	fi
-
-	kill `cat "$LDAP_pid_file"`
-
+	stop_generic "$LDAP_pid_file"
+	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
 		return $OCF_ERR_GENERIC
-	else
-		clog_service_stop $CLOG_SUCCEED
 	fi
 	
+	clog_service_stop $CLOG_SUCCEED
 	return 0;
 }
 
--- cluster/rgmanager/src/resources/utils/config-utils.sh	2006/08/31 13:52:21	1.1
+++ cluster/rgmanager/src/resources/utils/config-utils.sh	2006/09/18 13:48:07	1.2
@@ -19,6 +19,8 @@
 #  MA 02139, USA.
 #
 
+declare RA_COMMON_pid_dir=/var/run/cluster
+
 declare -i FAIL=-1
 declare -a ip_keys
 
@@ -214,4 +216,32 @@
         done
 
         echo $ipaddrs
+}
+
+generate_name_for_pid_file()
+{
+	declare filename=$(basename $0)
+	
+	echo "$RA_COMMON_pid_dir/$(basename $0 | sed 's/^\(.*\)\..*/\1/')/$OCF_RESOURCE_INSTANCE.pid"
+	
+	return 0;
+}
+
+create_pid_directory()
+{
+	declare program_name="$(basename $0 | sed 's/^\(.*\)\..*/\1/')"
+	declare dirname="$RA_COMMON_pid_dir/$program_name"
+
+	if [ -d "$dirname" ]; then
+		return 0;
+	fi
+	
+	chmod 711 "$RA_COMMON_pid_dir"
+	mkdir -p "$dirname"
+	
+	if [ "$program_name" = "mysql" ]; then
+		chown mysql.root "$dirname"
+	fi
+
+	return 0;
 }
\ No newline at end of file
--- cluster/rgmanager/src/resources/utils/ra-skelet.sh	2006/09/14 13:53:50	1.1
+++ cluster/rgmanager/src/resources/utils/ra-skelet.sh	2006/09/18 13:48:07	1.2
@@ -24,7 +24,7 @@
 #
 status_check_pid()
 {
-	declare pid_file=$1
+	declare pid_file="$1"
 
 	if [ -z "$pid_file" ]; then
 		clog_check_file_exist $CLOG_FAILED_INVALID "$pid_file"
@@ -42,3 +42,22 @@
 
 	return 0
 }
+
+stop_generic()
+{
+	declare pid_file="$1"
+
+	if [ ! -e "$pid_file" ]; then
+		clog_check_file_exist $CLOG_FAILED_NOT_FOUND "$pid_file"
+		clog_service_stop $CLOG_FAILED
+		return $OCF_ERR_GENERIC
+	fi
+
+	kill -TERM `cat "$pid_file"`
+
+	if [ $? -ne 0 ]; then
+		return $OCF_ERR_GENERIC
+	fi
+	
+	return 0;
+}




More information about the Cluster-devel mailing list