#! /pkg/bin/ksh
# ----------------------------------------------------------------------
# show_tech_policy_util -- Policy show tech-support script utilities
#
# October 2013, Andy Karch
#
# Copyright (c) 2013-2015 by cisco Systems, Inc.
# All rights reserved.
#-----------------------------------------------------------------------

################################################################
# Policy XOS
################################################################

display_policy_xos_rp() {
    policy_xos_rp_exec[1]='show xos errors'
    policy_xos_rp__ksh[1]='show_xos_command gen_error_traces'

    policy_xos_rp_exec[2]='show xos traces policy'
    policy_xos_rp__ksh[2]='show_xos_command policy_event_traces'

    policy_xos_rp__ksh[3]=''

    exec_commands policy_xos_rp
}

################################################################
# Policy SHIM
################################################################

display_policy_shim_sys() {
    policy_shim_sys_exec[1]='show policy shim process '$1' clients'
    policy_shim_sys__ksh[1]='policymgr_xos_shim_show -P '$1' -T3'

    policy_shim_sys_exec[2]='show policy shim process '$1' handles chkpt'
    policy_shim_sys__ksh[2]='policymgr_xos_shim_show -P '$1' -T4'

    policy_shim_sys_exec[3]='show policy shim process '$1' handles class'
    policy_shim_sys__ksh[3]='policymgr_xos_shim_show -P '$1' -T7'

    policy_shim_sys_exec[4]='show policy shim process '$1' handles cmap'
    policy_shim_sys__ksh[4]='policymgr_xos_shim_show -P '$1' -T8'

    policy_shim_sys_exec[5]='show policy shim process '$1' handles database'
    policy_shim_sys__ksh[5]='policymgr_xos_shim_show -P '$1' -T0'

    policy_shim_sys_exec[6]='show policy shim process '$1' iclass'
    policy_shim_sys__ksh[6]='policymgr_xos_shim_show -P '$1' -T1'

    policy_shim_sys_exec[7]='show policy shim process '$1' stats manager'
    policy_shim_sys__ksh[7]='policymgr_xos_shim_show -P '$1' -T2'

    policy_shim_sys_exec[8]='show policy shim process '$1' config failed'
    policy_shim_sys__ksh[8]='policymgr_xos_shim_show -P '$1' -Ta -l 9'

    policy_shim_sys__ksh[9]=''

    exec_commands policy_shim_sys
}

display_policy_shim_rp() {
    policy_shim_rp_exec[1]='show policy shim process '$1' trace all'
    policy_shim_rp__ksh[1]='policymgr_xos_shim_show_ltrace -P '$1' -A'

    policy_shim_rp_exec[2]='show policy shim process '$1' trace counters unique events'
    policy_shim_rp__ksh[2]='policymgr_xos_shim_show_ltrace -P '$1' -V 1'

    policy_shim_rp_exec[3]='show policy shim process '$1' trace counters unique errors'
    policy_shim_rp__ksh[3]='policymgr_xos_shim_show_ltrace -P '$1' -E 1'

    policy_shim_rp__ksh[4]=''

    exec_commands policy_shim_rp
}

################################################################
# Policy Mgr
################################################################

display_policy_mgr_sys() {

    policy_mgr_sys_exec[0]='show policymgr summary'
    policy_mgr_sys__ksh[0]='policymgr_show -F'

    policy_mgr_sys_exec[1]='show policymgr transient summary'
    policy_mgr_sys__ksh[1]='policymgr_show -F -T'

    policy_mgr_sys__ksh[2]=''

    exec_commands policy_mgr_sys
}

display_policy_mgr_sys_cmap() {
    if [[ "transient" = $2 ]]; then
        POLICY_OPTS="-T"
    else
        POLICY_OPTS=""
    fi

    policy_mgr_sys_cmap_exec[1]='show class-map '$2' list type '$1
    policy_mgr_sys_cmap__ksh[1]='policymgr_show -H -i '$1' '$POLICY_OPTS

    policy_mgr_sys_cmap_exec[2]='show class-map '$2' type '$1
    policy_mgr_sys_cmap__ksh[2]='policymgr_show -R -i '$1' '$POLICY_OPTS

    policy_mgr_sys_cmap_exec[3]='show class-map '$2' reference type '$1
    policy_mgr_sys_cmap__ksh[3]='policymgr_show -K -i '$1' '$POLICY_OPTS

    policy_mgr_sys_cmap__ksh[4]=''

    exec_commands policy_mgr_sys_cmap
}

display_policy_mgr_sys_pmap() {
    if [[ "transient" = $2 ]]; then
        POLICY_OPTS="-T"
    else
        POLICY_OPTS=""
    fi

    policy_mgr_sys_pmap_exec[1]='show policy-map '$2' list type '$1
    policy_mgr_sys_pmap__ksh[1]='policymgr_show -G -b '$1' '$POLICY_OPTS

    policy_mgr_sys_pmap_exec[2]='show policy-map '$2' type '$1
    policy_mgr_sys_pmap__ksh[2]='policymgr_show -L -b '$1' '$POLICY_OPTS

    policy_mgr_sys_pmap_exec[3]='show policy-map '$2' targets type pbr summary'
    policy_mgr_sys_pmap__ksh[3]='policymgr_show -A -b '$1' -M '$POLICY_OPTS

    policy_mgr_sys_pmap_exec[4]='show policy-map '$2' targets type '$1
    policy_mgr_sys_pmap__ksh[4]='policymgr_show -A -b '$1' '$POLICY_OPTS

    policy_mgr_sys_pmap__ksh[5]=''

    exec_commands policy_mgr_sys_pmap
}

display_policy_mgr_rp() {
    policy_mgr_rp_exec[1]='show processes policymgr_rp'
    policy_mgr_rp__ksh[1]='sysmgr_show -o -p policymgr_rp'

    policy_mgr_rp_exec[2]='show policymgr process trace all'
    policy_mgr_rp__ksh[2]='show_ltrace_policymgr -A'

    policy_mgr_rp_exec[3]='show policymgr process trace both'
    policy_mgr_rp__ksh[3]='show_ltrace_policymgr -W -U'

    policy_mgr_rp_exec[4]='show policymgr process trace critical'
    policy_mgr_rp__ksh[4]='show_ltrace_policymgr -U'

    policy_mgr_rp_exec[5]='show policymgr process trace intermittent'
    policy_mgr_rp__ksh[5]='show_ltrace_policymgr -W'

    policy_mgr_rp_exec[6]='show policymgr ui trace'
    policy_mgr_rp__ksh[6]='policymgr_ui_show_ltrace -A'

    policy_mgr_rp__ksh[7]=''

    exec_commands policy_mgr_rp
}

display_policy_mgr_rplc() {
    policy_mgr_rplc_exec[1]='show app-obj trace'
    policy_mgr_rplc__ksh[1]='show_app_obj_ltrace'

    policy_mgr_rplc__ksh[2]=''

    exec_commands policy_mgr_rplc
}

display_policy_mgr_rplc_client() {
    policy_mgr_rplc_client_exec[1]='show policy-lib trace all client '$3
    policy_mgr_rplc_client__ksh[1]='show_ltrace_pllib -C '$3' -U -W'

    policy_mgr_rplc_client_exec[2]='show app-obj db class_map_'$1'_db proc '$3
    policy_mgr_rplc_client__ksh[2]='show_app_obj_db -d class_map_'$1'_db -j '$3

    policy_mgr_rplc_client_exec[3]='show app-obj db policy_map_'$2'_db proc '$3
    policy_mgr_rplc_client__ksh[3]='show_app_obj_db -d policy_map_'$2'_db -j '$3

    policy_mgr_rplc_client__ksh[4]=''

    exec_commands policy_mgr_rplc_client
}
