Something went wrong on our end
-
Andrea Michelotti authoredAndrea Michelotti authored
#chaos_services.sh# 9.95 KiB
#!/bin/bash
cmd=$1
pushd `dirname $0` > /dev/null
scriptdir=`pwd -P`
popd > /dev/null
if [ -z "$CHAOS_TOOLS" ];then
export CHAOS_TOOLS=$scriptdir
fi
source $scriptdir/common_util.sh
# CDS_EXEC=ChaosMetadataService
#CDS_CONF=cds.cfg
MDS_EXEC=mds
UI_EXEC=webui
US_EXEC=UnitServer
AGENT_EXEC=agent
MDS_CONFIG=$CHAOS_PREFIX/etc/localhost/chaosDashboard.json
if [ -z "$CHAOS_PREFIX" ]; then
error_mesg "CHAOS_PREFIX environment variables not set"
exit 1
fi
backend_checks(){
if [ -z "$CHAOS_DB_SERVERS" ];then
if ! ps -fe |grep [m]ongod >/dev/null ;then
error_mesg "mongod not running" ; exit 1
else
ok_mesg "mongod check"
fi
fi
if [ -z "$CHAOS_LIVE_SERVERS" ]; then
if ! ps -fe |grep [e]pmd >/dev/null ;then
if ! ps -fe |grep [m]emcached >/dev/null;then
error_mesg "epmd (couchbase) nor memcached running" ; exit 1
fi
else
ok_mesg "couchbase check"
fi
fi
}
mds_checks(){
MDS_LOG=$CHAOS_PREFIX/log/ChaosMetadataService.log
mkdir -p $CHAOS_PREFIX/log
if [ -x "$CHAOS_PREFIX/bin/$MDS_EXEC" ]; then
MDS_BIN=$CHAOS_PREFIX/bin/$MDS_EXEC
else
error_mesg "$MDS_EXEC binary not found in $CHAOS_PREFIX/bin"
exit 1
fi
}
usage(){
info_mesg "Usage :$0 {start|stop|status| config| start agent| start mds | start webui| start us |start develßdevel | stop webui|stop mds| stop us}"
}
start_mds(){
if [ -n "$CHAOS_MDS" ];then
if ! [[ "$CHAOS_MDS" =~ localhost ]];then
echo "* Using $CHAOS_MDS"
return 1
fi
fi
backend_checks;
mds_checks;
if check_proc "$CHAOS_PREFIX/bin/$MDS_EXEC";then
info_mesg "already running " "MDS.."
else
info_mesg "starting MDS..." "($CHAOS_LIVE_SERVERS)($CHAOS_DB_SERVERS)"
run_proc "$CHAOS_SERVICE_ENV $CHAOS_PREFIX/bin/$MDS_EXEC --conf-file $CHAOS_PREFIX/etc/mds.cfg $CHAOS_OVERALL_OPT $CHAOS_MDS_OPT --log-file $CHAOS_PREFIX/log/$MDS_EXEC.$MYPID.log > $CHAOS_PREFIX/log/$MDS_EXEC.$MYPID.std.out 2>&1 &" "$MDS_EXEC"
# echo "$CHAOS_PREFIX/bin/$MDS_EXEC --conf-file $CHAOS_PREFIX/etc/mds.cfg $CHAOS_OVERALL_OPT $CHAOS_MDS_OPT --log-file $CHAOS_PREFIX/log/$MDS_EXEC.log" >> $CHAOS_PREFIX/log/$MDS_EXEC.std.out
if execute_command_until_ok "grep \"Data Service published\" $CHAOS_PREFIX/log/$MDS_EXEC.$MYPID.log" 120;then
info_mesg "MDS:" " `grep \"Data Service published\" $CHAOS_PREFIX/log/$MDS_EXEC.$MYPID.log`"
sleep 1
ok_mesg "checking publishing"
else
nok_mesg "checking publishing"
return 1
fi
info_mesg "waiting " " 5 seconds"
sleep 5
fi
}
# start_cds(){
# cds_checks
# info_mesg "starting CDS..."
# check_proc_then_kill "$CDS_EXEC"
# echo "$CDS_BIN --conf-file $CHAOS_PREFIX/etc/$CDS_CONF --log-file $CHAOS_PREFIX/log/cds.log" > $CHAOS_PREFIX/log/$CDS_EXEC.std.out
# run_proc "$CDS_BIN --conf-file $CHAOS_PREFIX/etc/$CDS_CONF $CHAOS_OVERALL_OPT --log-file $CHAOS_PREFIX/log/$CDS_EXEC.log >> $CHAOS_PREFIX/log/$CDS_EXEC.std.out 2>&1 &" "$CDS_EXEC"
# }
start_ui(){
if [ -n "$CHAOS_WEBUI" ];then
if ! [[ "$CHAOS_WBUI" =~ localhost ]];then
echo "* Using $CHAOS_WEBUI"
return 1
fi
fi
if check_proc "$CHAOS_PREFIX/bin/$UI_EXEC";then
info_mesg "already running " "webui.."
else
info_mesg "starting " "webui.."
# check_proc_then_kill "$CHAOS_PREFIX/bin/$UI_EXEC"
run_proc "$CHAOS_SERVICE_ENV $CHAOS_PREFIX/bin/$UI_EXEC --conf-file $CHAOS_PREFIX/etc/webui.cfg $port $CHAOS_OVERALL_OPT --log-file $CHAOS_PREFIX/log/webui.$MYPID.log > $CHAOS_PREFIX/log/$UI_EXEC.$MYPID.std.out 2>&1 &" "$UI_EXEC"
fi
# echo "$CHAOS_PREFIX/bin/$UI_EXEC --conf-file $CHAOS_PREFIX/etc/webui.cfg $port $CHAOS_OVERALL_OPT --log-file $CHAOS_PREFIX/log/webui.log" >> $CHAOS_PREFIX/log/$UI_EXEC.std.out
}
start_agent(){
if [ -n "$CHAOS_AGENT" ];then
if ! [[ "$CHAOS_AGENT" =~ localhost ]];then
echo "* Using $CHAOS_AGENT"
return 1
fi
fi
if check_proc "$CHAOS_PREFIX/bin/$AGENT_EXEC";then
info_mesg "already running " "agent.."
else
info_mesg "starting " "agent"
run_proc "$CHAOS_SERVICE_ENV $CHAOS_PREFIX/bin/$AGENT_EXEC --conf-file $CHAOS_PREFIX/etc/agent.cfg $CHAOS_OVERALL_OPT --log-on-file --log-file $CHAOS_PREFIX/log/agent.$MYPID.log > $CHAOS_PREFIX/log/$AGENT_EXEC.$MYPID.std.out 2>&1 &" "$AGENT_EXEC"
fi
}
load_config(){
if [ ! -e "$MDS_CONFIG" ]; then
error_mesg "localhost configuration file not found in \"$MDS_CONFIG\" " "start skipped"
exit 1
fi
info_mesg "transferring configuration to MDS " "$MDS_CONFIG"
if ! jchaosctl --server localhost:8081 --upload $MDS_CONFIG >& $CHAOS_PREFIX/log/jchaosctl.config.std.out ;then
error_mesg "failed initialization of " "MDS with $MDS_CONFIG"
exit 1
fi
}
start_us(){
if check_proc "$CHAOS_PREFIX/bin/$US_EXEC";then
info_mesg "already running " "UnitServer.."
else
if [ ! -e "$CHAOS_PREFIX/etc/cu.cfg" ]; then
warn_mesg "UnitServer configuration file not found in \"$CHAOS_PREFIX/etc/cu.cfg\" " "start skipped"
return
fi
# info_mesg "transferring configuration to MDS " "$CHAOS_PREFIX/etc/localhost/MDSConfig.json"
# if ! run_proc "$CHAOS_PREFIX/bin/ChaosMDSCmd --mds-conf $CHAOS_PREFIX/etc/localhost/MDSConfig.json $CHAOS_OVERALL_OPT -r 1 --log-on-file --log-file $CHAOS_PREFIX/log/ChaosMDSCmd.$MYPID.log > $CHAOS_PREFIX/log/ChaosMDSCmd.$MYPID.std.out 2>&1 " "ChaosMDSCmd";then
# error_mesg "failed initialization of " "MDS"
# exit 1
# fi
sleep 5
info_mesg "starting US through agent " "TEST"
if ! jchaosctl --server localhost:8081 --op start --uid TEST;then
error_mesg "failed starting of " "TEST"
exit 1
fi
# info_mesg "starting " "$US_EXEC"
# run_proc "$CHAOS_PREFIX/bin/$US_EXEC --conf-file $CHAOS_PREFIX/etc/cu.cfg $CHAOS_OVERALL_OPT --log-on-file 1 --log-file $CHAOS_PREFIX/log/$US_EXEC.$MYPID.log > $CHAOS_PREFIX/log/$US_EXEC.$MYPID.std.out 2>&1 &" "$US_EXEC"
fi
}
ui_stop()
{
info_mesg "stopping... " "$UI_EXEC"
stop_proc "$CHAOS_PREFIX/bin/$UI_EXEC"
}
agent_stop()
{
info_mesg "stopping... " "$AGENT_EXEC"
stop_proc "$CHAOS_PREFIX/bin/$AGENT_EXEC"
}
us_stop(){
if check_proc "$CHAOS_PREFIX/bin/$MDS_EXEC" && check_proc "$CHAOS_PREFIX/bin/$UI_EXEC";then
info_mesg "stopping... " "TEST"
if ! jchaosctl --server localhost:8081 --op stop --uid TEST > $CHAOS_PREFIX/log/jchaosctl.stop.std.out ;then
error_mesg "failed stopping of " "TEST"
fi
fi
}
mds_stop()
{
info_mesg "stopping... " "$MDS_EXEC"
stop_proc "$CHAOS_PREFIX/bin/$MDS_EXEC"
}
# cds_stop(){
# info_mesg "stopping CDS..."
# stop_proc "$CDS_EXEC"
# }
start_all(){
local status=0
info_mesg "start all chaos services..."
# start_cds
# status=$((status + $?))
start_mds
status=$((status + $?))
start_ui
status=$((status + $?))
start_agent
status=$((status + $?))
}
stop_all(){
local status=0
info_mesg "stopping all chaos services..."
us_stop
status=$((status + $?))
ui_stop
status=$((status + $?))
mds_stop
status=$((status + $?))
# cds_stop
# status=$((status + $?))
agent_stop
status=$((status + $?))
exit $status
}
status(){
local status=0
check_proc "mongod"
status=$((status + $?))
check_proc "epmd"
status=$((status + $?))
check_proc "$CHAOS_PREFIX/bin/$MDS_EXEC"
status=$((status + $?))
# check_proc "$CDS_EXEC"
# status=$((status + $?))
check_proc "$CHAOS_PREFIX/bin/$UI_EXEC"
status=$((status + $?))
check_proc "$CHAOS_PREFIX/bin/$AGENT_EXEC"
status=$((status + $?))
if [ -n "$(get_pid $CHAOS_PREFIX/bin/$US_EXEC)" ];then
check_proc "$CHAOS_PREFIX/bin/$US_EXEC"
fi
exit $status
}
case "$cmd" in
status)
status
exit 0
;;
config)
load_config
exit 0
;;
start)
if [ -z "$2" ]; then
start_all
else
case "$2" in
mds)
start_mds
exit 0
;;
webui)
start_ui
exit 0
;;
agent)
start_agent
exit 0
;;
us)
start_us
exit 0
;;
devel)
start_mds
start_ui
start_agent
load_config
sleep 1
start_us
exit 0
;;
*)
error_mesg "\"$2\" no such service"
usage
;;
esac
fi
;;
stop)
if [ -z "$2" ]; then
stop_all
else
case "$2" in
mds)
mds_stop
exit 0
;;
us)
us_stop
exit 0
;;
agent)
agent_stop
exit 0
;;
webui)
ui_stop
exit 0
;;
*)
error_mesg "\"$2\" no such service"
usage
;;
esac
fi
;;
*)
usage
exit 1
;;
esac