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
diff --git a/tools/package/bin/onos-service b/tools/package/bin/onos-service
index 168d9ca..a738cfc 100755
--- a/tools/package/bin/onos-service
+++ b/tools/package/bin/onos-service
@@ -48,4 +48,4 @@
fi
done
-exec ${ONOS_HOME}/apache-karaf-$KARAF_VERSION/bin/start $KARAF_ARGS
+exec ${ONOS_HOME}/apache-karaf-$KARAF_VERSION/bin/karaf $KARAF_ARGS
diff --git a/tools/package/init/onos.initd b/tools/package/init/onos.initd
index 5aa78d1..0323f2e 100755
--- a/tools/package/init/onos.initd
+++ b/tools/package/init/onos.initd
@@ -19,13 +19,22 @@
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-stop-daemon --signal INT --start --chuid $ONOS_USER \
- --exec $ONOS_HOME/bin/onos-service --pidfile $ONOS_PID \
- -- $ONOS_OPTS >$ONOS_HOME/var/stdout.log 2>$ONOS_HOME/var/stderr.log
+ # Start ONOS if it's not already running
+ if ! status > /dev/null; then
+ start-stop-daemon --signal INT --start --chuid $ONOS_USER \
+ --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 () {
- $ONOS_HOME/karaf/bin/stop
+ if status> /dev/null; then
+ $ONOS_HOME/karaf/bin/stop
+ else
+ echo "ONOS/karaf is not running"
+ fi
}
restart () {
@@ -34,6 +43,7 @@
}
status () {
+ # karaf status returns 0 if running, 1 if not
$ONOS_HOME/karaf/bin/status
}
diff --git a/tools/test/bin/onos-service b/tools/test/bin/onos-service
index 64caa2c..43c231c 100755
--- a/tools/test/bin/onos-service
+++ b/tools/test/bin/onos-service
@@ -32,7 +32,7 @@
exit 0
fi
-case $2 in
+case $2 in
start|stop|restart|status)
# Select the target
if [ "${1}" = "--cell" ]; then
@@ -43,7 +43,7 @@
# 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
;;
*)