mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-17 02:11:38 +02:00
80 lines
2.0 KiB
Bash
Executable File
80 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# -----------------------------------------------------------------------------
|
|
# Launches Buck daemon if not already running and requests Buck task execution.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
BUCK_DAEMON=$1
|
|
TASK=${2:-unspecified}
|
|
DATA=${3}
|
|
|
|
# TODO: Figure out how to parametrize better
|
|
BUCK_PROPS="-Dcheckstyle.config=$4 -Dcheckstyle.suppressions=$5"
|
|
|
|
PORT_FILE="$1.port"
|
|
|
|
function ppid() {
|
|
ps -p ${1:-$$} -o ppid= -o pid= -o comm=
|
|
}
|
|
|
|
function buck_pid() {
|
|
BUCK_PID=($(ppid))
|
|
while [ ${BUCK_PID[0]} -ne 0 ]; do
|
|
BUCK_PID=($(ppid $BUCK_PID))
|
|
if [ "${BUCK_PID[2]}" == "buck" ]; then
|
|
# use parent PID of buck
|
|
echo ${BUCK_PID[0]}
|
|
return
|
|
fi
|
|
if [ "${BUCK_PID[2]}" == "buckd" ] ||
|
|
[[ "${BUCK_PID[2]}" == *"python"* ]]; then
|
|
# use PID of buckd or python
|
|
echo ${BUCK_PID[1]}
|
|
return
|
|
fi
|
|
done
|
|
# fallback last read PID
|
|
echo ${BUCK_PID[1]}
|
|
}
|
|
|
|
function port() {
|
|
cat $PORT_FILE 2>/dev/null || echo 0
|
|
}
|
|
|
|
function check_socket() {
|
|
nc localhost $(port) < /dev/null 2>/dev/null
|
|
return $?
|
|
}
|
|
|
|
# check to see if buck daemon is running; if not, start it
|
|
if ! check_socket; then
|
|
# Starting buck daemon...
|
|
#FIXME change to /dev/null if/when we are confident
|
|
nohup java $BUCK_PROPS -jar $BUCK_DAEMON $PORT_FILE $(buck_pid) >>/tmp/buck.daemon 2>&1 &
|
|
|
|
TRIES=20
|
|
i=0
|
|
# Wait for buck daemon to start for 2 seconds
|
|
while [ $i -lt $TRIES ]; do
|
|
if check_socket; then
|
|
CONNECTED=true
|
|
break
|
|
fi
|
|
let i=i+1
|
|
sleep 0.1
|
|
done
|
|
if [ -z "$CONNECTED" ]; then
|
|
echo "Failed to start buck daemon"
|
|
exit 3
|
|
fi
|
|
fi
|
|
|
|
# run the actual buck daemon client
|
|
OUT=$((printf "%s\n" $TASK; cat $DATA) | nc localhost $(port))
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error connecting to buck daemon server"
|
|
exit 2
|
|
fi
|
|
if [ -n "$OUT" ]; then
|
|
printf "$OUT"
|
|
exit 1
|
|
fi |