Accepting request 145495 from home:rhafer:branches:network:messaging:amqp
some init script and sysconfig cleanup, add OCF RA for use with pacemaker OBS-URL: https://build.opensuse.org/request/show/145495 OBS-URL: https://build.opensuse.org/package/show/network:messaging:amqp/rabbitmq-server?expand=0&rev=12
This commit is contained in:
parent
855bf0e4b9
commit
a9928b80e4
@ -29,7 +29,9 @@ cd /var/lib/rabbitmq
|
|||||||
|
|
||||||
SCRIPT=`basename $0`
|
SCRIPT=`basename $0`
|
||||||
|
|
||||||
if [ `id -u` = `id -u rabbitmq` -o "$SCRIPT" = "rabbitmq-plugins" ] ; then
|
if [ `id -u` = `id -u rabbitmq` -a "$SCRIPT" = "rabbitmq-server" ] ; then
|
||||||
|
/usr/lib/rabbitmq/bin/rabbitmq-server "$@" @STDOUT_STDERR_REDIRECTION@
|
||||||
|
elif [ `id -u` = `id -u rabbitmq` -o "$SCRIPT" = "rabbitmq-plugins" ] ; then
|
||||||
/usr/lib/rabbitmq/bin/${SCRIPT} "$@"
|
/usr/lib/rabbitmq/bin/${SCRIPT} "$@"
|
||||||
elif [ `id -u` = 0 ] ; then
|
elif [ `id -u` = 0 ] ; then
|
||||||
@SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/${SCRIPT} ${CMDLINE}"
|
@SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/${SCRIPT} ${CMDLINE}"
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Dec 14 13:11:56 UTC 2012 - rhafer@suse.com
|
||||||
|
|
||||||
|
- sysconfig file cleanup
|
||||||
|
* remove unused Variables
|
||||||
|
* removed variables which can also be set in rabbitmq-env.conf
|
||||||
|
to avoid sysconfig settings overriding settings from the env
|
||||||
|
file (bnc#771151)
|
||||||
|
- Use rc.status functions in init script for prettier startup
|
||||||
|
- Remove "set -e" from init script (bnc#768175)
|
||||||
|
- Include OCF RA for use with Pacemaker
|
||||||
|
- Updated script-wrapper to the latest upstream code
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Dec 14 12:25:37 UTC 2012 - saschpe@suse.de
|
Fri Dec 14 12:25:37 UTC 2012 - saschpe@suse.de
|
||||||
|
|
||||||
|
@ -16,6 +16,11 @@
|
|||||||
# Short-Description: Enable AMQP service provided by RabbitMQ broker
|
# Short-Description: Enable AMQP service provided by RabbitMQ broker
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
|
# Source function library
|
||||||
|
. /etc/rc.status
|
||||||
|
|
||||||
|
rc_reset
|
||||||
|
|
||||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||||
NAME=rabbitmq-server
|
NAME=rabbitmq-server
|
||||||
DAEMON=/usr/sbin/${NAME}
|
DAEMON=/usr/sbin/${NAME}
|
||||||
@ -43,24 +48,17 @@ fi
|
|||||||
mkdir -p /var/run/rabbitmq
|
mkdir -p /var/run/rabbitmq
|
||||||
chown rabbitmq. /var/run/rabbitmq
|
chown rabbitmq. /var/run/rabbitmq
|
||||||
|
|
||||||
RETVAL=0
|
|
||||||
set -e
|
|
||||||
|
|
||||||
start_rabbitmq () {
|
start_rabbitmq () {
|
||||||
status_rabbitmq quiet
|
status_rabbitmq quiet
|
||||||
if [ $RETVAL = 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
echo RabbitMQ is currently running
|
return 0
|
||||||
else
|
else
|
||||||
RETVAL=0
|
|
||||||
set +e
|
|
||||||
setsid sh -c "RABBITMQ_PID_FILE=$PID_FILE $DAEMON > \
|
setsid sh -c "RABBITMQ_PID_FILE=$PID_FILE $DAEMON > \
|
||||||
${INIT_LOG_DIR}/startup_log 2> ${INIT_LOG_DIR}/startup_err" &
|
${INIT_LOG_DIR}/startup_log 2> ${INIT_LOG_DIR}/startup_err" &
|
||||||
$CONTROL wait $PID_FILE >/dev/null 2>&1
|
$CONTROL wait $PID_FILE >/dev/null 2>&1
|
||||||
RETVAL=$?
|
rc=$?
|
||||||
set -e
|
case "$rc" in
|
||||||
case "$RETVAL" in
|
|
||||||
0)
|
0)
|
||||||
echo SUCCESS
|
|
||||||
if [ -n "$LOCK_FILE" ] ; then
|
if [ -n "$LOCK_FILE" ] ; then
|
||||||
touch $LOCK_FILE
|
touch $LOCK_FILE
|
||||||
fi
|
fi
|
||||||
@ -68,20 +66,19 @@ start_rabbitmq () {
|
|||||||
*)
|
*)
|
||||||
rm -f $PID_FILE
|
rm -f $PID_FILE
|
||||||
echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\}
|
echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\}
|
||||||
RETVAL=1
|
rc=1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_rabbitmq () {
|
stop_rabbitmq () {
|
||||||
status_rabbitmq quiet
|
status_rabbitmq quiet
|
||||||
if [ $RETVAL = 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
set +e
|
|
||||||
$CONTROL stop > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
|
$CONTROL stop > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
|
||||||
RETVAL=$?
|
rc=$?
|
||||||
set -e
|
if [ $rc -eq 0 ] ; then
|
||||||
if [ $RETVAL = 0 ] ; then
|
|
||||||
rm -f $PID_FILE
|
rm -f $PID_FILE
|
||||||
if [ -n "$LOCK_FILE" ] ; then
|
if [ -n "$LOCK_FILE" ] ; then
|
||||||
rm -f $LOCK_FILE
|
rm -f $LOCK_FILE
|
||||||
@ -90,80 +87,79 @@ stop_rabbitmq () {
|
|||||||
echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err
|
echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo RabbitMQ is not running
|
rc=0
|
||||||
RETVAL=0
|
|
||||||
fi
|
fi
|
||||||
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
status_rabbitmq() {
|
status_rabbitmq() {
|
||||||
set +e
|
rc=0
|
||||||
if [ "$1" != "quiet" ] ; then
|
if [ "$1" != "quiet" ] ; then
|
||||||
$CONTROL status 2>&1
|
$CONTROL status 2>&1
|
||||||
else
|
else
|
||||||
$CONTROL status > /dev/null 2>&1
|
$CONTROL status > /dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ $? != 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
RETVAL=3
|
rc=3
|
||||||
fi
|
fi
|
||||||
set -e
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
rotate_logs_rabbitmq() {
|
rotate_logs_rabbitmq() {
|
||||||
set +e
|
rc=0
|
||||||
$CONTROL rotate_logs ${ROTATE_SUFFIX}
|
$CONTROL rotate_logs ${ROTATE_SUFFIX}
|
||||||
if [ $? != 0 ] ; then
|
if [ $? != 0 ] ; then
|
||||||
RETVAL=1
|
rc=1
|
||||||
fi
|
fi
|
||||||
set -e
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
restart_running_rabbitmq () {
|
restart_running_rabbitmq () {
|
||||||
status_rabbitmq quiet
|
status_rabbitmq quiet
|
||||||
if [ $RETVAL = 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
restart_rabbitmq
|
restart_rabbitmq
|
||||||
else
|
else
|
||||||
echo RabbitMQ is not runnning
|
echo RabbitMQ is not runnning
|
||||||
RETVAL=0
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
restart_rabbitmq() {
|
restart_rabbitmq() {
|
||||||
stop_rabbitmq
|
$0 stop
|
||||||
start_rabbitmq
|
$0 start
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
echo -n "Starting $DESC: "
|
echo -n "Starting $DESC: "
|
||||||
start_rabbitmq
|
start_rabbitmq
|
||||||
echo "$NAME."
|
rc_status -v
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
echo -n "Stopping $DESC: "
|
echo -n "Stopping $DESC: "
|
||||||
stop_rabbitmq
|
stop_rabbitmq
|
||||||
echo "$NAME."
|
rc_status -v
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
status_rabbitmq
|
status_rabbitmq
|
||||||
|
rc_status # no verbose here -- status function already prints status out
|
||||||
;;
|
;;
|
||||||
rotate-logs)
|
rotate-logs)
|
||||||
echo -n "Rotating log files for $DESC: "
|
echo -n "Rotating log files for $DESC: "
|
||||||
rotate_logs_rabbitmq
|
rotate_logs_rabbitmq
|
||||||
|
rc_status
|
||||||
;;
|
;;
|
||||||
force-reload|reload|restart)
|
force-reload|reload|restart)
|
||||||
echo -n "Restarting $DESC: "
|
|
||||||
restart_rabbitmq
|
restart_rabbitmq
|
||||||
echo "$NAME."
|
rc_status
|
||||||
;;
|
;;
|
||||||
condrestart|try-restart)
|
condrestart|try-restart)
|
||||||
echo -n "Restarting $DESC: "
|
|
||||||
restart_running_rabbitmq
|
restart_running_rabbitmq
|
||||||
echo "$NAME."
|
rc_status
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2
|
echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2
|
||||||
RETVAL=1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exit $RETVAL
|
rc_exit
|
||||||
|
371
rabbitmq-server.ocf
Normal file
371
rabbitmq-server.ocf
Normal file
@ -0,0 +1,371 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
## The contents of this file are subject to the Mozilla Public License
|
||||||
|
## Version 1.1 (the "License"); you may not use this file except in
|
||||||
|
## compliance with the License. You may obtain a copy of the License
|
||||||
|
## at http://www.mozilla.org/MPL/
|
||||||
|
##
|
||||||
|
## Software distributed under the License is distributed on an "AS IS"
|
||||||
|
## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
||||||
|
## the License for the specific language governing rights and
|
||||||
|
## limitations under the License.
|
||||||
|
##
|
||||||
|
## The Original Code is RabbitMQ.
|
||||||
|
##
|
||||||
|
## The Initial Developer of the Original Code is VMware, Inc.
|
||||||
|
## Copyright (c) 2007-2012 VMware, Inc. All rights reserved.
|
||||||
|
##
|
||||||
|
|
||||||
|
##
|
||||||
|
## OCF Resource Agent compliant rabbitmq-server resource script.
|
||||||
|
##
|
||||||
|
|
||||||
|
## OCF instance parameters
|
||||||
|
## OCF_RESKEY_server
|
||||||
|
## OCF_RESKEY_ctl
|
||||||
|
## OCF_RESKEY_nodename
|
||||||
|
## OCF_RESKEY_ip
|
||||||
|
## OCF_RESKEY_port
|
||||||
|
## OCF_RESKEY_config_file
|
||||||
|
## OCF_RESKEY_log_base
|
||||||
|
## OCF_RESKEY_mnesia_base
|
||||||
|
## OCF_RESKEY_server_start_args
|
||||||
|
## OCF_RESKEY_pid_file
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Initialization:
|
||||||
|
|
||||||
|
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/resource.d/heartbeat}
|
||||||
|
. ${OCF_FUNCTIONS_DIR}/.ocf-shellfuncs
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
OCF_RESKEY_server_default="/usr/sbin/rabbitmq-server"
|
||||||
|
OCF_RESKEY_ctl_default="/usr/sbin/rabbitmqctl"
|
||||||
|
OCF_RESKEY_nodename_default="rabbit@localhost"
|
||||||
|
OCF_RESKEY_log_base_default="/var/log/rabbitmq"
|
||||||
|
OCF_RESKEY_pid_file_default="/var/run/rabbitmq/pid"
|
||||||
|
: ${OCF_RESKEY_server=${OCF_RESKEY_server_default}}
|
||||||
|
: ${OCF_RESKEY_ctl=${OCF_RESKEY_ctl_default}}
|
||||||
|
: ${OCF_RESKEY_nodename=${OCF_RESKEY_nodename_default}}
|
||||||
|
: ${OCF_RESKEY_log_base=${OCF_RESKEY_log_base_default}}
|
||||||
|
: ${OCF_RESKEY_pid_file=${OCF_RESKEY_pid_file_default}}
|
||||||
|
|
||||||
|
meta_data() {
|
||||||
|
cat <<END
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
|
||||||
|
<resource-agent name="rabbitmq-server">
|
||||||
|
<version>1.0</version>
|
||||||
|
|
||||||
|
<longdesc lang="en">
|
||||||
|
Resource agent for RabbitMQ-server
|
||||||
|
</longdesc>
|
||||||
|
|
||||||
|
<shortdesc lang="en">Resource agent for RabbitMQ-server</shortdesc>
|
||||||
|
|
||||||
|
<parameters>
|
||||||
|
<parameter name="server" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
The path to the rabbitmq-server script
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Path to rabbitmq-server</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_server_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="ctl" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
The path to the rabbitmqctl script
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Path to rabbitmqctl</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_ctl_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="nodename" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
The node name for rabbitmq-server
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Node name</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_nodename_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="ip" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
The IP address for rabbitmq-server to listen on
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">IP Address</shortdesc>
|
||||||
|
<content type="string" default="" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="port" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
The IP Port for rabbitmq-server to listen on
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">IP Port</shortdesc>
|
||||||
|
<content type="integer" default="" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="config_file" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Location of the config file (without the .config suffix)
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Config file path (without the .config suffix)</shortdesc>
|
||||||
|
<content type="string" default="" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="log_base" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Location of the directory under which logs will be created
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Log base path</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_log_base_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="mnesia_base" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Location of the directory under which mnesia will store data
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Mnesia base path</shortdesc>
|
||||||
|
<content type="string" default="" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="server_start_args" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Additional arguments provided to the server on startup
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Server start arguments</shortdesc>
|
||||||
|
<content type="string" default="" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="pid_file" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Location of the file in which the pid will be stored
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">Pid file path</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_pid_file_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
|
</parameters>
|
||||||
|
|
||||||
|
<actions>
|
||||||
|
<action name="start" timeout="600" />
|
||||||
|
<action name="stop" timeout="120" />
|
||||||
|
<action name="status" timeout="20" interval="10" />
|
||||||
|
<action name="monitor" timeout="20" interval="10" />
|
||||||
|
<action name="validate-all" timeout="30" />
|
||||||
|
<action name="meta-data" timeout="5" />
|
||||||
|
</actions>
|
||||||
|
</resource-agent>
|
||||||
|
END
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_usage() {
|
||||||
|
cat <<END
|
||||||
|
usage: $0 {start|stop|status|monitor|validate-all|meta-data}
|
||||||
|
|
||||||
|
Expects to have a fully populated OCF RA-compliant environment set.
|
||||||
|
END
|
||||||
|
}
|
||||||
|
|
||||||
|
RABBITMQ_SERVER=$OCF_RESKEY_server
|
||||||
|
RABBITMQ_CTL=$OCF_RESKEY_ctl
|
||||||
|
RABBITMQ_NODENAME=$OCF_RESKEY_nodename
|
||||||
|
RABBITMQ_NODE_IP_ADDRESS=$OCF_RESKEY_ip
|
||||||
|
RABBITMQ_NODE_PORT=$OCF_RESKEY_port
|
||||||
|
RABBITMQ_CONFIG_FILE=$OCF_RESKEY_config_file
|
||||||
|
RABBITMQ_LOG_BASE=$OCF_RESKEY_log_base
|
||||||
|
RABBITMQ_MNESIA_BASE=$OCF_RESKEY_mnesia_base
|
||||||
|
RABBITMQ_SERVER_START_ARGS=$OCF_RESKEY_server_start_args
|
||||||
|
RABBITMQ_PID_FILE=$OCF_RESKEY_pid_file
|
||||||
|
[ ! -z $RABBITMQ_NODENAME ] && NODENAME_ARG="-n $RABBITMQ_NODENAME"
|
||||||
|
[ ! -z $RABBITMQ_NODENAME ] && export RABBITMQ_NODENAME
|
||||||
|
|
||||||
|
ensure_pid_dir () {
|
||||||
|
PID_DIR=`dirname ${RABBITMQ_PID_FILE}`
|
||||||
|
if [ ! -d ${PID_DIR} ] ; then
|
||||||
|
mkdir -p ${PID_DIR}
|
||||||
|
chown -R rabbitmq:rabbitmq ${PID_DIR}
|
||||||
|
chmod 755 ${PID_DIR}
|
||||||
|
fi
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_pid () {
|
||||||
|
rm -f ${RABBITMQ_PID_FILE}
|
||||||
|
rmdir `dirname ${RABBITMQ_PID_FILE}` || :
|
||||||
|
}
|
||||||
|
|
||||||
|
export_vars() {
|
||||||
|
[ ! -z $RABBITMQ_NODE_IP_ADDRESS ] && export RABBITMQ_NODE_IP_ADDRESS
|
||||||
|
[ ! -z $RABBITMQ_NODE_PORT ] && export RABBITMQ_NODE_PORT
|
||||||
|
[ ! -z $RABBITMQ_CONFIG_FILE ] && export RABBITMQ_CONFIG_FILE
|
||||||
|
[ ! -z $RABBITMQ_LOG_BASE ] && export RABBITMQ_LOG_BASE
|
||||||
|
[ ! -z $RABBITMQ_MNESIA_BASE ] && export RABBITMQ_MNESIA_BASE
|
||||||
|
[ ! -z $RABBITMQ_SERVER_START_ARGS ] && export RABBITMQ_SERVER_START_ARGS
|
||||||
|
[ ! -z $RABBITMQ_PID_FILE ] && ensure_pid_dir && export RABBITMQ_PID_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_validate_partial() {
|
||||||
|
if [ ! -x $RABBITMQ_SERVER ]; then
|
||||||
|
ocf_log err "rabbitmq-server server $RABBITMQ_SERVER does not exist or is not executable";
|
||||||
|
exit $OCF_ERR_INSTALLED;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x $RABBITMQ_CTL ]; then
|
||||||
|
ocf_log err "rabbitmq-server ctl $RABBITMQ_CTL does not exist or is not executable";
|
||||||
|
exit $OCF_ERR_INSTALLED;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_validate_full() {
|
||||||
|
if [ ! -z $RABBITMQ_CONFIG_FILE ] && [ ! -e "${RABBITMQ_CONFIG_FILE}.config" ]; then
|
||||||
|
ocf_log err "rabbitmq-server config_file ${RABBITMQ_CONFIG_FILE}.config does not exist or is not a file";
|
||||||
|
exit $OCF_ERR_INSTALLED;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z $RABBITMQ_LOG_BASE ] && [ ! -d $RABBITMQ_LOG_BASE ]; then
|
||||||
|
ocf_log err "rabbitmq-server log_base $RABBITMQ_LOG_BASE does not exist or is not a directory";
|
||||||
|
exit $OCF_ERR_INSTALLED;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z $RABBITMQ_MNESIA_BASE ] && [ ! -d $RABBITMQ_MNESIA_BASE ]; then
|
||||||
|
ocf_log err "rabbitmq-server mnesia_base $RABBITMQ_MNESIA_BASE does not exist or is not a directory";
|
||||||
|
exit $OCF_ERR_INSTALLED;
|
||||||
|
fi
|
||||||
|
|
||||||
|
rabbit_validate_partial
|
||||||
|
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_status() {
|
||||||
|
rabbitmqctl_action "status"
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_wait() {
|
||||||
|
rabbitmqctl_action "wait" $1
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbitmqctl_action() {
|
||||||
|
local rc
|
||||||
|
local action
|
||||||
|
action=$@
|
||||||
|
$RABBITMQ_CTL $NODENAME_ARG $action > /dev/null 2> /dev/null
|
||||||
|
rc=$?
|
||||||
|
case "$rc" in
|
||||||
|
0)
|
||||||
|
ocf_log debug "RabbitMQ server is running normally"
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
ocf_log debug "RabbitMQ server is not running"
|
||||||
|
return $OCF_NOT_RUNNING
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ocf_log err "Unexpected return from rabbitmqctl $NODENAME_ARG $action: $rc"
|
||||||
|
exit $OCF_ERR_GENERIC
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_start() {
|
||||||
|
local rc
|
||||||
|
|
||||||
|
if rabbit_status; then
|
||||||
|
ocf_log info "Resource already running."
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
fi
|
||||||
|
|
||||||
|
export_vars
|
||||||
|
|
||||||
|
setsid sh -c "$RABBITMQ_SERVER > ${RABBITMQ_LOG_BASE}/startup_log 2> ${RABBITMQ_LOG_BASE}/startup_err" &
|
||||||
|
|
||||||
|
# Wait for the server to come up.
|
||||||
|
# Let the CRM/LRM time us out if required
|
||||||
|
rabbit_wait $RABBITMQ_PID_FILE
|
||||||
|
rc=$?
|
||||||
|
if [ "$rc" != $OCF_SUCCESS ]; then
|
||||||
|
remove_pid
|
||||||
|
ocf_log info "rabbitmq-server start failed: $rc"
|
||||||
|
exit $OCF_ERR_GENERIC
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_stop() {
|
||||||
|
local rc
|
||||||
|
|
||||||
|
if ! rabbit_status; then
|
||||||
|
ocf_log info "Resource not running."
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
fi
|
||||||
|
|
||||||
|
$RABBITMQ_CTL stop
|
||||||
|
rc=$?
|
||||||
|
|
||||||
|
if [ "$rc" != 0 ]; then
|
||||||
|
ocf_log err "rabbitmq-server stop command failed: $RABBITMQ_CTL stop, $rc"
|
||||||
|
return $rc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Spin waiting for the server to shut down.
|
||||||
|
# Let the CRM/LRM time us out if required
|
||||||
|
stop_wait=1
|
||||||
|
while [ $stop_wait = 1 ]; do
|
||||||
|
rabbit_status
|
||||||
|
rc=$?
|
||||||
|
if [ "$rc" = $OCF_NOT_RUNNING ]; then
|
||||||
|
remove_pid
|
||||||
|
stop_wait=0
|
||||||
|
break
|
||||||
|
elif [ "$rc" != $OCF_SUCCESS ]; then
|
||||||
|
ocf_log info "rabbitmq-server stop failed: $rc"
|
||||||
|
exit $OCF_ERR_GENERIC
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
return $OCF_SUCCESS
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbit_monitor() {
|
||||||
|
rabbit_status
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
case $__OCF_ACTION in
|
||||||
|
meta-data)
|
||||||
|
meta_data
|
||||||
|
exit $OCF_SUCCESS
|
||||||
|
;;
|
||||||
|
usage|help)
|
||||||
|
rabbit_usage
|
||||||
|
exit $OCF_SUCCESS
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if ocf_is_probe; then
|
||||||
|
rabbit_validate_partial
|
||||||
|
else
|
||||||
|
rabbit_validate_full
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $__OCF_ACTION in
|
||||||
|
start)
|
||||||
|
rabbit_start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
rabbit_stop
|
||||||
|
;;
|
||||||
|
status|monitor)
|
||||||
|
rabbit_monitor
|
||||||
|
;;
|
||||||
|
validate-all)
|
||||||
|
exit $OCF_SUCCESS
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
rabbit_usage
|
||||||
|
exit $OCF_ERR_UNIMPLEMENTED
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
@ -32,8 +32,10 @@ Group: System/Daemons
|
|||||||
Url: http://www.rabbitmq.com/
|
Url: http://www.rabbitmq.com/
|
||||||
Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz
|
Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz
|
||||||
Source1: rabbitmq-server.init
|
Source1: rabbitmq-server.init
|
||||||
|
# This comes from: http://hg.rabbitmq.com/rabbitmq-server/raw-file/2da625c0a436/packaging/common/rabbitmq-script-wrapper
|
||||||
Source2: rabbitmq-script-wrapper
|
Source2: rabbitmq-script-wrapper
|
||||||
Source3: rabbitmq-server.logrotate
|
Source3: rabbitmq-server.logrotate
|
||||||
|
Source4: rabbitmq-server.ocf
|
||||||
Source5: rabbitmq-server.sysconfig
|
Source5: rabbitmq-server.sysconfig
|
||||||
Patch0: no-nmap.patch
|
Patch0: no-nmap.patch
|
||||||
Patch1: no-remove-common.patch
|
Patch1: no-remove-common.patch
|
||||||
@ -112,12 +114,15 @@ install -p -D -m 644 %{SOURCE5} %{buildroot}%{_localstatedir}/adm/fillup-templat
|
|||||||
|
|
||||||
# Install wrapper scripts
|
# Install wrapper scripts
|
||||||
%define _rabbit_wrapper %{_builddir}/`basename %{SOURCE2}`
|
%define _rabbit_wrapper %{_builddir}/`basename %{SOURCE2}`
|
||||||
|
%define _rabbit_server_ocf %{_builddir}/`basename %{SOURCE4}`
|
||||||
cp %{SOURCE2} %{_rabbit_wrapper}
|
cp %{SOURCE2} %{_rabbit_wrapper}
|
||||||
sed -i 's|@SU_RABBITMQ_SH_C@|su rabbitmq -s /bin/sh -c|' %{_rabbit_wrapper}
|
sed -i 's|@SU_RABBITMQ_SH_C@|su rabbitmq -s /bin/sh -c|' %{_rabbit_wrapper}
|
||||||
sed -i 's|/usr/lib/|%{_libdir}/|' %{_rabbit_wrapper}
|
sed -i 's|/usr/lib/|%{_libdir}/|' %{_rabbit_wrapper}
|
||||||
|
cp %{SOURCE4} %{_rabbit_server_ocf}
|
||||||
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmqctl
|
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmqctl
|
||||||
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-server
|
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-server
|
||||||
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-plugins
|
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-plugins
|
||||||
|
install -p -D -m 0755 %{_rabbit_server_ocf} %{buildroot}%{_exec_prefix}/lib/ocf/resource.d/rabbitmq/rabbitmq-server
|
||||||
|
|
||||||
# Copy all necessary lib files etc.
|
# Copy all necessary lib files etc.
|
||||||
install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server
|
install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server
|
||||||
@ -173,6 +178,9 @@ exit 0
|
|||||||
%{_rabbit_erllibdir}
|
%{_rabbit_erllibdir}
|
||||||
%{_initddir}/rabbitmq-server
|
%{_initddir}/rabbitmq-server
|
||||||
%{_sbindir}/rcrabbitmq-server
|
%{_sbindir}/rcrabbitmq-server
|
||||||
|
%dir /usr/lib/ocf
|
||||||
|
%dir /usr/lib/ocf/resource.d
|
||||||
|
%dir /usr/lib/ocf/resource.d/rabbitmq
|
||||||
%config(noreplace) %{_sysconfdir}/logrotate.d/rabbitmq-server
|
%config(noreplace) %{_sysconfdir}/logrotate.d/rabbitmq-server
|
||||||
%doc LICENSE* README
|
%doc LICENSE* README
|
||||||
%dir %{_rabbit_erllibdir}/plugins
|
%dir %{_rabbit_erllibdir}/plugins
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
## Type: integer
|
|
||||||
## Default: 1
|
|
||||||
#
|
|
||||||
# Defines how many rabbitmq nodes to start
|
|
||||||
#
|
|
||||||
NODE_COUNT="1"
|
|
||||||
|
|
||||||
## Type: string
|
## Type: string
|
||||||
## Default: ""
|
## Default: ""
|
||||||
#
|
#
|
||||||
@ -18,58 +11,3 @@ ROTATE_SUFFIX=""
|
|||||||
# Defines the location of the log files
|
# Defines the location of the log files
|
||||||
#
|
#
|
||||||
INIT_LOG_DIR="/var/log/rabbitmq"
|
INIT_LOG_DIR="/var/log/rabbitmq"
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "/var/lib/rabbitmq/mnesia"
|
|
||||||
#
|
|
||||||
# Set this to the directory where Mnesia database files should be placed.
|
|
||||||
#
|
|
||||||
RABBITMQ_MNESIA_BASE="/var/lib/rabbitmq/mnesia"
|
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "/var/log/rabbitmq"
|
|
||||||
#
|
|
||||||
# Log files generated by the server will be placed in this directory.
|
|
||||||
#
|
|
||||||
RABBITMQ_LOG_BASE="/var/log/rabbitmq"
|
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "rabbit"
|
|
||||||
#
|
|
||||||
# This can be useful if you want to run more than one node per machine -
|
|
||||||
# RABBITMQ_NODENAME should be unique per erlang-node-and-machine
|
|
||||||
# combination. See clustering on a single machine for more.
|
|
||||||
#
|
|
||||||
RABBITMQ_NODENAME="rabbit"
|
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "0.0.0.0"
|
|
||||||
#
|
|
||||||
# This can be changed if you only want to bind to one network interface.
|
|
||||||
#
|
|
||||||
RABBITMQ_NODE_IP_ADDRESS="0.0.0.0"
|
|
||||||
|
|
||||||
## Type: integer
|
|
||||||
## Default: 5672
|
|
||||||
#
|
|
||||||
# This can be changed if you want to listen on a non-standard port.
|
|
||||||
#
|
|
||||||
RABBITMQ_NODE_PORT="5672"
|
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "/etc/rabbitmq/rabbitmq_cluster.config"
|
|
||||||
#
|
|
||||||
# If this file is present it is used by the server to auto-configure a
|
|
||||||
# RabbitMQ cluster. See the clustering guide for details.
|
|
||||||
#
|
|
||||||
RABBITMQ_CLUSTER_CONFIG_FILE="/etc/rabbitmq/rabbitmq_cluster.config"
|
|
||||||
|
|
||||||
## Type: string
|
|
||||||
## Default: "/etc/rabbitmq/rabbitmq"
|
|
||||||
#
|
|
||||||
# If this file is present it is used by the server to configure RabbitMQ
|
|
||||||
# application components. Note that the .config extension is automatically
|
|
||||||
# appended by the Erlang runtime. See the section on the configuration file
|
|
||||||
# for details.
|
|
||||||
#
|
|
||||||
RABBITMQ_CONFIG_FILE="/etc/rabbitmq/rabbitmq"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user