You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

197 lines
3.8 KiB

#!/bin/bash
if [ -f /etc/default/kazoo ]; then
. /etc/default/kazoo
fi
RETVAL=1
NAME=kazoo-ecallmgr
USER=${KAZOO_USER:-kazoo}
BIN_FILE=${KAZOO_BIN:-/opt/kazoo/bin/kazoo}
PID_FILE=${KAZOO_PID:-/var/run/kazoo/${NAME}.pid}
export HOME=${KAZOO_ROOT:-/opt/kazoo}
export VMARGS_PATH=${KAZOO_VMARGS:-/etc/kazoo/core/vm.args}
if [ -f /etc/sysconfig/kazoo ]; then
. /etc/sysconfig/kazoo
fi
if [ "${NAME}" == "kazoo-applications" ]; then
NAME="kazoo_apps"
else
NAME=${NAME#*-}
fi
export NAME_ARG="-name ${NAME}"
# Detect core count
CORES=`grep -E "^processor" /proc/cpuinfo |wc -l`
if [ "${CORES}" = "1" ]; then
BEAM=beam
else
BEAM=beam.smp
fi
prepare() {
chown -R ${USER} /opt/kazoo /opt/kazoo/.*
mkdir -p /tmp/erl_pipes/${NAME}
chown -R ${USER} /tmp/erl_pipes/${NAME}
mkdir -p /var/log/kazoo
chown -R ${USER} /var/log/kazoo
mkdir -p /var/run/kazoo
chown -R ${USER} /var/run/kazoo
if [ -e ${PID_FILE} ]; then
rm -rf ${PID_FILE}
fi
RETVAL=$?
}
start() {
cd ${HOME}
if sudo -E -u ${USER} ${BIN_FILE} pid > /dev/null 2>&1; then
echo "Kazoo ${NAME} is already running!"
return
fi
export CODE_LOADING_MODE=interactive
set -- ${BIN_FILE} "$@"
if [ "$(whoami)" == "${USER}" ]; then
exec "$@"
else
exec sudo -E -u ${USER} "$@"
fi
RETVAL=$?
if [ ${RETVAL} -ne 0 ]; then
echo "Failed to start Kazoo ${NAME}!"
RETVAL=1
fi
}
stop() {
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
kill $i
RETVAL=$?
fi
done
}
restart() {
stop
start
}
status() {
cd ${HOME}
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
set_cookie_arg
/usr/sbin/sup -n ${NAME} kz_nodes status
RETVAL=$?
fi
done
if [ ${RETVAL} -eq 1 ]; then
echo "${NAME} is not running!"
fi
}
connect() {
cd ${HOME}
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
set_cookie_arg
sudo -E -u ${USER} ${BIN_FILE} remote_console
RETVAL=$?
fi
done
if [ ${RETVAL} -eq 1 ]; then
echo "${NAME} is not running!"
fi
}
attach() {
cd ${HOME}
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
set_cookie_arg
echo "WARNING: You are now directly attached to the running ${NAME} Erlang node."
echo " It is safer to use: $0 connect"
sudo -E -u ${USER} ${BIN_FILE} attach
RETVAL=$?
fi
done
if [ ${RETVAL} -eq 1 ]; then
echo "${NAME} is not running!"
fi
}
ping() {
cd ${HOME}
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
set_cookie_arg
sudo -E -u ${USER} ${BIN_FILE} ping
RETVAL=$?
fi
done
if [ ${RETVAL} -eq 1 ]; then
echo "${NAME} is not running!"
fi
}
pid() {
cd ${HOME}
for i in `pidof ${BEAM}`; do
if cat /proc/$i/cmdline | grep -Eq "name[^\-]+${NAME}"; then
echo $i
RETVAL=0
fi
done
if [ ${RETVAL} -eq 1 ]; then
echo "${NAME} is not running!"
fi
}
set_cookie_arg() {
COOKIE=`/usr/sbin/sup -n ${NAME} erlang get_cookie | sed "s|'||g"`
export COOKIE_ARG="-setcookie ${COOKIE}"
}
case "$1" in
prepare)
prepare
;;
background)
start "start"
;;
start)
start "foreground"
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
connect)
connect
;;
attach)
attach
;;
ping)
ping
;;
pid)
pid
;;
*)
echo "Usage: $0 (prepare|start|background|stop|restart|status|connect|attach|ping|pid)"
esac
exit ${RETVAL}