From 11f93c43aeab1e7e465550179b2678375e133fac Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Fri, 26 Apr 2013 14:06:49 +0000 Subject: [PATCH] Fix issues with bmcsetup git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@16073 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-genesis-scripts/bin/bmcsetup | 42 +++++++++++++---------- xCAT-server/lib/xcat/plugins/bmcconfig.pm | 14 +++++++- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/xCAT-genesis-scripts/bin/bmcsetup b/xCAT-genesis-scripts/bin/bmcsetup index f98dca335..39ec56d03 100755 --- a/xCAT-genesis-scripts/bin/bmcsetup +++ b/xCAT-genesis-scripts/bin/bmcsetup @@ -50,11 +50,11 @@ if [ "$IPMIMFG" == 2 ]; then #IBM LOCKEDUSERS=1 BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` if [ ! -z "$BMCPORT" ]; then - let idev=NUMBMCS-1 + let idev=0 for p in $BMCPORT; do ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null ipmitool -d $idev raw 0x04 0x12 0x09 0x01 0x18 0x${p}1 0x00 > /dev/null - let idev=idev-1 + let idev=idev+1 done fi elif [ "$XPROD" == "291" ]; then @@ -64,10 +64,10 @@ if [ "$IPMIMFG" == 2 ]; then #IBM if [ "$IBMFAM" == "59554f4f" ]; then BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` if [ ! -z "$BMCPORT" ]; then - let idev=NUMBMCS-1 + let idev=0 for p in $BMCPORT; do - ipmitool -d $idev raw 0xc 1 1 0xc0 $BMCPORT > /dev/null - let idev=idev-1 + ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null + let idev=idev+1 done fi fi @@ -81,13 +81,13 @@ elif [ "$IPMIMFG" == 20301 ] ; then LOCKEDUSERS=1 BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'` if [ ! -z "$BMCPORT" ]; then - let idev=NUMBMCS-1 + let idev=0 for p in $BMCPORT; do - ipmitool -d $idev raw 0xc 1 1 0xc0 $BMCPORT > /dev/null + ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null NEWPORT=`ipmitool -d $idev raw 0xc 2 1 0xc0 0 0|awk '{print $2}'` sleep 10 - let idev=idev-1 + let idev=idev+1 done fi elif [ "$IPMIMFG" == "47488" ]; then @@ -122,7 +122,7 @@ if [ $IPCFGMETHOD="static" ]; then if [ $TRIES -gt $TIMEOUT ]; then break; fi done done - let idev=NUMBMCS-1 + let idev=0 for b in $BMCIP; do TRIES=0 while ! ipmitool -d $idev lan set $LANCHAN ipaddr $b; do @@ -130,9 +130,9 @@ if [ $IPCFGMETHOD="static" ]; then let TRIES=TRIES+1 if [ $TRIES -gt $TIMEOUT ]; then break; fi done - let idev=idev-1 + let idev=idev+1 done - let idev=NUMBMCS-1 + let idev=0 for m in $BMCNM; do TRIES=0 while ! ipmitool -d $idev lan set $LANCHAN netmask $m; do @@ -140,11 +140,11 @@ if [ $IPCFGMETHOD="static" ]; then let TRIES=TRIES+1 if [ $TRIES -gt $TIMEOUT ]; then break; fi done - let idev=idev-1 + let idev=idev+1 done TRIES=0 if [ ! -z "$BMCGW" ]; then - let idev=NUMBMCS-1 + let idev=0 for g in $BMCGW; do TRIES=0 while ! ipmitool -d $idev lan set $LANCHAN defgw ipaddr $g; do @@ -152,7 +152,7 @@ if [ $IPCFGMETHOD="static" ]; then let TRIES=TRIES+1 if [ $TRIES -gt $TIMEOUT ]; then break; fi done - let idev=idev-1 + let idev=idev+1 done TRIES=0 fi @@ -169,11 +169,15 @@ else done fi -let idev=NUMBMCS -while [ $idev -gt 0 ]; do - let idev=idev-1 - TRIES=0 - ipmitool -d $idev lan set $LANCHAN vlan id $BMCVLAN +let idev=0 +for b in $BMCVLAN; do + TRIES=0 + while ! ipmitool -d $idev lan set $LANCHAN vlan id $b; do + sleep 1 + let TRIES=TRIES+1 + if [ $TRIES -gt $TIMEOUT ]; then break; fi + done + let idev=idev+1 done let idev=NUMBMCS-1 diff --git a/xCAT-server/lib/xcat/plugins/bmcconfig.pm b/xCAT-server/lib/xcat/plugins/bmcconfig.pm index 95c75da96..3d61028f8 100644 --- a/xCAT-server/lib/xcat/plugins/bmcconfig.pm +++ b/xCAT-server/lib/xcat/plugins/bmcconfig.pm @@ -136,6 +136,7 @@ sub process_request { $callback->({error=>["Invalid table configuration for bmcconfig"],errorcode=>[1]}); return 1; } + my $bmcport_counter=0; foreach my $sbmc (split /,/,$bmc) { (my $ip,my $mask,my $gw) = net_parms($sbmc); unless ($ip and $mask and $username and $password) { @@ -149,12 +150,23 @@ sub process_request { } my $response={bmcip=>$ip,netmask=>$mask,gateway=>$gw,username=>$username,password=>$password}; if (defined $bmcport) { - $response->{bmcport}=$bmcport; + if ($bmcport =~ /,/) { + my @sbmcport = (split /,/,$bmcport); + $response->{bmcport}=$sbmcport[$bmcport_counter]; + } else { + $response->{bmcport}=$bmcport; + } } if (defined $tmphash->{$node}->[0]->{taggedvlan}) { + if ($tmphash->{$node}->[0]->{taggedvlan} =~ /,/) { + my @staggedvlan = (split /,/,$tmphash->{$node}->[0]->{taggedvlan}); + $response->{taggedvlan}=$staggedvlan[$bmcport_counter]; + } else { $response->{taggedvlan}=$tmphash->{$node}->[0]->{taggedvlan}; + } } $callback->($response); + $bmcport_counter += 1; } if ($gennedpassword) { # save generated password $ipmitable->setNodeAttribs($node,{password=>$password});