#!/bin/sh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# rspc72V src/rspc/usr/sbin/cvfc/vfc_client_collect 1.2.1.1 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2008,2020 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 

if [ "$PASSNO" = 1 ]
then
    (( size = 0 ));
#   Number of VFC client adapters
    CADAPTERS=`lsdev -C| grep "Virtual Fibre"  | wc -l` ;

    if test "$CADAPTERS" -gt 0
    then

        #     estimated size of lscfg and lspath
        (( size = size + 2200 )) ;
        (( temp = 0 )) ;

        # number of children
        CCHILDREN=`lsdev -C| grep "hdisk" | wc -l`  ;

        ((temp = CADAPTERS * 250000))  ;
        ((size = size + temp ))  ;
        ((temp = CCHILDREN * 150000)) ;
        ((size = size + temp )) ;

        echo "VFC Client First pass $CADAPTERS" >> $SCRIPTLOG  ;
    fi

    # report size of adapters
    echo "$size" > $SCRIPTSIZE ;
    echo "VFC Client First pass reporting size= $size" >> $SCRIPTLOG  ;
    exit 0;
#end of first pass
fi
  
# Second pass,  return without error on first pass

if [[ -z $SNAPDIR ]]
then
    echo "ERROR: the script directory was not created  " >> $SCRIPTLOG
    exit 1
fi

#   number of VFC adapters
    CADAPTERS=`lsdev -C| grep "Virtual Fibre"  | wc -l`

if test "$CADAPTERS" -gt 0
then
    echo "Collecting Virtual FC  client config info in $SNAPDIR"  >> $SCRIPTLOG
    echo "client config info" >> $SNAPDIR/vfc_client.config

    lscfg >> $SNAPDIR/vfc_client.config
    echo "client MPIO config info" >> $SNAPDIR/vfc_client.config
    lspath >> $SNAPDIR/vfc_client.config
    errpt -a > $SNAPDIR/errpt.out

    /usr/sbin/ctctrl -D -c vfcdd -r -d $SNAPDIR

    VCLIENT=`lsdev -C| grep "Virtual Fibre" | cut -f 1 -d " "`

    echo "Collecting Virtual FC client data in $SNAPDIR"  >> $SCRIPTLOG

    echo "vfcs *; vfcs global; scsidisk;" | kdb > $SNAPDIR/vfc_common.state
    for i in $VCLIENT
    do
        echo "VFC NAME=$i"  > $SNAPDIR/$i.state
        echo "**************"  >> $SNAPDIR/$i.state

        echo "\nAP INFO:"  >> $SNAPDIR/$i.state
        echo "========"  >> $SNAPDIR/$i.state
        echo "vfcs $i" | kdb    >> $SNAPDIR/$i.state

        echo "\nAP CHANNELS:"  >> $SNAPDIR/$i.state
        echo "============"  >> $SNAPDIR/$i.state
        echo "vfcs ch $i" | kdb    >> $SNAPDIR/$i.state

        echo "\nAP THREADS:"  >> $SNAPDIR/$i.state
        echo "==========="  >> $SNAPDIR/$i.state
        echo "vfcs th $i" | kdb    >> $SNAPDIR/$i.state

        echo "\nAP ASYNC:"  >> $SNAPDIR/$i.state
        echo "============"  >> $SNAPDIR/$i.state
        echo "vfcs async $i" | kdb    >> $SNAPDIR/$i.state

        echo "\nAP Q/sub-Q DUMP:"  >> $SNAPDIR/$i.state
        echo "================"  >> $SNAPDIR/$i.state
        echo "vfcs queue $i -v" | kdb    >> $SNAPDIR/$i.state

        echo "\nAP active/pending cmds snapshot:"  >> $SNAPDIR/$i.state
        echo "================================"  >> $SNAPDIR/$i.state
        echo "vfcs blame $i" | kdb    >> $SNAPDIR/$i.state
    done
fi


SERVER=`lsdev -C| grep "vfchost"  | wc -l` ;
if test "$SERVER" -gt 0
then
echo "A VFC server may be configured in the client partition" >> $SNAPDIR/vfc_client.config;
fi