added statelite mode support in xcatdsklspost; <xcatdsklspost 4> stands for statelite mode

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@5032 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
mxi1 2010-01-25 11:34:42 +00:00
parent 3f3b504df8
commit 650c20fc5d

View File

@ -8,6 +8,7 @@
# updatenode -S --> xcatdsklspost 2 otherpkgs
# moncfg rmcmon --> xcatdsklspost 3 configrmcnodes
# node deployment --> xcatdsklspost
# statelite mode --> xcatdsklspost 4
#
#####################################################
download_postscripts()
@ -39,6 +40,7 @@ download_postscripts()
return $rc
}
MODE=$1
if [ ! `uname` == Linux ]; then
MYDIR=`dirname $0`
@ -48,27 +50,55 @@ fi
let SLI=$RANDOM%10
sleep $SLI
mkdir -p /xcatpost;
mkdir -p /tmp/postage
if [ ! -d /xcatpost ]; then
mkdir -p /xcatpost;
fi
if [ ! -d /tmp/postage ]; then
mkdir -p /tmp/postage
fi
rm -R -f /xcatpost/*
rm -R -f /tmp/postage/*
#here we get all the postscripts. Please do not change this behaviour because some scripts depend on others
cd /tmp/postage
downloaded=0;
#open the xcatinfo file to look for the master if it is not set
if [ -f /opt/xcat/xcatinfo ]; then
SIP=`grep 'XCATSERVER' /opt/xcat/xcatinfo |cut -d= -f2`
if [ -n "$SIP" ]; then
download_postscripts $SIP
if [ $? -eq 0 ]; then
downloaded=1
fi
fi
fi
argnum=$#;
if [ "$MODE" != "4" ]; then # not statelite mode
downloaded=0;
#open the xcatinfo file to look for the master if it is not set
if [ -f /opt/xcat/xcatinfo ]; then
SIP=`grep 'XCATSERVER' /opt/xcat/xcatinfo |cut -d= -f2`
if [ -n "$SIP" ]; then
download_postscripts $SIP
if [ $? -eq 0 ]; then
downloaded=1
fi
fi
fi
else # for statelite mode
# We have written the xCATSERVER info into the kernel command line!!
for i in `cat /proc/cmdline`; do
KEY=`echo $i | awk -F= '{print $1}'`
if [ "$KEY" == "XCAT" ]; then
TMP=`echo $i | awk -F= '{print $2}'`
XCATSERVER=`echo $TMP | cut -d: -f1`
echo "XCATSERVER=$XCATSERVER" > /opt/xcat/xcatinfo
break
fi
done
if [ -f /opt/xcat/xcatinfo ]; then
SIP=`cut -d= -f2 /opt/xcat/xcatinfo`;
else
echo "xCAT management server IP can't be determined.\nexiting...";
exit;
fi
fi
if [ "$MODE" != "4" ]; then # NOSTATELITE: NOT for statelite MODE
#try the -m if it is specified, -m is passed in the updatenode command
if [ $downloaded -eq 0 ]; then
#get the -m
@ -116,6 +146,8 @@ if [ $downloaded -eq 0 ]; then
exit
fi
fi #END NOSTATELITE
if grep 'rw /rw tmpfs ' /proc/mounts >& /dev/null; then
touch /var/lock/subsys/xcatmounts
echo '#!/bin/bash' > /etc/rc6.d/K10xcatmounts
@ -126,17 +158,37 @@ if grep 'rw /rw tmpfs ' /proc/mounts >& /dev/null; then
fi
#wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$SIP/postscripts 2> /tmp/wget.log
if [ "$MODE" != "4" ]; then
#wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$SIP/postscripts 2> /tmp/wget.log
#mv $SIP/install/postscripts/* /xcatpost;
mv $SIP/postscripts/* /xcatpost;
rm -rf $SIP
else # for statelite mode
MAX=10
TRIES=1
while ! mount $SIP:/install/postscripts /xcatpost -r -n -o nolock
do
if [ "$TRIES" = "$MAX" ]
then
echo "can't mount $SIP:/install/postscripts. I give up... ">/dev/console
exit
fi
TRIES=`expr $TRIES + 1`
S=`expr $RANDOM % 20`
echo "Can't mount $SIP:/install/postscripts... Sleeping $S seconds then trying again" >/dev/console
sleep $S
done
fi
#mv $SIP/install/postscripts/* /xcatpost;
mv $SIP/postscripts/* /xcatpost;
rm -rf $SIP
cd /xcatpost;
PATH=/xcatpost:$PATH
export PATH
chmod +x /xcatpost/*;
if [ "$MODE" != "4" ]; then
chmod +x /xcatpost/*; # no effect for statelite mode, since the directory are readonly
fi
#echo "PATH=$PATH"
@ -165,19 +217,27 @@ while [ -z "$MYCONT" ]; do
let SLI=$RANDOM%10
let SLI=10+$SLI
sleep $SLI
for SIP in $SIPS; do #Attempt against several candidates
if [ -x /usr/bin/openssl ]; then
XCATSERVER="$SIP:3001"
export XCATSERVER
USEOPENSSLFORXCAT=1 #Though this is the only method going forward, flag to allow backward compatibility with 2.2 generated netboot images
export USEOPENSSLFORXCAT
fi
/xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /tmp/mypostscript;
if [ "$MODE" != "4" ]; then
for SIP in $SIPS; do #Attempt against several candidates
if [ -x /usr/bin/openssl ]; then
XCATSERVER="$SIP:3001"
export XCATSERVER
USEOPENSSLFORXCAT=1 #Though this is the only method going forward, flag to allow backward compatibility with 2.2 generated netboot images
export USEOPENSSLFORXCAT
fi
/xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /tmp/mypostscript;
MYCONT=`grep MASTER /tmp/mypostscript`
if [ ! -z "$MYCONT" ]; then
break;
fi
done
else # for statelite mode
/xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /tmp/mypostscript;
MYCONT=`grep MASTER /tmp/mypostscript`
if [ ! -z "$MYCONT" ]; then
break;
fi
done
fi
# echo "MYCONT=$MYCONT"
done