mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-16 09:51:38 +02:00
85 lines
2.5 KiB
Bash
Executable File
85 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# -----------------------------------------------------------------------------
|
|
# Runs ONOS from distributable onos.tar.gz
|
|
# -----------------------------------------------------------------------------
|
|
|
|
ONOS_TAR=
|
|
|
|
cd /tmp
|
|
|
|
# Kill any running instances
|
|
[ -f /tmp/onos.pid ] && kill -9 $(cat /tmp/onos.pid) &>/dev/null
|
|
|
|
ONOS_DIR=$(tar tf $ONOS_TAR | head -n 1 | cut -d/ -f1)
|
|
ONOS_MD5=$ONOS_DIR/CHECKSUM
|
|
|
|
# Extract MD5 of the ONOS tar file and of the previous installation, if one exists
|
|
oldMD5=$(cat $ONOS_MD5 2>/dev/null)
|
|
newMD5=$(md5 -q $ONOS_TAR)
|
|
|
|
# Search for the "clean" argument anywhere on the command-line
|
|
echo "$@" | egrep -q "\bclean\b" && clean=true || unset clean
|
|
|
|
set -e # Do not tolerate any errors from this point onward
|
|
|
|
# If the previous installation does not exist, or if the ONOS tar changed,
|
|
# or if the user asked for clean run, start from scratch.
|
|
if [ ! -d $ONOS_DIR -o "$oldMD5" != "$newMD5" -o -d $ONOS_DIR -a -n "$clean" ]; then
|
|
echo "Running clean installation..."
|
|
|
|
# Blitz previously unrolled onos- directory
|
|
rm -fr $ONOS_DIR
|
|
|
|
# Unroll new image from the specified tar file
|
|
[ -f $ONOS_TAR ] && tar zxf $ONOS_TAR
|
|
|
|
# Write out this installation's MD5 checksum
|
|
echo "$newMD5" > $ONOS_MD5
|
|
|
|
# Change into the ONOS home directory
|
|
cd $ONOS_DIR
|
|
export ONOS_HOME=$PWD
|
|
|
|
# FIXME: for now we're running using the karaf client; later use raw SSH
|
|
unset ONOS_USE_SSH
|
|
|
|
# Create config/cluster.json (cluster metadata)
|
|
IP=${ONOS_IP:-127.0.0.1}
|
|
echo "Creating local cluster configs for IP $IP..."
|
|
[ -d $ONOS_HOME/config ] || mkdir -p $ONOS_HOME/config
|
|
cat > $ONOS_HOME/config/cluster.json <<-EOF
|
|
{
|
|
"name": "default",
|
|
"nodes": [ {"id": "$IP", "ip": "$IP", "port": 9876 } ],
|
|
"partitions": [ { "id": 1, "members": [ "$IP" ] } ]
|
|
}
|
|
EOF
|
|
|
|
else
|
|
# Otherwise, run using the previous installation
|
|
echo "Running previous installation..."
|
|
|
|
# Change into the ONOS home directory
|
|
cd $ONOS_DIR
|
|
export ONOS_HOME=$PWD
|
|
fi
|
|
|
|
# Start ONOS as a server, but include any specified options
|
|
./bin/onos-service server "$@" &>onos.log &
|
|
echo "$!" > /tmp/onos.pid
|
|
|
|
# Hang-on a bit and then start tailing the ONOS log output
|
|
RETRY_COUNT=5
|
|
echo "Waiting for karaf.log"
|
|
until [ $RETRY_COUNT -le 0 ]; do
|
|
KARAF_LOG=$(find $ONOS_HOME -type f -name karaf.log)
|
|
if [ $KARAF_LOG ]; then
|
|
tail -f $KARAF_LOG
|
|
return
|
|
fi
|
|
RETRY_COUNT=$[$RETRY_COUNT-1]
|
|
sleep 1
|
|
done
|
|
echo "Fail to open karaf.log"
|
|
|