#!/pkg/bin/ksh
# ---------------------------------------------------------------------
# show_tech_qos_pi - PI QOS specific show tech command
#
# October 2008, Sonal Agarwal
#
# Copyright (c) 2008-2009, 2012-2017 by cisco Systems, Inc.
# All rights reserved.
#--------------------------------------------------------------------

. /pkg/bin/show_tech_main_fragment


__cardtype="unspecified"

# Parse the arguments to the script.
while [ "$#" -gt "0" ]; do
    case "$1" in
        -t) __cardtype="$2"; shift 2;;
        *)  default_parser_function "$@"; shift $#;;
    esac
done

if [ "$__filename" = "unspecified" ]; then
    echo "show_tech_qos_pi: output file not specified"
    exit
fi

if [ "$__cardtype" == "unspecified" ]; then
    __cardtype=`node_type`
fi

# ***********************************************************
#  Show commands to be run by the show tech-support commands
# ***********************************************************

#############################################################
# Show commands that run once per system
sys_show_exec[1]='show version'

if [ "$platform" == "panini" ]; then
    sys_show__ksh[1]='ng_show_version'
else
    sys_show__ksh[1]='show_version'
fi

sys_show_exec[2]='show logging'
sys_show__ksh[2]='show_logging'
sys_show_exec[3]='show interfaces summary'
sys_show__ksh[3]='show_interface -a -o 0x3'
sys_show_exec[4]='show interfaces brief'
sys_show__ksh[4]='show_interface -a -o 0x2'
sys_show_exec[5]='show running-config'
sys_show__ksh[5]='nvgen -c -l 1 -t 1 -o 1'
sys_show_exec[6]='show platform'

if [ "$platform" == "panini" ]; then
    sys_show__ksh[6]='show_platform_sysdb'
elif [ "$platform" == "viking" ]; then
    sys_show__ksh[6]='show_platform_vkg -e'
elif [ "$platform" == "hfr" ]; then
    sys_show__ksh[6]='shelfmgr_show_hfr -e'
else
    sys_show__ksh[6]='show_platform'
fi

sys_show_exec[7]='show policy-map targets'
sys_show__ksh[7]='policymgr_show -A -B 0x1'
sys_show_exec[8]='show im statistics client detail location all'
sys_show__ksh[8]='im_show stats-client -l 0x3 -a'
sys_show_exec[9]='show im status'
sys_show__ksh[9]='im_show status'
sys_show_exec[10]='show im resource-descriptions detail location all'
sys_show__ksh[10]='im_show resource-descriptions -l 0x3 -a'
sys_show_exec[11]='show snmp mib statistics'
sys_show__ksh[11]='snmp_lib_show -m'
sys_show_exec[12]='show snmp mib access time group interface '
sys_show__ksh[12]='snmp_lib_show -a -t -g interface'
sys_show_exec[13]='show qos-ma database nv satellite all '
sys_show__ksh[13]='qos_ma_show_db satellite -a'
sys_show_exec[14]='show qos-ma database nv interface all '
sys_show__ksh[14]='qos_ma_show_db interface -a'
sys_show_exec[15]='show qos status interface all nv'
sys_show__ksh[15]='qos_ma_show_status -x -v'
sys_show_exec[16]='show im database brief location all'
sys_show__ksh[16]='im_show database -l 0x1 -a'
#End
sys_show__ksh[17]=''
# Trace
sys_trace_exec[1]='show policymgr process trace all location all'
sys_trace__ksh[1]='show_ltrace_policymgr -i all -A'
sys_trace_exec[2]='show policy-lib trace all location all'
sys_trace__ksh[2]='show_ltrace_pllib -i all -A'
sys_trace_exec[3]='show qos-lib trace client qos_ea both location all'
sys_trace__ksh[3]='qos_lib_show_ltrace -i all -C qos_ea -W -U'
sys_trace_exec[4]='show qos-lib trace client qos_ma_ea both location all'
sys_trace__ksh[4]='qos_lib_show_ltrace -i all -C qos_ma_ea -W -U'
sys_trace_exec[5]='show qos-lib trace client qos_ma both location all'
sys_trace__ksh[5]='qos_lib_show_ltrace -i all -C qos_ma -W -U'
sys_trace_exec[6]='show qos-ma trace location all'
sys_trace__ksh[6]='show_qos_ma_ltrace -i all'
sys_trace_exec[7]='show app-obj trace location all'
sys_trace__ksh[7]='show_app_obj_ltrace -i all'
sys_trace_exec[8]='show qos-ma trace slow-op location all'
sys_trace__ksh[8]='show_qos_ma_ltrace -i all -U'
sys_trace_exec[9]='show snmp trace cbqosmib location all'
sys_trace__ksh[9]='cbqosmib_show_ltrace -i all'
sys_trace_exec[10]='show snmp trace cbqosmib slow-op location all'
sys_trace__ksh[10]='cbqosmib_show_ltrace -i all -U'

if [ "$platform" == "panini" ]; then
	sys_trace_exec[11]='show qos ea trace all location all'
else
	sys_trace_exec[11]='show qos-ea trace all location all'
fi

if [ "$platform" == "prp" ]; then
    sys_trace__ksh[11]='qos_ea_show_ltrace -M -i all'
else
    sys_trace__ksh[11]='qos_ea_show_ltrace -i all -A'
fi


if [ "$platform" == "panini" ]; then
	sys_trace_exec[12]='show qos ea trace errors location all'
else
	sys_trace_exec[12]='show qos-ea trace errors location all'
fi

if [ "$platform" == "viking" ]; then
    sys_trace__ksh[12]='qos_ea_show_ltrace -i all -U'
else
    sys_trace__ksh[12]='qos_ea_show_ltrace -i all -E'
fi

sys_trace_exec[13]='show im traces'
sys_trace__ksh[13]='im_show_trace'
sys_trace_exec[14]='show sysdb trace access shared-plane location all'
sys_trace__ksh[14]='sysdb_show_ltrace -i all -T access -s -R active'
sys_trace_exec[15]='show sysdb trace verification shared-plane location all'
sys_trace__ksh[15]='sysdb_show_ltrace -i all -T vrfn -s -R active'
sys_trace_exec[16]='show sysdb trace notification shared-plane location all'
sys_trace__ksh[16]='sysdb_show_ltrace -i all -T nfn -s -R active'
sys_trace_exec[17]='show snmp trace slow oids'
sys_trace__ksh[17]='show_snmp_lib_slow_trace -O'
sys_trace_exec[18]='show snmp trace timeout'
sys_trace__ksh[18]='snmp_show_ltrace -P'
sys_trace_exec[19]='show policymgr obj-lib trace critical'
sys_trace__ksh[19]='plmgr_obj_show_ltrace -C'
sys_trace_exec[20]='show policymgr obj-lib trace transaction'
sys_trace__ksh[20]='plmgr_obj_show_ltrace -T'
#End
sys_trace__ksh[21]=''


#############################################################
# Commands that run on RP and LC nodes

# Show commands
rplc_show_exec[1]='show im database brief location $location'
rplc_show__ksh[1]='im_show database -l 0x0 -h $fq_nodeid'
rplc_show_exec[2]='show app-obj db qos_ma_intf_db proc qos_ma location $location'
rplc_show__ksh[2]='show_app_obj_db -d qos_ma_intf_db -j qos_ma -h $fq_nodeid'

# Show procs
rplc_show_exec[3]='show process blocked'
if [ "$platform" == "panini" ]; then
    rplc_show__ksh[3]='sh_proc_ng_blocked'
else
    rplc_show__ksh[3]='show_processes -b'
fi

rplc_show_exec[4]='show processes qos_ma'
rplc_show__ksh[4]='sysmgr_show -o -p qos_ma'
rplc_show_exec[5]='show processes policymgr_rp'
rplc_show__ksh[5]='sysmgr_show -o -p policymgr_rp'
rplc_show_exec[6]='show processes qos_ea'
rplc_show__ksh[6]='sysmgr_show -o -p qos_ea'
rplc_show_exec[7]='show processes qos_ma_ea'
rplc_show__ksh[7]='sysmgr_show -o -p qos_ma_ea'
rplc_show_exec[8]='show qos-ma debug counters location $location'
rplc_show__ksh[8]='qos_ma_show_debug_counters -a $fq_nodeid'

rplc_show_exec[9]='show app-obj summary proc-name qos_ma location $location'
rplc_show__ksh[9]='show_app_obj_db -s -j qos_ma -h $fq_nodeid'

rplc_show_exec[10]='show app-obj db qos_ma_sat_intf_db proc-name qos_ma location $location'
rplc_show__ksh[10]='show_app_obj_db -d qos_ma_sat_intf_db -j qos_ma -h $fq_nodeid'

rplc_show_exec[11]='show app-obj db policy_map_qos_db proc-name qos_ma location $location'
rplc_show__ksh[11]='show_app_obj_db -d policy_map_qos_db -j qos_ma -h $fq_nodeid'

rplc_show_exec[11]='show app-obj db qos_ma_intf_db proc-name qos_ma location $location'
rplc_show__ksh[11]='show_app_obj_db -d qos_ma_intf_db -j qos_ma -h $fq_nodeid'

rplc_show_exec[11]='show app-obj db class_map_qos_db proc-name qos_ma location $location'
rplc_show__ksh[11]='show_app_obj_db -d class_map_qos_db -j qos_ma -h $fq_nodeid'

#End
rplc_show__ksh[12]=''

#############################################################
# Commands that run on all LCs
lc_exec[1]='show app-obj db policy_map_qos_db proc qos_ea location $location'
lc__ksh[1]='show_app_obj_db -d policy_map_qos_db -j qos_ea -h $fq_nodeid'
lc_exec[2]='show app-obj db policy_map_qos_db proc qos_ma_ea location $location'
lc__ksh[2]='show_app_obj_db -d policy_map_qos_db -j qos_ma_ea -h $fq_nodeid'
lc_exec[3]='show app-obj db class_map_qos_db proc qos_ea location $location'
lc__ksh[3]='show_app_obj_db -d class_map_qos_db -j qos_ea -h $fq_nodeid '
lc_exec[4]='show app-obj db class_map_qos_db proc qos_ma_ea location $location'
lc__ksh[4]='show_app_obj_db -d class_map_qos_db -j qos_ma_ea -h $fq_nodeid '
lc__ksh[5]='qos_ma_show_debug_counters -a $fq_nodeid'
#End
lc__ksh[6]=''

#############################################################
# Commands that run on all RPs
rp_exec[1]='show app-obj db policy_map_qos_db proc policymgr_rp location $location'
rp__ksh[1]='show_app_obj_db -d policy_map_qos_db -j policymgr_rp -h $fq_nodeid'
rp_exec[2]='show app-obj db class_map_qos_db proc policymgr_rp location $location'
rp__ksh[2]='show_app_obj_db -d class_map_qos_db -j policymgr_rp -h $fq_nodeid '
#End
rp__ksh[3]=''

#############################################################
# Commands that run on all SCs
sc__ksh[0]=''

#############################################################
# Commands that run on all SPs
sp__ksh[0]=''

#############################################################
# Script

display() {
    print_main_heading "show tech-support qos pi"
        
    if [ "$__cardtype" == "SYS" ]; then
        exec_commands sys_show
	exec_commands sys_trace
    else
        case "$__cardtype" in
        "RP")
            exec_commands rplc_show
            exec_commands rp
            ;;
        "DRP")
            exec_commands rplc_show
            exec_commands rp
            ;;
        "LC")
            exec_commands rplc_show
            exec_commands lc
            ;;
        esac
    fi

    print_main_heading "show tech-support complete"
}

# Run the appropriate function depending on the node specified and if a
# file is specified write the output to that file. We need to redirect
# stderr to stdout when writing to a file because some of the show
# commands output to stderr instead of stdout
. /pkg/bin/show_tech_file_fragment
