#!/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 } 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}