#!/bin/sh
#
#
# Sample script to customize options for PE
# For AIX:
#    TBD
# For Linux:
#    - For full-disk installs:
#        - Copy rpms to node
#        - Install and accept PE license rpm
#        - Install PE rpms
#    - For diskless images:
#        - Install PE license on MN if not already installed
#        - Install PE license rpm into image, but DO NOT ACCEPT
#          (java accept program will hang)
#        - Copy PE license files from MN into image
#        - Install PE rpms
#    - Create a smaller PNSD log file in /tmp
#    - Configure poe.limits file

OS=`uname`
INSTALL_DIR='/install'
PE_DIR=$pedir

if [ -z "$PE_DIR" ]; then
   # try to default
   PE_DIR=$INSTALL_DIR/post/otherpkgs/$OSVER/$ARCH/pe
fi


if [ $NODESETSTATE != "genimage" ]; then
   # running as a postscript in a full-disk install or AIX diskless install
   installroot=""
fi



if [ $OS != "AIX" ]; then
    if [ $NODESETSTATE == "install" ] || [ $NODESETSTATE == "boot" ]; then
    #  Being run from a stateful install postscript
    #  Copy rpms directly from the xCAT management node and install
        mkdir -p /tmp/pe
        rm -f -R /tmp/pe/*
        cd /tmp/pe
        download_dir=`echo $PE_DIR | cut -d '/' -f3-`
        wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=5 ftp://$SITEMASTER/$download_dir/*.rpm 2> /tmp/wget.log
        if [ ! -f /opt/ibmhpc/install/sbin/accept_ppe_license.sh ] ; then
            rpm -Uvh IBM_pe_license*.rpm
        fi
        IBM_PE_LICENSE_PROMPT=N /opt/ibmhpc/install/sbin/accept_ppe_license.sh
        rpm -Uvh --force ibm_lapi*.rpm ibm_pe*.rpm ppe_*.rpm
        cd /
        rm -Rf /tmp/pe
    fi

    if [ $NODESETSTATE == "genimage" ]; then
    # Being called from <image>.postinstall script
    # Assume we are on the same machine
        if [[ $OS = sles* ]] || [[ $OS = suse* ]] || [[ -f /etc/SuSE-release ]]; then
        # For SLES, assume zypper is available on the system running genimage
            if [ ! -d /etc/opt/ibmhpc/license ] ; then
            # Install and accept PE license on the MN
                IBM_PE_LICENSE_PROMPT=N zypper install $PE_DIR/IBM_pe_license*.rpm
            fi
            # Install PE license rpm into image, BUT DO NOT ACCEPT
            # The java process fails when you try to run in chroot
            zypper -R $installroot install $PE_DIR/IBM_pe_license*.rpm
            # Copy license files from MN into the image
            mkdir -p $installroot/etc/opt/ibmhpc/license
            cp -pR /etc/opt/ibmhpc/license/* $installroot/etc/opt/ibmhpc/license
            # Install PE product rpms
            INUCLIENTS=1 INUBOSTYPE=1 zypper -R $installroot install $PE_DIR/ibm_lapi*.rpm $PE_DIR/ibm_pe*.rpm $PE_DIR/ppe_*.rpm
        else
        # For Redhat, etc., assume yum is available on the system running genimage
            if [ ! -d /etc/opt/ibmhpc/license ] ; then
            # Install and accept PE license on the MN
                IBM_PE_LICENSE_PROMPT=N yum --nogpgcheck localupdate  $PE_DIR/IBM_pe_license*.rpm
                #IBM_PE_LICENSE_PROMPT=N yum --nogpgcheck install  $PE_DIR/IBM_pe_license*.rpm
            fi
            # Install PE license rpm into image, BUT DO NOT ACCEPT
            # The java process fails when you try to run in chroot
            yum --installroot $installroot --nogpgcheck install  $PE_DIR/IBM_pe_license*.rpm
            # Copy license files from MN into the image
            mkdir -p $installroot/etc/opt/ibmhpc/license
            cp -pR /etc/opt/ibmhpc/license/* $installroot/etc/opt/ibmhpc/license
 	    #chroot $installroot /opt/ibmhpc/install/sbin/accept_ppe_license.sh
            # Install PE product rpms
            INUCLIENTS=1 INUBOSTYPE=1 yum --installroot $installroot --nogpgcheck install $PE_DIR/ibm_lapi*.rpm $PE_DIR/ibm_pe*.rpm $PE_DIR/ppe_*.rpm
        fi
    fi
fi



# Configure the PNSD.cfg to use a smaller log so it doesn't use so much memory
# for a stateless image.  Normally, pnsd creates this file if it does not
# exist, but it will not fill it in if it does exist.
if [ ! -f $installroot/etc/PNSD.cfg ]; then
    echo "log_file = /tmp/serverlog" > $installroot/etc/PNSD.cfg
    echo "log_file_size = 2097152" >> $installroot/etc/PNSD.cfg
    echo "socket_file = /tmp/PNSD" >> $installroot/etc/PNSD.cfg
else
  if [ "$OS" == "AIX" ]; then
    /usr/bin/sed -e 's/log_file_size = .*/log_file_size = 2097152/g'  $installroot/etc/PNSD.cfg > $installroot/etc/PNSD.cfg.new
    mv  $installroot/etc/PNSD.cfg.new  $installroot/etc/PNSD.cfg
  else
    /bin/sed -i 's/log_file_size = .*/log_file_size = 2097152/g'  $installroot/etc/PNSD.cfg
  fi
  if [ $NODESETSTATE == "install" ] || [ $NODESETSTATE == "boot" ]; then
    stopsrc -s pnsd
    startsrc -s pnsd
  fi
fi

# Configure the poe.limits file
if [ ! -f $installroot/etc/poe.limits ]; then
    echo "MP_POE_LAUNCH=all" > $installroot/etc/poe.limits
else
  if [ "$OS" == "AIX" ]; then
    /usr/bin/sed -e 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g'  $installroot/etc/poe.limits > $installroot/etc/poe.limits.new
   mv $installroot/etc/poe.limits.new $installroot/etc/poe.limits
  else
    /bin/sed -i 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g'  $installroot/etc/poe.limits
  fi
fi


# POE requires rsh to be running
if [ "$OS" == "AIX" ]; then
  /usr/bin/sed -e '/\/rshd/s/^#//g' $installroot/etc/inetd.conf > $installroot/etc/inetd.conf.new
  mv /etc/inetd.conf.new /etc/inetd.conf
  refresh -s inetd
else
  /bin/sed -i 's/disable.*/disable = no/g'  $installroot/etc/xinetd.d/rsh
  if [ $NODESETSTATE == "install" ] || [ $NODESETSTATE == "boot" ]; then
     service xinetd restart
  fi
fi


# The Parallel Debugger on AIX requires a /proc filesystem
if [ "$OS" == "AIX" ]; then
  if ! grep "/proc:" /etc/filesystems > /dev/null 2>&1 ; then
     echo "/proc:                     " >> /etc/filesystems
     echo "        dev       = /proc  " >> /etc/filesystems
     echo "        vol       = /proc  " >> /etc/filesystems
     echo "        mount     = true   " >> /etc/filesystems
     echo "        check     = false  " >> /etc/filesystems
     echo "        free      = false  " >> /etc/filesystems
     echo "        vfs       = procfs " >> /etc/filesystems
  fi
  mount /proc
fi
