Bob Lantz
Committed by Gerrit Code Review

Fix upstart failing because of background onos-service (ONOS-4117)

1.  Invoke karaf script in all cases (upstart, initd/systemd)

This means that onos-service now blocks, which means we need to
change onos.initd to run it in the background. Otherwise, we could
use karaf/bin/start

This should fix ONOS-4117

2. Use service onos {start/status/etc.} for upstart/init/systemd

onos-install should not invoke the new init.d script directly;
instead it should use service onos {cmd, which should work if
service is available on upstart, init.d, and systemd-based
distributions.

This should fix ONOS-4124

3. In onos.initd, check if ONOS is running.

This makes it easier to see what is going on, and it also avoids
attempting to start ONOS if it's already running.

Change-Id: I0152fd7fdcb079b25531442315d0bd69e6c7653d
......@@ -48,4 +48,4 @@ for app in ${SYS_APPS//,/ } ${ONOS_APPS//,/ }; do
fi
done
exec ${ONOS_HOME}/apache-karaf-$KARAF_VERSION/bin/start $KARAF_ARGS
exec ${ONOS_HOME}/apache-karaf-$KARAF_VERSION/bin/karaf $KARAF_ARGS
......
......@@ -19,13 +19,22 @@ start () {
mkdir -p $ONOS_HOME/var 2>/dev/null && chown $ONOS_USER.$ONOS_GROUP $ONOS_HOME/var
mkdir -p $ONOS_HOME/config 2>/dev/null && chown $ONOS_USER.$ONOS_GROUP $ONOS_HOME/config
[ ! -h $ONOS_HOME/log ] && ln -s $ONOS_HOME/karaf/data/log $ONOS_HOME/log || :
# Start ONOS if it's not already running
if ! status > /dev/null; then
start-stop-daemon --signal INT --start --chuid $ONOS_USER \
--exec $ONOS_HOME/bin/onos-service --pidfile $ONOS_PID \
--background --exec $ONOS_HOME/bin/onos-service \
-- $ONOS_OPTS >$ONOS_HOME/var/stdout.log 2>$ONOS_HOME/var/stderr.log
else
echo "ONOS/karaf is already running"
fi
}
stop () {
if status> /dev/null; then
$ONOS_HOME/karaf/bin/stop
else
echo "ONOS/karaf is not running"
fi
}
restart () {
......@@ -34,6 +43,7 @@ restart () {
}
status () {
# karaf status returns 0 if running, 1 if not
$ONOS_HOME/karaf/bin/status
}
......
......@@ -43,7 +43,7 @@ case $2 in
# Execute the remote commands
for node in $nodes; do
ssh $ONOS_USER@${node} "sudo /etc/init.d/onos ${2:-status}"
ssh $ONOS_USER@${node} "sudo service onos ${2:-status}"
done
;;
*)
......