diff --git a/debian/changelog b/debian/changelog index 35926c5..c640728 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +ngcp-mediator (1.5.1) unstable; urgency=low + + [ Michael Prokop ] + * Provide postrm script + * Provide postinst script, taking care of services restarts in HA mode + + [ jbonilla ] + * re-add init stuff + + -- Jon Bonilla Thu, 23 Aug 2012 15:31:07 +0200 + ngcp-mediator (1.5.0) unstable; urgency=low [ mprokop ] diff --git a/debian/mediator.default b/debian/mediator.default new file mode 100644 index 0000000..19e1286 --- /dev/null +++ b/debian/mediator.default @@ -0,0 +1,19 @@ +RUN_MEDIATOR="yes" +PIDFILE="/var/run/mediator.pid" +FORK="yes" +INTERVAL="10" +SOURCE_HOST="localhost" +SOURCE_PORT="3306" +SOURCE_USER="mediator" +SOURCE_PASS='GimmeAllUr$$$' +SOURCE_DB="accounting" +DEST_HOST="localhost" +DEST_PORT="3306" +DEST_USER="mediator" +DEST_PASS='GimmeAllUr$$$' +DEST_DB="accounting" +PROV_HOST="localhost" +PROV_PORT="3306" +PROV_USER="mediator" +PROV_PASS='GimmeAllUr$$$' +PROV_DB="provisioning" diff --git a/debian/mediator.init b/debian/mediator.init new file mode 100755 index 0000000..a5a1872 --- /dev/null +++ b/debian/mediator.init @@ -0,0 +1,112 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: mediator +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Start: mysql +# Should-Stop: mysql +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Ngcp Mediator +# Description: Create accounting CDRs +### END INIT INFO + + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +NAME=mediator +DESC="ACC mediator" +RUN_MEDIATOR=no + +case $(dirname $0) in + /*) FULLPATH=$(dirname $0);; + *) FULLPATH=$(pwd)/$(dirname $0);; +esac + +DAEMON=`which mediator` +DEFAULTS=/etc/default/mediator + +test -f $DAEMON || exit 0 + +# Load startup options if available +if [ -f $DEFAULTS ]; then + . $DEFAULTS || true +fi + +if [ "$RUN_MEDIATOR" != "yes" ]; then + echo "mediator not yet configured. Edit $DEFAULTS first." + exit 0 +fi +[ -z "$PIDFILE" ] && PIDFILE="/var/run/mediator.pid" + +set -e + +. /lib/lsb/init-functions + + +OPTIONS="" + +[ -z "$PIDFILE" ] || OPTIONS="$OPTIONS -D $PIDFILE" +[ -z "$INTERVAL" ] || OPTIONS="$OPTIONS -i $INTERVAL" +[ -z "$SOURCE_HOST" ] || OPTIONS="$OPTIONS -h $SOURCE_HOST" +[ -z "$SOURCE_PORT" ] || OPTIONS="$OPTIONS -o $SOURCE_PORT" +[ -z "$SOURCE_USER" ] || OPTIONS="$OPTIONS -u $SOURCE_USER" +[ -z "$SOURCE_PASS" ] || OPTIONS="$OPTIONS -p $SOURCE_PASS" +[ -z "$SOURCE_DB" ] || OPTIONS="$OPTIONS -b $SOURCE_DB" +[ -z "$DEST_HOST" ] || OPTIONS="$OPTIONS -H $DEST_HOST" +[ -z "$DEST_PORT" ] || OPTIONS="$OPTIONS -O $DEST_PORT" +[ -z "$DEST_USER" ] || OPTIONS="$OPTIONS -U $DEST_USER" +[ -z "$DEST_PASS" ] || OPTIONS="$OPTIONS -P $DEST_PASS" +[ -z "$DEST_DB" ] || OPTIONS="$OPTIONS -B $DEST_DB" +[ -z "$PROV_HOST" ] || OPTIONS="$OPTIONS -S $PROV_HOST" +[ -z "$PROV_PORT" ] || OPTIONS="$OPTIONS -T $PROV_PORT" +[ -z "$PROV_USER" ] || OPTIONS="$OPTIONS -R $PROV_USER" +[ -z "$PROV_PASS" ] || OPTIONS="$OPTIONS -A $PROV_PASS" +[ -z "$PROV_DB" ] || OPTIONS="$OPTIONS -N $PROV_DB" +if test "$FORK" = "yes" ; then + OPTIONS="$OPTIONS -d" +fi + + +case "$1" in + start) + + echo -n "Starting $DESC: $NAME" + start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE \ + --exec $DAEMON -- $OPTIONS || echo -n " already running" + log_end_msg $? + ;; + stop) + echo -n "Stopping $DESC: $NAME" + start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ + --exec $DAEMON + if [ "$?" -ne 0 ]; then + return $? + fi + rm -f $PIDFILE + log_end_msg $? + ;; + restart|force-reload) + + echo -n "Restarting $DESC: $NAME" + start-stop-daemon --oknodo --stop --quiet --pidfile \ + $PIDFILE --exec $DAEMON + if [ "$?" -ne 0 ]; then + return $? + fi + rm -f $PIDFILE + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + $PIDFILE --exec $DAEMON -- $OPTIONS + log_end_msg $? + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; +esac + +exit 0 + diff --git a/debian/ngcp-mediator.postinst b/debian/ngcp-mediator.postinst new file mode 100755 index 0000000..185290d --- /dev/null +++ b/debian/ngcp-mediator.postinst @@ -0,0 +1,54 @@ +#!/bin/sh +# postinst script for ngcp-mediator + +set -e + +restart_handler() { + if [ -x "/etc/init.d/mediator" ]; then + if [ -x "$(which invoke-rc.d 2>/dev/null)" ]; then + invoke-rc.d mediator restart || exit $? + else + /etc/init.d/mediator restart || exit $? + fi + fi +} + +initscript_handler() { + if [ -x "/etc/init.d/mediator" ]; then + update-rc.d mediator defaults >/dev/null + invoke-rc.d mediator start || exit $? + fi +} + +init_handler() { + # just invoke init script wrappers on ce systems since + # they do not provide ngcp-check_active and we don't + # have to handle inactive nodes + if ! [ -x "$(which ngcp-check_active 2>/dev/null)" ]; then + restart_handler + initscript_handler + else # do not restart daemon on inactive node in pro systems + if ngcp-check_active ; then + echo "Active node detected, restarting mediator" + restart_handler + else + echo "Inactive node detected, ignoring request to restart mediator" + fi + fi +} + +case "$1" in + configure) + init_handler + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/debian/ngcp-mediator.postrm b/debian/ngcp-mediator.postrm new file mode 100755 index 0000000..54cbd4b --- /dev/null +++ b/debian/ngcp-mediator.postrm @@ -0,0 +1,18 @@ +#!/bin/sh +# postrm script for ngcp-mediator + +set -e + +removal_wrapper() { + # remove the init script only on ce systems, as the + # the pro system handle it inside the monitoring/HA setup + if ! [ -x "$(which ngcp-check_active 2>/dev/null)" ]; then + update-rc.d mediator remove >/dev/null + fi +} + +if [ "$1" = "purge" ] ; then + removal_wrapper +fi + +exit 0 diff --git a/debian/rules b/debian/rules index 87e6cd6..71cc35c 100755 --- a/debian/rules +++ b/debian/rules @@ -59,7 +59,7 @@ binary-arch: build install dh_installdocs dh_installexamples dh_installman -# dh_installinit --name=mediator + dh_installinit --name=mediator dh_link dh_strip mkdir -p $(CURDIR)/debian/ngcp-mediator/usr/share/lintian/overrides/