#!/bin/bash
# -----------------------------------------------------------------------------
# Checks if ONOS bits are available in preparation for install.
# -----------------------------------------------------------------------------

[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults

# If the BUCK-built bits are newer than the Maven-built bits, use the former.
BUCK_TAR=$ONOS_ROOT/buck-out/gen/tools/package/onos-package/onos.tar.gz
if [ -f $BUCK_TAR -a $BUCK_TAR -nt $ONOS_TAR ]; then
    rm -f $ONOS_TAR >/dev/null; ln -s $BUCK_TAR $ONOS_TAR
fi

ls -l $ONOS_TAR  && cksum $ONOS_TAR
if [ $? -ne 0 ]; then
   echo "ONOS archive is unreadable" && exit 1
fi

tar tzf ${ONOS_TAR} >/dev/null
if [ $? -ne 0 ]; then
  echo "ONOS archive is not a valid tar file" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q onos-${ONOS_POM_VERSION}.*/VERSION
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain the proper version file" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q apache-karaf-3.0.5
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain karaf" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q apps/org.onosproject.openflow
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain openflow app" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q onos-core-net
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain onos-core-net" && exit 1
fi
