ports/139132: [maintainer-update] FreeBSDize Heartbeat Startup Script
Justin Head
ports at encarnate.com
Fri Sep 25 13:40:01 UTC 2009
>Number: 139132
>Category: ports
>Synopsis: [maintainer-update] FreeBSDize Heartbeat Startup Script
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Fri Sep 25 13:40:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Justin Head
>Release: 7.2-RELEASE-p3
>Organization:
Encarnate
>Environment:
FreeBSD xxx.encarnate.net 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #0: Mon Sep 7 15:59:04 CDT 2009 root at xxx.encarnate.net:/usr/obj/usr/src/sys/ENC amd64
>Description:
Removing the distributions rc.d script for a proper FreeBSD one.
>How-To-Repeat:
N/A.
>Fix:
Wrote a new one that is attached.
Patch contains changes:
- New file files/heartbeat.in
- Removed file files/patch-heartbeat-init.d-heartbeat.in
- Updated Makefile to copy it into place before build.
Patch attached with submission follows:
diff -ruN heartbeat.orig/Makefile heartbeat/Makefile
--- heartbeat.orig/Makefile 2009-09-10 18:48:15.000000000 -0500
+++ heartbeat/Makefile 2009-09-24 10:12:02.000000000 -0500
@@ -93,6 +93,7 @@
pre-patch:
@${MV} ${WRKDIR}/Heartbeat-STABLE-2-1-${DISTNAME} ${WRKSRC}
+ @${CP} -f ${FILESDIR}/heartbeat.in ${WRKSRC}/heartbeat/init.d/
post-patch:
@${LN} -s ${WRKSRC}/include/config.h ${WRKSRC}/config.h
diff -ruN heartbeat.orig/files/heartbeat.in heartbeat/files/heartbeat.in
--- heartbeat.orig/files/heartbeat.in 1969-12-31 18:00:00.000000000 -0600
+++ heartbeat/files/heartbeat.in 2009-09-24 10:16:01.000000000 -0500
@@ -0,0 +1,211 @@
+#!/bin/sh
+#
+
+# PROVIDE: heartbeat
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+#
+# Add the following line to /etc/rc.conf to enable heartbeat:
+#
+# heartbeat_enable="YES" Set to NO by default.
+# Set to YES to enable heartbeat.
+# heartbeat_gracefulstop="YES" Set to NO by default.
+# Set to YES to enable more graceful resource
+# stopping behaviour at shutdown.
+
+# Includes
+. /etc/rc.subr
+HA_DIR=@sysconfdir@/ha.d; export HA_DIR
+. $HA_DIR/shellfuncs
+
+LOCKDIR=@localstatedir@/lock/subsys
+SUBSYS=heartbeat
+RUNDIR=@localstatedir@/run
+
+name="heartbeat"
+rcvar=`set_rcvar`
+
+load_rc_config $name
+: ${heartbeat_enable="NO"}
+: ${heartbeat_gracefulstop="NO"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+reload_cmd="${name}_reload"
+restart_cmd="${name}_restart"
+gracefulstop_cmd="${name}_gracefulstop"
+command="$HA_BIN/heartbeat"
+pidfile="$RUNDIR/heartbeat.pid"
+required_files="$HA_DIR/ha.cf"
+
+if [ "$heartbeat_gracefulstop" = "YES" ]; then
+ stop_cmd="${name}_gracefulstop"
+fi
+
+heartbeat_checkyesno() {
+ case `ha_parameter $1 | tr '[A-Z]' '[a-z]'` in
+
+ y|yes|enable|on|true|1|manual) true;;
+
+ *) false;;
+ esac
+}
+
+heartbeat_gracefulstop() {
+ # Run cluster pre-stop
+ heartbeat_runstartstop pre-stop
+
+ # Stop heartbeat daemon
+ $HA_BIN/heartbeat -k >/dev/null 2>&1
+ RC=$?
+
+ sleeptime=$((`ha_parameter deadtime` + 10))
+
+ echo -n "Sleeping $sleeptime seconds to allow complete resource takeover: "
+ sleep $sleeptime
+ echo "OK"
+
+ # ???
+ if [ $RC -eq 0 ]; then
+ rm -f $LOCKDIR/$SUBSYS
+ fi
+
+ # Run cluster post-stop
+ heartbeat_runstartstop post-stop $RC
+
+ # Stop Logd
+ logd_stop
+
+ return $RC
+}
+
+heartbeat_reload() {
+ # Re-reads configuration files. Will *keep* it's resources.
+ $HA_BIN/heartbeat -r >/dev/null 2>&1
+}
+
+heartbeat_restart() {
+ sleeptime=$((`ha_parameter deadtime` + 10))
+
+ if `heartbeat_stop`; then
+ echo -n "Sleeping $sleeptime seconds to allow complete resource takeover: "
+ sleep $sleeptime
+ echo "OK"
+ echo ""
+ echo "Starting heartbeat."
+ heartbeat_start
+ else
+ echo "Heartbeat did not stop correctly."
+ exit 1
+ fi
+}
+
+heartbeat_runstartstop() {
+ # Run custom cluster commands before/after operations
+ if [ -f $HA_RESOURCEDIR/startstop ]; then
+ $HA_RESOURCEDIR/startstop "$@"
+ fi
+}
+
+heartbeat_start() {
+
+ # Start Logd
+ logd_start
+
+ # Run cluster pre-startup
+ heartbeat_runstartstop pre-start
+
+ # Check if CRM enabled
+ if ! `heartbeat_checkyesno crm`; then
+
+ # Heartbeat v1 configuration
+ $HA_NOARCHBIN/ResourceManager verifyallidle
+ fi
+
+ # ???
+ rm -f $RUNDIR/ppp.d/*
+
+ if [ ! -d $RUNDIR/heartbeat ]; then
+ mkdir -p $RUNDIR/heartbeat/ccm
+ mkdir -p $RUNDIR/heartbeat/crm
+ chown -R @HA_CCMUSER@:@HA_APIGROUP@ $RUNDIR/heartbeat
+ chmod -R 750 $RUNDIR/heartbeat
+ fi
+
+ # Heartbeat v1 configuration files
+ if [ -f $HA_DIR/ipresources -a ! -f $HA_DIR/haresources ]; then
+ mv $HA_DIR/ipresources $HA_DIR/haresources
+ fi
+
+ # Start heartbeat daemon
+ $HA_BIN/heartbeat > /dev/null 2>&1
+ RC=$?
+
+ # ???
+ if [ $RC -eq 0 ]; then
+ if [ ! -d $LOCKDIR ]; then
+ mkdir -p $LOCKDIR
+ fi
+ touch $LOCKDIR/$SUBSYS
+ fi
+
+ # Run cluster post-startup
+ heartbeat_runstartstop post-start $RC
+
+ return $RC
+}
+
+heartbeat_stop() {
+ # Run cluster pre-stop
+ heartbeat_runstartstop pre-stop
+
+ # Stop heartbeat daemon
+ $HA_BIN/heartbeat -k >/dev/null 2>&1
+ RC=$?
+
+ # ???
+ if [ $RC -eq 0 ]; then
+ rm -f $LOCKDIR/$SUBSYS
+ fi
+
+ # Run cluster post-stop
+ heartbeat_runstartstop post-stop $RC
+
+ # Stop Logd
+ logd_stop
+
+ return $RC
+}
+
+logd_start() {
+ # Check if enabled.
+ if `heartbeat_checkyesno use_logd`; then
+
+ # Check if running
+ if ! `$HA_BIN/ha_logd -s >/dev/null 2>&1`; then
+
+ # Start
+ if ! `$HA_BIN/ha_logd -d -c $HA_DIR/logd.cf >/dev/null 2>&1`; then
+ exit 1
+ fi
+ fi
+ fi
+}
+
+logd_stop() {
+ # Check if enabled.
+ if `heartbeat_checkyesno use_logd`; then
+
+ # Check if running
+ if `$HA_BIN/ha_logd -s >/dev/null 2>&1`; then
+
+ # Stop
+ $HA_BIN/ha_logd -k >/dev/null 2>&1
+ fi
+ fi
+}
+
+extra_commands="reload gracefulstop"
+run_rc_command "$1"
+
diff -ruN heartbeat.orig/files/patch-heartbeat-init.d-heartbeat.in heartbeat/files/patch-heartbeat-init.d-heartbeat.in
--- heartbeat.orig/files/patch-heartbeat-init.d-heartbeat.in 2009-07-29 04:13:31.000000000 -0500
+++ heartbeat/files/patch-heartbeat-init.d-heartbeat.in 1969-12-31 18:00:00.000000000 -0600
@@ -1,39 +0,0 @@
---- heartbeat/init.d/heartbeat.in.orig 2008-08-18 07:32:19.000000000 -0500
-+++ heartbeat/init.d/heartbeat.in 2008-10-16 02:49:27.000000000 -0500
-@@ -45,6 +45,27 @@
- ### END INIT INFO
-
-
-+# FreeBSD
-+# PROVIDE: heartbeat
-+# REQUIRE: LOGIN
-+# KEYWORD: shutdown
-+
-+# Add the following line to /etc/rc.conf to enable heartbeat:
-+# heartbeat_enable="YES"
-+
-+. /etc/rc.subr
-+name="heartbeat"
-+rcvar='set_rcvar'
-+load_rc_config $name
-+: ${heartbeat_enable="NO"}
-+
-+if ! checkyesno "heartbeat_enable"; then
-+ exit 0
-+fi
-+
-+set `echo $1 | sed s/fast//`
-+
-+
- HA_DIR=@sysconfdir@/ha.d; export HA_DIR
- CONFIG=$HA_DIR/ha.cf
- . $HA_DIR/shellfuncs
-@@ -161,7 +182,7 @@
- fi
-
-
-- $HA_BIN/ha_logd -d >/dev/null 2>&1
-+ $HA_BIN/ha_logd -d -c $HA_DIR/logd.cf >/dev/null 2>&1
- if
- [ $? -ne 0 ]
- then
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list