#!/bin/bash
# -----------------------------------------------------------------------------
# Builds dependencies and copies stratum_bmv2 binary to a remote node.
# -----------------------------------------------------------------------------

function _usage () {
cat << _EOF_
usage:
 $(basename $0) [node]

options:
- [node] : remote node to install Stratum on.

summary:
 Builds dependencies and copies stratum_bmv2 binary to a remote node.

 If [node] is not specified the default target is \$OCN.

 This script requires env STRATUM_BMV2_TAR to be set and to point to a tar file
 containing the following files (pre-built stratum_bmv2 binaries):
  - stratum/bazel-bin/stratum/hal/bin/bmv2/stratum_bmv2
  - stratum/stratum/hal/bin/bmv2/dummy.json

_EOF_
}

[[ "$1" = "-h" ]] && _usage && exit 0

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

[[ ! -f ${STRATUM_BMV2_TAR} ]] && echo "STRATUM_BMV2_TAR is not defined or points to an invalid file" && exit 1

md5cmd=''
md5cmdprm=''
case "$OSTYPE" in
  darwin*)  md5cmd='md5' ; md5cmdprm='-q' ;;
  *)        md5cmd='md5sum';;
esac

node=${1:-$OCN}
remote=${ONOS_USER}@${node}

stratumRoot="/home/${ONOS_USER}/stratum"
stratumExportLine="export STRATUM_ROOT=${stratumRoot}"
stratumMd5=$(${md5cmd} ${md5cmdprm} ${STRATUM_BMV2_TAR})
stratumInstalled="~/.stratum_bmv2_installed_${stratumMd5}"

p4ToolsScript=${ONOS_ROOT}/tools/dev/p4vm/install-p4-tools.sh
p4ToolsMd5=$(${md5cmd} ${md5cmdprm} ${p4ToolsScript})
p4ToolsInstalled="~/.stratum_deps_installed_${p4ToolsMd5}"

function do_deps {
    if ssh ${remote} stat "${p4ToolsInstalled}" \> /dev/null 2\>\&1 ; then
        echo "stratum deps already up-to-date on ${node}"
    else
        ssh ${remote} "sudo rm -f /tmp/install-p4-tools.sh"
        scp -qr ${p4ToolsScript} ${ONOS_USER}@[${node}]:/tmp/install-p4-tools.sh
        ssh -tt ${remote} "
            USE_STRATUM=true DEBUG_FLAGS=false FAST_BUILD=true CLEAN_UP=true \
                bash /tmp/install-p4-tools.sh bmv2 \
                && touch ${p4ToolsInstalled}
        "
    fi
}

function do_stratum_bin {
    if ssh ${remote} stat "${stratumInstalled}" \> /dev/null 2\>\&1 ; then
        echo "stratum_bmv2 already up-to-date on ${node}"
    else
        ssh ${remote} "sudo rm -f /tmp/stratum_bmv2.tar.gz"
        scp -qr ${STRATUM_BMV2_TAR} ${ONOS_USER}@[${node}]:/tmp/stratum_bmv2.tar.gz
        ssh -tt ${remote} "
            rm -rf ${stratumRoot} && \
            tar xvf /tmp/stratum_bmv2.tar.gz --directory /home/${ONOS_USER} \
            && touch ${stratumInstalled} \
            && grep -qF -- \"${stratumExportLine}\" ~/.bash_aliases || echo \"${stratumExportLine}\" >> ~/.bash_aliases
        "
    fi
}

do_deps
do_stratum_bin
