diff --git a/rabbitmq-script-wrapper b/rabbitmq-script-wrapper index aa2a3ea..b6c6c1e 100644 --- a/rabbitmq-script-wrapper +++ b/rabbitmq-script-wrapper @@ -29,7 +29,9 @@ cd /var/lib/rabbitmq 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} "$@" elif [ `id -u` = 0 ] ; then @SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/${SCRIPT} ${CMDLINE}" diff --git a/rabbitmq-server-2.8.2.tar.gz b/rabbitmq-server-2.8.2.tar.gz deleted file mode 100644 index 44d2f9a..0000000 --- a/rabbitmq-server-2.8.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8fe9a5d9f9cb0e301f89e26a259aa57c8731e3210d7b8b364ebb5c29f5f6796 -size 2643667 diff --git a/rabbitmq-server-2.8.7.tar.gz b/rabbitmq-server-2.8.7.tar.gz new file mode 100644 index 0000000..d940972 --- /dev/null +++ b/rabbitmq-server-2.8.7.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0726e126896abbe30d9fd491d13eb16afa15327a548a3de9c3a31d41adcaccfc +size 2792978 diff --git a/rabbitmq-server.changes b/rabbitmq-server.changes index 07b4970..35b52e4 100644 --- a/rabbitmq-server.changes +++ b/rabbitmq-server.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +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 + +- Don't use download_files service, or at least only in mode="localonly" + or mode="disabled". But why using it at all, it makes no sense. + +------------------------------------------------------------------- +Mon Dec 10 16:47:53 UTC 2012 - rhafer@suse.com + +- Update to 2.8.7 changes since: + * 2.8.6: This release fixes a number of bugs in the broker, + Erlang client and STOMP and management plugins. + * 2.8.5: This release fixes a number of bugs, including one + introduced in 2.8.5 that could cause an error during shutdown + of mirrored queues. + * 2.8.4: This is primarily a bugfix release, with several + improvements to HA queues. + +------------------------------------------------------------------- +Mon Jul 16 15:52:52 UTC 2012 - matwey.kornilov@gmail.com + +- Updated to 2.8.4 + ------------------------------------------------------------------- Wed May 09 07:27:17 UTC 2012 - matwey.kornilov@gmail.com diff --git a/rabbitmq-server.init b/rabbitmq-server.init index 07f5b13..c2fcc96 100644 --- a/rabbitmq-server.init +++ b/rabbitmq-server.init @@ -16,6 +16,11 @@ # Short-Description: Enable AMQP service provided by RabbitMQ broker ### END INIT INFO +# Source function library +. /etc/rc.status + +rc_reset + PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=rabbitmq-server DAEMON=/usr/sbin/${NAME} @@ -43,24 +48,17 @@ fi mkdir -p /var/run/rabbitmq chown rabbitmq. /var/run/rabbitmq -RETVAL=0 -set -e - start_rabbitmq () { status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then - echo RabbitMQ is currently running + if [ $? -eq 0 ] ; then + return 0 else - RETVAL=0 - set +e setsid sh -c "RABBITMQ_PID_FILE=$PID_FILE $DAEMON > \ ${INIT_LOG_DIR}/startup_log 2> ${INIT_LOG_DIR}/startup_err" & $CONTROL wait $PID_FILE >/dev/null 2>&1 - RETVAL=$? - set -e - case "$RETVAL" in + rc=$? + case "$rc" in 0) - echo SUCCESS if [ -n "$LOCK_FILE" ] ; then touch $LOCK_FILE fi @@ -68,20 +66,19 @@ start_rabbitmq () { *) rm -f $PID_FILE echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} - RETVAL=1 + rc=1 ;; esac fi + return $rc } stop_rabbitmq () { status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then - set +e + if [ $? -eq 0 ] ; then $CONTROL stop > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err - RETVAL=$? - set -e - if [ $RETVAL = 0 ] ; then + rc=$? + if [ $rc -eq 0 ] ; then rm -f $PID_FILE if [ -n "$LOCK_FILE" ] ; then rm -f $LOCK_FILE @@ -90,80 +87,79 @@ stop_rabbitmq () { echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err fi else - echo RabbitMQ is not running - RETVAL=0 + rc=0 fi + return $rc } status_rabbitmq() { - set +e + rc=0 if [ "$1" != "quiet" ] ; then $CONTROL status 2>&1 else $CONTROL status > /dev/null 2>&1 fi - if [ $? != 0 ] ; then - RETVAL=3 + if [ $? -ne 0 ] ; then + rc=3 fi - set -e + return $rc } rotate_logs_rabbitmq() { - set +e + rc=0 $CONTROL rotate_logs ${ROTATE_SUFFIX} if [ $? != 0 ] ; then - RETVAL=1 + rc=1 fi - set -e + return $rc } restart_running_rabbitmq () { status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then + if [ $? -eq 0 ] ; then restart_rabbitmq else echo RabbitMQ is not runnning - RETVAL=0 fi } restart_rabbitmq() { - stop_rabbitmq - start_rabbitmq + $0 stop + $0 start } case "$1" in start) echo -n "Starting $DESC: " start_rabbitmq - echo "$NAME." + rc_status -v ;; stop) echo -n "Stopping $DESC: " stop_rabbitmq - echo "$NAME." + rc_status -v ;; status) status_rabbitmq + rc_status # no verbose here -- status function already prints status out ;; rotate-logs) echo -n "Rotating log files for $DESC: " rotate_logs_rabbitmq + rc_status ;; force-reload|reload|restart) - echo -n "Restarting $DESC: " restart_rabbitmq - echo "$NAME." + rc_status ;; condrestart|try-restart) - echo -n "Restarting $DESC: " restart_running_rabbitmq - echo "$NAME." + rc_status ;; *) echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 - RETVAL=1 + exit 1 ;; esac -exit $RETVAL +rc_exit diff --git a/rabbitmq-server.ocf b/rabbitmq-server.ocf new file mode 100644 index 0000000..48f3ad1 --- /dev/null +++ b/rabbitmq-server.ocf @@ -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 < + + +1.0 + + +Resource agent for RabbitMQ-server + + +Resource agent for RabbitMQ-server + + + + +The path to the rabbitmq-server script + +Path to rabbitmq-server + + + + + +The path to the rabbitmqctl script + +Path to rabbitmqctl + + + + + +The node name for rabbitmq-server + +Node name + + + + + +The IP address for rabbitmq-server to listen on + +IP Address + + + + + +The IP Port for rabbitmq-server to listen on + +IP Port + + + + + +Location of the config file (without the .config suffix) + +Config file path (without the .config suffix) + + + + + +Location of the directory under which logs will be created + +Log base path + + + + + +Location of the directory under which mnesia will store data + +Mnesia base path + + + + + +Additional arguments provided to the server on startup + +Server start arguments + + + + + +Location of the file in which the pid will be stored + +Pid file path + + + + + + + + + + + + + + +END +} + +rabbit_usage() { + cat < /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 $? diff --git a/rabbitmq-server.spec b/rabbitmq-server.spec index 7831528..f2f9e48 100644 --- a/rabbitmq-server.spec +++ b/rabbitmq-server.spec @@ -24,7 +24,7 @@ %endif Name: rabbitmq-server -Version: 2.8.2 +Version: 2.8.7 Release: 0 Summary: The RabbitMQ Server License: MPL-1.1 @@ -32,8 +32,10 @@ Group: System/Daemons Url: http://www.rabbitmq.com/ Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz 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 Source3: rabbitmq-server.logrotate +Source4: rabbitmq-server.ocf Source5: rabbitmq-server.sysconfig Patch0: no-nmap.patch Patch1: no-remove-common.patch @@ -112,12 +114,15 @@ install -p -D -m 644 %{SOURCE5} %{buildroot}%{_localstatedir}/adm/fillup-templat # Install wrapper scripts %define _rabbit_wrapper %{_builddir}/`basename %{SOURCE2}` +%define _rabbit_server_ocf %{_builddir}/`basename %{SOURCE4}` cp %{SOURCE2} %{_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} +cp %{SOURCE4} %{_rabbit_server_ocf} 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-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. install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server @@ -173,6 +178,9 @@ exit 0 %{_rabbit_erllibdir} %{_initddir}/rabbitmq-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 %doc LICENSE* README %dir %{_rabbit_erllibdir}/plugins diff --git a/rabbitmq-server.sysconfig b/rabbitmq-server.sysconfig index 935717c..10549c4 100644 --- a/rabbitmq-server.sysconfig +++ b/rabbitmq-server.sysconfig @@ -1,10 +1,3 @@ -## Type: integer -## Default: 1 -# -# Defines how many rabbitmq nodes to start -# -NODE_COUNT="1" - ## Type: string ## Default: "" # @@ -18,58 +11,3 @@ ROTATE_SUFFIX="" # Defines the location of the log files # 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"