#!/pkg/bin/ksh
#------------------------------------------------------------------
# show tech-support ssm  command
#
# July 2011, chandrashekhar Jamadarkhani(cjamadar) 
#
# Copyright (c) 2006-2011, 2020 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------

#
# Include the standard show tech-support functions
#
. /pkg/bin/show_tech_main_fragment

__cardtype="unspecified"

local_node_name=`uname -n`
local_nodeid=`node_conversion -i $local_node_name`

#
# Find the process ID of the ssm_process process
#
ssm_process_pid=`pidin | grep ssm_process | cut -c1-8 | head -n 1`

#echo "nodename: $int_node_name, nodeid: $local_nodeid, location:$location,"
echo "pid:$ssm_process_pid"

#
# Commands to run, grouped by location/plane. Collect the traces first, as 
# these are more likely to wrap.
#

#
# Local Plane Commands
#
local_traces_exec[1]='show ssm trace general '
local_traces__ksh[1]='show_ssm_trace -F ssm/general '

local_traces_exec[2]='show ssm trace healthcheck'
local_traces__ksh[2]='show_ssm_trace -F ssm/hc'

local_traces_exec[3]='show ssm trace lib errors '
local_traces__ksh[3]='show_ssm_trace -F ssm/lib_errors '
local_traces_exec[4]='show ssm trace lib events '
local_traces__ksh[4]='show_ssm_trace -F ssm/lib_events'
local_traces_exec[5]='show ssm trace lib states '
local_traces__ksh[5]='show_ssm_trace -F ssm/lib_states'
local_traces_exec[6]='show ssm trace transition '
local_traces__ksh[6]='show_ssm_trace -F ssm/transitions'
local_traces_exec[7]='show ssm trace api '
local_traces__ksh[7]='show_ssm_trace -F ssm/api'
local_traces_exec[8]='show ssm trace lib api '
local_traces__ksh[8]='show_ssm_trace -F ssm/lib_api'

local_exec[1]='show ssm alarm location $location'
local__ksh[1]='show_ssm -a -l $local_nodeid'
local_exec[2]='show ssm consumer all location $location'
local__ksh[2]='show_ssm_consumer -c all -i $local_nodeid'
local_exec[3]='show ssm consumer statistics location $location'
local__ksh[3]='show_ssm_consumer -s -i $local_nodeid'
local_exec[4]='show ssm detail all location $location'
local__ksh[4]='show_ssm -d all -l $local_nodeid'
local_exec[5]='show ssm summary location $location'
local__ksh[5]='show_ssm -s -l $local_nodeid'
local_exec[5]='run ss_showall'
local__ksh[5]='ss_showall'

#
# Shared Plane Commands
#

shared_exec[1]="show running-config"
shared__ksh[1]='nvgen -c -l 1 -t 1 -o 1'
shared_exec[2]="show logging"
shared__ksh[2]='show_logging'
shared_exec[3]="show version"
shared__ksh[3]='show_version'

#
# process Commands
#
process_exec[1]='show processes blocked location $location'
process__ksh[1]='show_processes -b -n $local_nodeid'
process_exec[2]="follow process $ssm_process_pid iteration 1"
process__ksh[2]="attach_process -p $ssm_process_pid -i 1"


#
#   -t == SYS :  shared plane.
#   -t != SYS :  local plane.
#

#echo "args: $@"

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


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

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



#
# Our display function
#
display() {
    #
    # Display a header
    #
    print_main_heading "show tech-support SSM on location $location"

    if [ "$__cardtype" == "SYS" ]; then

        #
        # run the shared plane commands
        #
        exec_commands shared

    else

        #
        # run the local plane commands
        #
        exec_commands local_traces
        exec_commands local
        exec_commands process

    fi

    #
    # Display a footer
    #
    print_main_heading "show tech-support SSM complete"

}

#
# Use the standard show tech-support infra to call our display function and
# send the output to console or file
#
. /pkg/bin/show_tech_file_fragment
