# Environmental defaults for ONOS build, package and test

# Root of the ONOS source tree
export ONOS_ROOT=${ONOS_ROOT:-~/onos}

# M2 repository and Karaf gold bits
export M2_REPO=${M2_REPO:-~/.m2/repository}
export KARAF_VERSION=4.2.14
export KARAF_ZIP=${KARAF_ZIP:-~/Downloads/apache-karaf-$KARAF_VERSION.zip}
export KARAF_TAR=${KARAF_TAR:-~/Downloads/apache-karaf-$KARAF_VERSION.tar.gz}
export KARAF_DIST=$(basename $KARAF_ZIP .zip)

# Add ONOS-specific directories to the exectable PATH
export PATH="$ONOS_ROOT/tools/dev/bin:$ONOS_ROOT/tools/test/bin:$PATH"
export PATH="$ONOS_ROOT/tools/build:$PATH"

# Fallback build number us derived from from the user name
export BUILD_NUMBER=${BUILD_NUMBER:-$(id -un)}

# ONOS Version and onos.tar.gz staging environment
export ONOS_POM_VERSION="3.0.0-SNAPSHOT"
export ONOS_VERSION=${ONOS_VERSION:-3.0.0.$BUILD_NUMBER}

# ONOS production bits (onos.tar.gz, onos.zip, onos.deb, onos.rpm) staging environment
export ONOS_BITS=onos-${ONOS_VERSION%~*}
export ONOS_STAGE_ROOT=${ONOS_STAGE_ROOT:-/tmp}
export ONOS_STAGE=$ONOS_STAGE_ROOT/$ONOS_BITS
export ONOS_DEB_ROOT=$ONOS_STAGE_ROOT/deb
export ONOS_DEB=$ONOS_STAGE.deb
export ONOS_RPM_ROOT=$ONOS_STAGE_ROOT/rpm
export ONOS_RPM=$ONOS_STAGE.rpm
export ONOS_RPM_VERSION=${ONOS_POM_VERSION//-/.}
export ONOS_TAR=$ONOS_STAGE.tar.gz
export ONOS_ZIP=$ONOS_STAGE.zip

BAZEL_TAR=$ONOS_ROOT/bazel-bin/onos.tar.gz
if [ -f $BAZEL_TAR ] && [ $BAZEL_TAR -nt $ONOS_TAR ]; then
    rm -f $ONOS_TAR >/dev/null; ln -s $BAZEL_TAR $ONOS_TAR
fi

# ONOS test bits (onos-test.tar.gz) staging environment
export ONOS_TEST_BITS=onos-test-${ONOS_VERSION%~*}
export ONOS_TEST_TAR=$ONOS_STAGE_ROOT/$ONOS_TEST_BITS.tar.gz

# ONOS admin bits (onos-admin.tar.gz) staging environment
export ONOS_ADMIN_BITS=onos-admin-${ONOS_VERSION%~*}
export ONOS_ADMIN_TAR=$ONOS_STAGE_ROOT/$ONOS_ADMIN_BITS.tar.gz

export ONOS_INSTALL_DIR="${ONOS_INSTALL_DIR:-/opt/onos}"     # Installation directory on remote
export ATOMIX_INSTALL_DIR="${ATOMIX_INSTALL_DIR:-/opt/atomix}" # Installation directory for Atomix
export OCI="${OCI:-localhost}"          # ONOS Controller Instance
export ONOS_USER="${ONOS_USER:-sdn}"    # ONOS user on remote system
export ONOS_GROUP="${ONOS_GROUP:-sdn}"  # ONOS group on remote system
export ONOS_PWD="${ONOS_PWD:-rocks}"                 # ONOS user password on remote system
export ONOS_SCENARIOS=$ONOS_ROOT/tools/test/scenarios

export ONOS_CLUSTER_KEY_FILE="/tmp/onos.jks"
export ONOS_CLUSTER_KEY_PASSWORD="changeit"
