#!/bin/sh

#
# Function to compare current and install image level based on V R M fields
#
function compareLevels {
    imageLevel=$1
    currLevel=$2

    imageVField=`echo $imageLevel | cut -d'.' -f1`
    currVField=`echo $currLevel | cut -d'.' -f1`
    if [ $imageVField -gt $currVField ]; then
        # V field of image level is greater. We can proceed for upgrade.
        return 0
    elif [ $imageVField -eq $currVField ]; then
        imageRField=`echo $imageLevel | cut -d'.' -f2`
        currRField=`echo $currLevel | cut -d'.' -f2`
        if [ $imageRField -gt $currRField ]; then
            # R field of image level is greater. We can proceed for upgrade.
            return 0
        elif [ $imageRField -eq $currRField ]; then
            imageMField=`echo $imageLevel | cut -d'.' -f3`
            currMField=`echo $currLevel | cut -d'.' -f3`
            if [ $imageMField -gt $currMField ]; then
                # M field of image level is greater. We can proceed for upgrade.
                return 0
            elif [ $imageMField -eq $currMField ]; then
                imageTimeStampField=`echo $imageLevel | cut -d'-' -f2`
                currTimeStampField=`echo $currLevel | cut -d'-' -f2`
                if [ $imageTimeStampField -ge $currTimeStampField ]; then
                    # TimeStamp field of image level is greater. We can proceed for upgrade.
                    return 0
                fi
            fi
        fi
    fi
    return 1

}


. /opt/hmc/bin/functions
valid=0
mkdir -p /tmp/mnt
mount -t ext3 -o rw /dev/${HDP}2 /tmp/mnt
cver=$(cat /tmp/mnt/etc/HmcBase | cut -d':' -f2 | cut -d'-' -f1)
for vl in `cat /opt/hmc/data/valid_upgrades`
do
       if [ "$cver" == "$vl" ]; then
          valid=1
          break
       fi
done

#
# Check if the image level is latest compared to current level 
#
if [ $valid -eq 1 ]; then
   image_level=`cat /opt/hmc/data/hmc_image_level | cut -d ':' -f2 | cut -d '-' -f1-2`
   echo "Image version = $image_level"
   curr_level=`cat /tmp/mnt/etc/hmc-release.d/version | grep BUILD_VERSION | cut -d'=' -f2`
   echo "Curr version = $curr_level"
   compareLevels $image_level $curr_level
   if [ $? -ne 0 ]; then
      valid=3
   fi
fi

#
# Check if psqldump is present to make sure postgresql works after upgrade
#
activateVolumeGroup
mkdir -p /tmp/mnt1
mount -t ext4 /dev/HMCDataVG/DataLV /tmp/mnt1
if [ $valid -eq 1 ] && [ ! -f /tmp/mnt1/postgresbackup/psqldump.sql ]; then
   valid=2
   echo "The upgrade cannot be performed because the upgrade data is missing.  Run the save upgrade data task and try again." > /tmp/mnt/tmp/HmcInstallError.log
fi
umount -l /tmp/mnt1
umount /tmp/mnt

exit $valid 
