#!/bin/bash
# -----------------------------------------------------------------------------
# Print the configuration of an ONOS cell.
# -----------------------------------------------------------------------------

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

function print_usage {
    echo "Print the configuration of an ONOS cell."
    echo "If no arguments are specified, it will print the configuration for the default"
    echo "ONOS cell as specified in the 'ONOS_CELL' environmental variable."
    echo
    echo "Optional arguments:"
    echo "  [cell-name]       Print the configuration of 'cell-name'"
    echo "  [-h | --help]     Print this help"
}

if [ "${1}" = "-h" -o "${1}" = "--help" ]; then
    print_usage
    exit 0
fi

if [ -n "${1}" ]; then
    cell="${1}"
else
    if [ -z "${ONOS_CELL}" ]; then
        echo "Environmental variable 'ONOS_CELL' is not defined"
        exit 1
    else
        cell="${ONOS_CELL}"
    fi
fi

if [ ! -f $ONOS_ROOT/tools/test/cells/${cell} ]; then
    echo "No such cell: ${cell}"
    exit 1
fi

# Load the cell setup
. $ONOS_ROOT/tools/test/cells/${cell}

echo "ONOS_CELL=${ONOS_CELL}"
# get number of OC variables
max=$( env | egrep '^OC[0-9]+' | wc -l )
for n in $( seq 0 ${max} ); do
    ocn="OC${n}"
    if [ -n "${!ocn}" ]; then
        echo "$ocn=${!ocn}"
    fi
done
echo "OCN=${OCN}"
echo "OCT=${OCT}"
echo "OCI=${OCI}"
echo "ONOS_APPS=${ONOS_APPS}"
echo "ONOS_BOOT_FEATURES=${ONOS_BOOT_FEATURES}"
