#!/bin/sh

progressfile="/mnt/ramdisk/getperf.progress"
lockfile="/mnt/ramdisk/is.getperf"

msg()
{
    echo "$1"
    echo "$1" >> $progressfile
}

msgPartialSize()
{
    if [ -f $1 ]; then
        fs=$(stat -c%s $1)
        msg "Size: $fs bytes"
    fi
}

progressmonitor /mnt/ramdisk/getperf.progress &
PMPID=$!

# =====================================================================
# No matter what, run this function on exit
# =====================================================================
exitTrapFcn()
{
    local SUCCESS=$?

    rm /mnt/ramdisk/do.*

    return $SUCCESS
}
trap exitTrapFcn SIGINT SIGTERM EXIT

if [ -f $lockfile ]
then
    msg "**************************************************************************"
    msg "*"
    msg "* ERROR: There is a get perf operation already in progress."
    msg "*        Please reboot this Management Controller if this error persists."
    msg "*"
    msg "**************************************************************************"
    msg "RETURN_CODE: 12"
    touch /mnt/ramdisk/perf
    exit 1
else
    touch $lockfile
    cd /mnt/ramdisk
    source /app/etc/app.env

    touch /mnt/ramdisk/getperf.progress
    progressmonitor /mnt/ramdisk/getperf.progress &
    PMPID=$!

    inputparam=$1
    perfSpecStr1=""
    perfSpecStr2=""
    perfSpecStr3=""
    pattern1=perf:
    pattern2=perf-disk:
    pattern3=perf-pool:



    if [ "$inputparam" == "perf" ]
    then
        msg "Getting performance data for disks"
        msg "###################################################"
        su -c "wrapcli --cmd 'show disk-statistics historical all filename  /mnt/ramdisk/$1'" -s /bin/sh admin
    elif [ "$inputparam" == "perf-disk" ]
    then
        msg "Getting performance data for disks"
        msg "###################################################"
        su -c "wrapcli --cmd 'show disk-statistics historical all filename  /mnt/ramdisk/$1'" -s /bin/sh admin
    elif [ "$inputparam" == "perf-pool" ]
    then
        msg "Getting performance data for pools"
        msg "###################################################"
        su -c "wrapcli --cmd 'show pool-statistics historical all filename  /mnt/ramdisk/$1'" -s /bin/sh admin
    else
        perfSpecStr1="${inputparam#$pattern1}"
        perfSpecStr2="${inputparam#$pattern2}"
        perfSpecStr3="${inputparam#$pattern3}"

        if [ "$perfSpecStr1" ] && [ "$inputparam" != "$perfSpecStr1" ]
        then
            msg "About to get disk performance data for the specification $perfSpecStr1"
            msg "###################################################"
            su -c "wrapcli --cmd 'show disk-statistics historical time-range $perfSpecStr1  all filename  /mnt/ramdisk/$1' --show" -s /bin/sh admin
        elif [ "$perfSpecStr2" ]  && [ "$inputparam" != "$perfSpecStr2" ]
        then
            msg "About to get disk performance data for the specification $perfSpecStr2"
            msg "###################################################"
            su -c "wrapcli --cmd 'show disk-statistics historical  time-range $perfSpecStr2   all filename  /mnt/ramdisk/$1' --show" -s /bin/sh admin
        elif [ "$perfSpecStr3" ]   && [ "$inputparam" != "$perfSpecStr3" ]
        then
            msg "About to get pool  performance data for the specification $perfSpecStr3"
            msg "###################################################"
            su -c "wrapcli --cmd 'show pool-statistics historical  time-range $perfSpecStr3  all filename  /mnt/ramdisk/$1' --show" -s /bin/sh admin
        else
            msg "Performance Specification string is empty.Please provide valid specification and try again."
            msg "RETURN_CODE: 12"
            rm -rf $lockfile
            kill -9 $PMPID
            exit 0
        fi
    fi
    msg "get perf complete"
    msgPartialSize /mnt/ramdisk/$1

    msg "RETURN_CODE: 12"
    rm -rf $lockfile
    kill -9 $PMPID
    exit 0
fi
