#!/bin/bash
### BEGIN INIT INFO
# Provides: hmcConfig
# Required-Start: $local_fs
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Provide HMC Configuration setup
# Description: Query VPD to determine configuration of HMC
### END INIT INFO


x=`type -p java 2>/dev/null`
if [ "$x" != "" ]
then
    JAVAPATH=`/usr/bin/dirname $x`
fi
# Source function library.
. /etc/rc.status
rc_reset

case "$1" in
    start)
	/opt/hsc/sbin/UsbConfig
        /etc/init.d/syslog start
        mount /mnt/upgrade
        if [ -f /mnt/upgrade/doRestore ]
        then
            if [ -f /mnt/upgrade/SaveHSCSystemUpgradeData.tar ]
            then
                cd /
                tar -xf/mnt/upgrade/SaveHSCSystemUpgradeData.tar /var/hsc/tmp/cimomcfg.properties.reboot
            fi
        fi
        umount /mnt/upgrade
        if [ -f /var/hsc/tmp/cimomcfg.properties.reboot ]
        then
            sed -e '/^ *SocketProvider *=/d' /opt/hsc/data/cim.properties > /tmp/_cimomcfg.tmp
            cat /tmp/_cimomcfg.tmp /var/hsc/tmp/cimomcfg.properties.reboot > /opt/hsc/data/cim.properties
            rm -f /tmp/_cimomcfg.tmp
            rm -f /var/hsc/tmp/cimomcfg.properties.reboot
        fi

        # check if there is a .resetSysConn flag.
        if [ -f /var/hsc/tmp/.resetSysConn ]; then
           # clear files: dpchd.lease, HmcNetConfig, bpcHosts, .removed
           if [ -f /var/lib/dhcp/dhcpd.leases ]; then
              /bin/echo > /var/lib/dhcp/dhcpd.leases
           fi
           if [ -f /opt/hsc/data/HmcNetConfig ]; then
              /bin/echo "HWS -trace=3" > /opt/hsc/data/HmcNetConfig
           fi
           if [ -f /opt/hsc/data/bpcHosts ]; then
              /bin/rm -f /opt/hsc/data/bpcHosts
           fi
           if [ -f /opt/hsc/data/.hmc/.removed ]; then
              /bin/rm -f /opt/hsc/data/.hmc/.removed
           fi
           /bin/rm -f /var/hsc/tmp/.resetSysConn
        fi

        # Remove the ticket database used by the CCFW Manager.
        rm -f /opt/ccfw/data/LoginMOM.db

        # Record HMC state change utilization event
        /opt/hsc/sbin/readHmcDownTime
	# Obtain VPD and cache it
	/opt/hsc/bin/cacheHMCVPD

        if [ -f /opt/hsc/data/hmcConfigured ]
        then
            exit 0
        fi
        echo -n "Querying vital product data"
	configured=1
        cmodel=`cat /opt/hsc/data/hmcmodel.dat`
        export LD_LIBRARY_PATH=/usr/lib:/opt/hsc/lib:$LD_LIBRARY_PATH
        CLASSPATH=/usr/websm/codebase/pluginjars/aca.jar:/usr/websm/codebase/pluginjars/ccfw.jar:/usr/websm/codebase/pluginjars/auifw.jar:/opt/hsc/:/usr/websm/codebase/pluginjars/hsc.jar:/usr/websm/codebase/pluginjars/hsc_bundles.jar:/usr/websm/codebase/pluginjars/sniacimom.jar:/usr/websm/codebase/pluginjars/xerces.jar:/usr/websm/codebase/wsm.jar:$CLASSPATH
        export CLASSPATH
        export PATH=$JAVAPATH:$PATH

        x=`/opt/hsc/bin/getHMCVPD`
        if [ "$x" = "" ]
        then
            x=`cat /opt/hsc/data/hmcmodel.dat`
        fi
 
        case "$x" in
            7315C01)
                # 7315-C01 must be treated like 6792
                tar -xf /opt/hsc/data/6792.tar
                ;;
            6792*)
                tar -xf /opt/hsc/data/6792.tar
                ;;
            6578* | 6579*)
                tar -xf /opt/hsc/data/6578.tar
                ;;
            *)
		if [ -f /opt/hsc/data/$x.tar ]
		then
                  tar -xf /opt/hsc/data/$x.tar
		else
		   echo ""
                   echo "   !!!!!Unable to determine valid HMC Model type!!!!!"
		   echo "        You may not have the correct BIOS installed."
		   echo "        Model type detected : $x"
		   configured=0
		   sleep 2
		fi
                ;;
        esac
	# Make sure it is touched so it is backed up
	/usr/bin/touch /etc/X11/XF86Config
        # Need to determine HMC VPD due to CIM jar files dependency
        hmcModel=`/opt/hsc/bin/getHMCVPD -a`
        if [ $? -eq 0 ]
        then
            grep HMC_MTMS /opt/hsc/data/hmcconfig.def 2>&1 1>>/dev/null
            if [ $? -eq 1 ]
            then
                echo "HMC_MTMS="$hmcModel >> /opt/hsc/data/hmcconfig.def
            else
                /bin/sed -e '/HMC_MTMS=*/d' /opt/hsc/data/hmcconfig.def >/tmp/saveConfig.def
                cp /tmp/saveConfig.def /opt/hsc/data/hmcconfig.def
                echo "HMC_MTMS="$hmcModel >> /opt/hsc/data/hmcconfig.def
                rm -f /tmp/saveConfig.def
            fi
        fi
	if [ "$configured" == "1" ]
	then
          touch /opt/hsc/data/hmcConfigured
	fi
        # Restore image from other system
        if [ -f /opt/hsc/data/.clearNodeID ]; then
           /usr/sbin/rsct/install/bin/recfgct >/dev/null
           if [ $? -eq 0 ]; then
              rm -f /opt/hsc/data/.clearNodeID
           fi
        fi
	
	rc_status -v
        ;;
     stop)
	rc_status -v
        ;;
     *)
        echo "Usage: hmcConfig {start|stop}"
        exit 1
        ;;
esac
rc_exit
exit 0

