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

#-------------------------------------------------------------------------------
#=head1  otherpkgs
#=head2  It gets the extra rpms and install/update them.
#        The environment variable OTHERPKGS contains the rpms to be installed/updated.
#        On MN, You need to:
#        1. put rpms under /install/post/otherpkgs/os/arch directory where 'os' and 'arch'
#           can be found in the nodetype table.
#        2. put the name of the packages to /opt/xcat/share/xcat/netboot(install)/platform
#           directory. The file name is one of the following:
#              profile.os.arch.otherpkgs.pkglist
#              profile.os.otherpkgs.pkglist
#              profile.arch.otherpkgs.pkglist
#              profile.otherpkgs.pkglist
#   The install/deployment process will pick up the rpms and install them on the nodes.
#   However, if the nodes have already installed and up and running, you can run the following
#   command to have the extra rpms installed:
#       updatenode noderange otherpkgs
#
#=cut
#-------------------------------------------------------------------------------
PLTFRM=`uname`

name=`echo $NODE | awk -F-hf '{print $1}'`
if [ -z $name ]
then
name=$NODE
fi

if [[ $PLTFRM != AIX  ]] && [[ $PLTFRM != aix  ]]
then

# A difference between service node and compute node is that service node is booted from
# ethernet, all the HFI interfaces should be configured.  Compute node is booted from hf0
# so hf0 on compute node should not be re-configured on compute node.
if [[ $NTYPE = service ]]
then

CLIENT_IP=`ping -c 3 $name-hf0 -I hf0 | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1`

if [ -n $CLIENT_IP ]
then
echo "DEVICE=hf0
NM_CONTROLLED=yes
IPADDR=$CLIENT_IP
NETMASK=255.0.0.0
ONBOOT=yes
" >/etc/sysconfig/network-scripts/ifcfg-hf$i

ifup hf$i
fi

fi

# Configure hf0-hf<n> interfaces one by one.
for i in 1 2 3
do

CLIENT_IP=`ping -c 3 $name-hf$i -I hf$i | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1`

if [ -n $CLIENT_IP ]
then
echo "DEVICE=hf$i
NM_CONTROLLED=yes
IPADDR=$CLIENT_IP
NETMASK=255.0.0.0
ONBOOT=yes
" >/etc/sysconfig/network-scripts/ifcfg-hf$i

ifup hf$i
fi

done

else
NETMASK=255.0.0.0

if [[ $NTYPE = service ]]
then

CLIENT_IP=`ping -q -n -c 1 -w 1 $name-hf0 | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' `

if [ -n $CLIENT_IP ]
then
mkhfi -i hf0 -a $CLIENT_IP -m $NETMASK
fi

fi

for i in 1 2 3
do
CLIENT_IP=`ping -q -n -c 1 -w 1 $name-hf$i | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' `

if [ -n $CLIENT_IP ]
then
mkhfi -i hf$i -a $CLIENT_IP -m $NETMASK
fi

done

# Configure ml0 for AIX.
CLIENT_IP=`ping -q -n -c 1 -w 1 $name-ml0 | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' `

if [ -n $CLIENT_IP ]
then
    #Check whether the mlt0 is available
    `lsdev -C | grep mlt0 | grep Available 2>&1 >/dev/null`
    if [ $? ]
    then
        /usr/ml/aix71/rc.ml
    fi

    chdev -l ml0 -a state=detach
    chdev -l ml0 -a netaddr=$CLIENT_IP -a netmask=$NETMASK -a state=up
fi

fi