#!/bin/bash
# -----------------------------------------------------------------------------
# Collect ONOS logs from a single node or the current ONOS cell.
# -----------------------------------------------------------------------------

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

function print_usage {
    command_name=`basename $0`
    echo "Collect ONOS logs from a single node or the current ONOS cell."
    echo
    echo "Usage:     $command_name <TARGET> "
    echo "           $command_name [-h | --help]"
    echo "Options:"
    echo "    TARGET          The target of the command"
    echo "    [-h | --help]   Print this help"
    echo ""
    echo "TARGET:  <hostname | --cell>"
    echo "      hostname        Execute on the specified host name"
    echo "        --cell        Execute on the current ONOS cell"
    echo ""
}

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

# Select the target
if [ "${1}" = "--cell" ]; then
    nodes=$(env | sort | egrep "^OC[0-9]+" | cut -d= -f2)
else
    nodes=${1:-$OCI}
fi

# Execute the remote commands
for node in $nodes; do
    echo "fetching from ${node}..."
    mkdir -p ${node}
    scp -p $ONOS_USER@${node}:$ONOS_INSTALL_DIR/log/karaf.log* ./${node}/
done
