#!/bin/sh
# IBM(c) 2010 EPL license http://www.eclipse.org/legal/epl-v10.html
#(C)IBM Corp

#
#-----------------------------------------------------------------------------
#
#setbootfromdisk
#   The script is used to set harddisk(sda) to be the default bootup devices
#   on Redhat-family OSes with POWER system
#
#-----------------------------------------------------------------------------

OS=`uname`
if [[ $OS = "Linux" ]]; then
    if [[ $OSVER = fedora* ]] || [[ $OSVER = rhels5* ]] || [[ $OSVER = rhel6* ]] || [[ $OSVER=rhels6* ]] || [[ -f /etc/fedora-release ]] || [[ -f /etc/redhat-release ]]; then
        if  [[ -f /usr/sbin/bootlist ]] ; then
            # determine which harddisk should be the default one
            # /dev/sda3 /boot ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
            BOOTENTRY=`cat /proc/mounts |grep /boot`

            if [[ -z $BOOTENTRY ]]; then
                BOOTENTRY=`grep ^\/dev /proc/mounts |grep " / "`
            fi

            BOOTDEVICE=`echo $BOOTENTRY | awk '{print $1}'`

            if  [[ -f /sbin/multipath ]] ; then
                MPATH=`/sbin/multipath -ll`
            fi

            #software raid, assume sda and sdb
            if echo $BOOTDEVICE | grep "md"
            then
                if echo $MPATH | grep "sdc"
                then
                    if echo $MPATH | grep "sdd"
                    then
                        logger -t xcat setbootfromdisk: Setting sda sdb sdc sdd to be the default bootup device
                        echo "setbootfromdisk: setting up sda sdb sdc sdd to be the default bootup device"
                        bootlist -m normal sda sdb sdc sdd
                        exit 0
                    fi
                fi
                logger -t xcat setbootfromdisk: Setting sda sdb to be the default bootup device
                echo "setbootfromdisk: setting up sda sdb to be the default bootup device for software raid"
                bootlist -m normal sda sdb
                exit 0
            fi

            if echo $BOOTDEVICE | grep "mpath"
            then
                found=0
                for i in $MPATH
                do
                    if echo $BOOTDEVICE | grep "$i"
                    then
                        found=1
                    else
                        if echo $i | grep "mpath"
                        then
                            found=0
                        fi
                    fi

                    if [[ $found = 1 ]]
                    then
                        if echo $i | grep "sda"
                        then
                            logger -t xcat setbootfromdisk: Setting sda sdb to be the default bootup device
                            echo "setbootfromdisk: setting up sda sdb to be the default bootup device"
                            bootlist -m normal sda sdb
                            exit 0
                        elif echo $i | grep "sdc" 
                        then
                            logger -t xcat setbootfromdisk: Setting sdc sdd to be the default bootup device
                            echo "setbootfromdisk: setting up sdc sdd to be the default bootup device"
                            bootlist -m normal sdc sdd
                            exit 0
                        fi
                    fi
                done


                if echo $MPATH | grep "sdb"
                then
                    logger -t xcat setbootfromdisk: Setting sda sdb to be the default bootup device
                    echo "setbootfromdisk: setting up sda sdb to be the default bootup device"
                    bootlist -m normal sda sdb
                    exit 0
                fi
            fi

            if [[ -z $BOOTDEVICE ]]; then
                logger -t xcat setbootfromdisk: cannot find the booting device
            else
                logger -t xcat setbootfromdisk: Setting $BOOTDEVICE to be the default bootup device
                echo "setbootfromdisk: setting up $BOOTDEVICE as the default bootup device"
                bootlist -m normal $BOOTDEVICE 
                exit 0
            fi
        else 
            logger -t xcat Could not find /usr/sbin/bootlist
            echo "setbootfromdisk: could not find /usr/sbin/bootlist"
            exit -1
        fi
    fi
fi