From 13d05bc8458758ee39cb829098241e89616717ee Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Wed, 9 Sep 2015 22:15:21 -0700 Subject: ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60 Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd --- framework/src/onos/tools/test/bin/onos-group | 90 ++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 framework/src/onos/tools/test/bin/onos-group (limited to 'framework/src/onos/tools/test/bin/onos-group') diff --git a/framework/src/onos/tools/test/bin/onos-group b/framework/src/onos/tools/test/bin/onos-group new file mode 100755 index 00000000..150f9470 --- /dev/null +++ b/framework/src/onos/tools/test/bin/onos-group @@ -0,0 +1,90 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Allows a select group of commands to be sent to all ONOS instances in a cell. +# ----------------------------------------------------------------------------- + +set -o pipefail +IFS=$'\n' + +source ogroup-opts + +function err() { + printf '%s: %s: %s\n' "$(basename $0)" "$1" "$2" >&2 + usage >&2 + exit 1 +} + +function usage() { +cat << EOF + +usage: $(basename $0) + +Sends a command to all ONOS instances in the current cell. Currently supported +commands are: $GOPTS + +options: + [command] : A command to send to the instances. + help : Displays this message and exits. + +notes: + Hitting will display the options for $(basename $0). + +EOF +} + +# gets the utility name +function getcmd() { + # check that utility can be run in "batch-mode" + local isgopt=false + for c in $(printf '%s' "$GOPTS" | tr ' ' $'\n'); do + [ "$c" = "$1" ] && isgopt=true && break + done + if $isgopt ; then + printf 'onos-%s' "$1" + else + err 'unsupported command' "$1" + fi +} + +# early sanity check for instances/arguments +[ -z "$1" ] && usage && exit 0 + +OCIS=( $(env | sed -ne 's:OC[0-9]\{1,\}=\(.*\):\1 :g p' | sort -k1) ) +if [ -z "$OCIS" ]; then + printf "no controller instances, quitting early" >&2 && exit 0 +fi + +CMD_HELP=false +while [ $# -gt 0 ]; do + case "$1" in + 'help') + usage && exit 0 + ;; + '-'?) + err 'invalid flag' "$1" && exit 1 + ;; + *) + cmd=$(getcmd $1) || exit 1 + shift + # grab flags aimed at the utility being called. + argv=( $@ ) + args=() + for i in "${!argv[@]}"; do + # 'help' is a parameter for us; '-h' is for the command + [ "${argv[$i]}" = 'help' ] && break + [ "${argv[$i]}" = '-h' ] && CMD_HELP=true + args[$i]="${argv[$i]}" + shift + done + continue + ;; + esac + shift +done + +( $CMD_HELP ) && $cmd '-h' && exit 0 + +# TODO: verbose-mode and cleanup +for i in ${OCIS[@]}; do + ${cmd} $(echo ${args[@]}) "$i" 2>/dev/null & +done -- cgit 1.2.3-korg