#!/bin/ksh -p
# $Id: //depot/stable/explorer/tools/ssp#2 $
#
# Explorer Version:
EXP_VERSION=4.0
#

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=${0##*/}
which_gate_exit starfire $script default all

TEXT=`gettext "Not an SSP system"`
require "test -d /var/opt/SUNWssp" "${TEXT}"

# set env for System Service Processor, so root can run the command sys_id -d etc.
SSPBIN=/opt/SUNWssp/bin
PATH=$PATH:${SSPBIN}
SSPETC=/etc/opt/SUNWssp
SSPOPT=/opt/SUNWssp
SSPVAR=/var/opt/SUNWssp
SSPLOGGER=/var/opt/SUNWssp/adm
LD_LIBRARY_PATH=/opt/SUNWssp/lib:/usr/openwin/lib:/usr/lib
TCL_LIBRARY=/opt/SUNWssp/library/tcl
TK_LIBRARY=/opt/SUNWssp/library/tk
SCOTTY_LIBRARY=/opt/SUNWssp/library/scotty
TCLLIBPATH="/opt/SUNWssp/library/tcl /opt/SUNWssp/library/tk /opt/SUNWssp/library/scotty"
export PATH SSPETC SSPOPT SSPVAR SSPLOGGER LD_LIBRARY_PATH SUNW_HOSTNAME
export TCL_LIBRARY TK_LIBRARY SCOTTY_LIBRARY TCLLIBPATH

SSP_PRIVATE=${SSPVAR}/.ssp_private
SUNW_HOSTNAME=`cut -d: -f1 ${SSP_PRIVATE}/cb_config`
INITTAB=${INITTAB:-/etc/inittab}

get_file "~ssp/.postrc"                     ssp/postrc!
get_file "${SSPVAR}/*.out*"                 ssp/
get_file "$SSP_PRIVATE/cb_config"           ssp/
get_file "$SSP_PRIVATE/domain_config"       ssp/
get_file "$SSP_PRIVATE/ssp_resource"        ssp/
get_file "$SSP_PRIVATE/ssp_to_domain_hosts" ssp/
get_file "$SSP_PRIVATE/main_ssp_name"       ssp/
get_file "/var/tmp/autoconfig.log"          ssp/

get_dir  recursive ${SSPVAR}/adm            ssp/SUNWssp-adm
get_dir  recursive ${SSPVAR}/etc            ssp/SUNWssp-etc
get_dir  recursive ${SSPVAR}/data           ssp/SUNWssp-data
get_cmd  "${SSPBIN}/domain_status"          ssp/domain_status
get_cmd  "${SSPBIN}/showfailover"           ssp/

#
#  Check if we are on the main or spare ssp
#    Check domain_status first, then look in inittab (pre-3.1.1) or 
#    check for S99ssp (3.1.1) because S99ssp might be called something else
#
domain_status 2>&1 | egrep -s -e "domain_status: This command must run on the main SSP."
if [ "$?" = 1 ]; then
    SSP_STATION=main
elif egrep -s -e "^sp:234:respawn:.*ssp_startup.sh" $INITTAB
then
    SSP_STATION=main
elif [ -r /etc/rc2.d/S99ssp ]
then
    SSP_STATION=main
else
    SSP_STATION=spare
fi

# if we are on the main run the following
if [ "${SSP_STATION}" = "main" ]
then
    PLATFORM=`nawk -F: '{print $1}' $SSP_PRIVATE/cb_config`

    # Get long listing of /tftpboot
    get_cmd "/usr/bin/ls -lia /tftpboot" ssp/ls-lia_tftpboot

    # get platform config/tuning data (blacklist)
    get_dir "$SSPVAR/etc/$PLATFORM" ssp/etc/${PLATFORM}

    # now get platform configuration/status info
    get_cmd "${SSPBIN}/fan"         ssp/fan
    get_cmd "${SSPBIN}/power"       ssp/power
    get_cmd "${SSPBIN}/sys_clock"   ssp/sys_clock

    get_cmd "${SSPBIN}/hostinfo -F" ssp/hostinfo/hostinfo-F
    get_cmd "${SSPBIN}/hostinfo -S" ssp/hostinfo/hostinfo-S
    get_cmd "${SSPBIN}/hostinfo -h" ssp/hostinfo/hostinfo-h
    get_cmd "${SSPBIN}/hostinfo -p" ssp/hostinfo/hostinfo-p
    get_cmd "${SSPBIN}/hostinfo -t" ssp/hostinfo/hostinfo-t

    # new get system board && i/o module details from the platform
    for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    do
	get_cmd "${SSPBIN}/board_id -b io -n $i" ssp/board_id/board_id-bio_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b mem -n $i" ssp/board_id/board_id-bmem_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b sb -n $i" ssp/board_id/board_id-bsb_$i
	sleep 10

	# For compatibility, put all command output in summary files
	echo_file  ssp/board_id/board_id-bio.out "i/o board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bio_$i.out | echo_file ssp/board_id/board_id-bio.out

	echo_file  ssp/board_id/board_id-bmem.out "memory board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bmem_$i.out | echo_file ssp/board_id/board_id-bmem.out

	echo_file  ssp/board_id/board_id-bsb.out "system board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bsb_$i.out | echo_file ssp/board_id/board_id-bsb.out

    done

    # new get some control board details from the platform
    for i in 0 1
    do
	get_cmd "${SSPBIN}/board_id -b cb -n $i" ssp/board_id/board_id-bcb_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b csb -n $i" ssp/board_id/board_id-bcsb_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b cp -n $i" ssp/board_id/board_id-bcp_$i
	sleep 10

	# For compatibility, put all command output in summary files
	echo_file  ssp/board_id/board_id-bcb.out "control board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcb_$i.out | echo_file ssp/board_id/board_id-bcb.out

	echo_file  ssp/board_id/board_id-bcsb.out "centerplane support board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcsb_$i.out | echo_file ssp/board_id/board_id-bcsb.out

	echo_file  ssp/board_id/board_id-bcp.out "centerplane ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcp_$i.out | echo_file ssp/board_id/board_id-bcp.out
    done

    # get the prom info for each cb
    for i in `nawk -F: '{print $3" "$5}' $SSP_PRIVATE/cb_config`
    do
	echo_file  ssp/cb_prom-r.out "\nControl Board ${i}"
	get_cmd "${SSPBIN}/cb_prom -r -h $i" ssp/cb_prom-r
    done

    # Get domain data
    for i in `nawk -F: '{print $1}' $SSP_PRIVATE/domain_config`
    do
	SUNW_HOSTNAME=$i
	export SUNW_HOSTNAME

	# Do sys_id -d
	get_cmd "${SSPBIN}/sys_id -d" "ssp/sys_id-d.domain/${SUNW_HOSTNAME}"

	# Get domain config/tuning data (postrc)
	get_dir "${SSPVAR}/etc/${PLATFORM}/${SUNW_HOSTNAME}" "ssp/etc/${SUNW_HOSTNAME}"

	# Do check_host
	echo_file  ssp/check_host.out "\nDomain ${SUNW_HOSTNAME}"
	get_cmd "${SSPBIN}/check_host" ssp/check_host
    done
fi
 
