#!/pkg/bin/ksh
# ---------------------------------------------------------------------
# show_tech_gsp - Runs show commands for show tech-support gsp
#
# March 2004, Satisha Bhat
#
# Copyright (c) 2004-2013, 2017 by cisco Systems, Inc.
# All rights reserved.
#--------------------------------------------------------------------
. /pkg/bin/show_tech_main_fragment

location=""
all_cards=""
location_rsi="for all nodes"
cmd_idx=1
jid=-1
pid=-1

# Read in the arguments to the script, setting node_required and filename
# according to these arguments.
# Note that it is important for security reasons that users can only enter
# alphanumeric filenames and nodes and that anywhere calling this script must
# enforce this.
while [ $# -gt 0 ]; do
  case "$1" in
     -L) location="-L $2"; all_cards="-i $2"; shift 2;;
     -z) location_rsi="for $2 node"; shift 2;;
     -t) __cardtype="$2";            shift 2;;
     *)  default_parser_function "$@"; shift $#;;
  esac
done

if [[ $jid -eq -1 ]]; then
    test_jid=`sysmgr_show -p gsp | grep Job |  cut -f 2 -d ":" | cut -f 2 -d " "`
    test_pid=`sysmgr_show -p gsp | grep PID |  cut -f 2 -d ":" | cut -f 2 -d " "`
    if [[ $test_jid != "" ]]; then
       jid=$test_jid
       pid=$test_pid
    fi
fi

#
# logging Commands
#      
logging_exec[1]='show logging'
logging__ksh[1]='show_logging'
system_exec[1]='Get group rsi map in Admin plane'
system__ksh[1]='gsp_show -m -a'
system_exec[2]='Get group rsi map in LR plane'
system__ksh[2]='gsp_show -m'
system_exec[3]='Get group rsi map in LR Ctrl plane'
system__ksh[3]='gsp_show -m -l'
system_exec[4]='Show local rsi table'
system__ksh[4]='gsp_show -z'

# GSP traces and stats
trace_exec[$cmd_idx]="$cmd_idx. Displaying: LR Plane Media Info"
trace__ksh[$cmd_idx]='gsp_stats -p -g 2000 -a'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: ADMIN Plane Media Info"
trace__ksh[$cmd_idx]='gsp_stats -p -g 0 -a'

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: LR-CONTROL Plane Media Info"
trace__ksh[$cmd_idx]='gsp_stats -p -g 1000 -a'

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: GID 0 Info"
trace__ksh[$cmd_idx]='gsp_show -g 0'

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: GID 1000 Info"
trace__ksh[$cmd_idx]='gsp_show -g 1000'

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: GID 2000 Info"
trace__ksh[$cmd_idx]='gsp_show -g 2000'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp memory"
trace__ksh[$cmd_idx]='gsp_show -M -G -Q -D'

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp heap summary"
trace__ksh[$cmd_idx]='malloc_dump -A -s -p $jid'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp virtual memory"
trace__ksh[$cmd_idx]='pidin -p $pid mem'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: client stats"
trace__ksh[$cmd_idx]='gsp_show_api_stats'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: server stats"
trace__ksh[$cmd_idx]='gsp_show -c 0' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: packet trace"
trace__ksh[$cmd_idx]='gsp_packet_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp bootstrap slow trace"
trace__ksh[$cmd_idx]='gsp_bootstrap_slow_show_ltrace'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp bootstrap fast trace"
trace__ksh[$cmd_idx]='gsp_bootstrap_fast_show_ltrace'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gsp notif trace"
trace__ksh[$cmd_idx]='gsp_notif_show_ltrace'

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: create slow trace"
trace__ksh[$cmd_idx]='gsp_create_leave_slow_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: create fast trace"
trace__ksh[$cmd_idx]='gsp_create_leave_fast_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: promote demote trace"
trace__ksh[$cmd_idx]='gsp_promote_demote_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: timeout slow trace"
trace__ksh[$cmd_idx]='gsp_timeout_slow_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: timeout fast trace"
trace__ksh[$cmd_idx]='gsp_timeout_fast_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: limp fast trace"
trace__ksh[$cmd_idx]='gsp_limp_fast_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: limp slow trace"
trace__ksh[$cmd_idx]='gsp_limp_slow_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: error api trace"
trace__ksh[$cmd_idx]='gea_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: error minor trace"
trace__ksh[$cmd_idx]='gsp_error_minor_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: mem trace"
trace__ksh[$cmd_idx]='gsp_mem_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: event trace"
trace__ksh[$cmd_idx]='gsp_event_show_ltrace' 

cmd_idx=$(($cmd_idx+1))


trace_exec[$cmd_idx]="$cmd_idx. Displaying: ens slow trace"
trace__ksh[$cmd_idx]='gsp_ens_slow_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: ens fast trace"
trace__ksh[$cmd_idx]='gsp_ens_fast_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: nb fast trace"
trace__ksh[$cmd_idx]='gsp_nb_fast_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: nb slow trace"
trace__ksh[$cmd_idx]='gsp_nb_slow_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: flow control trace"
trace__ksh[$cmd_idx]='gsp_flowcontrol_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: gang trace"
trace__ksh[$cmd_idx]='gsp_gang_show_ltrace' 

cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: library slow ltrace for group 0"
trace__ksh[$cmd_idx]='show_ltrace_gsp -G 0 -S' 
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: library fast ltrace for group 0"
trace__ksh[$cmd_idx]='show_ltrace_gsp -G 0 -F' 
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: library slow ltrace for group 1"
trace__ksh[$cmd_idx]='show_ltrace_gsp -G 1 -S' 
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: library slow ltrace for group 2001"
trace__ksh[$cmd_idx]='show_ltrace_gsp -G 2001 -S' 
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: promotion demotion trace"
trace__ksh[$cmd_idx]='gsp_promote_demote_show_ltrace'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: admin plane stats summary per group"
trace__ksh[$cmd_idx]=' gsp_stats -g0 -n 500 -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr-ctrl plane stats summary per group"
trace__ksh[$cmd_idx]=' gsp_stats -g1000 -n 500 -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr plane stats summary per group"
trace__ksh[$cmd_idx]=' gsp_stats -g2000 -n 500 -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: admin plane stats receive summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -a -v'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr-ctrl plane stats receive summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -l -v'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr plane stats receive summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -v '
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: admin plane stats send summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -a -v -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr-ctrl plane stats send summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -l -v -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: lr plane stats send summary per node"
trace__ksh[$cmd_idx]='gsp_show_summary -v -s'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Executing: show health gsp"
trace__ksh[$cmd_idx]='show_health_gsp'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying ENS producer/consumer cache"
trace__ksh[$cmd_idx]='gsp_show -e'
cmd_idx=$(($cmd_idx+1))

trace_exec[$cmd_idx]="$cmd_idx. Displaying: cbp traces"
trace__ksh[$cmd_idx]='cbp_show_ltrace'

display() {
    if [ "$__cardtype" == "SYS" ]; then
        # Collect loggging 
        exec_commands logging
    else 
        exec_commands system 
        print_main_heading "show tech-support gsp"
        exec_commands trace
        print_main_heading "show tech-support gsp complete"
     fi
}

. /pkg/bin/show_tech_file_fragment

