-Fix to work with BPET42R and 46C with all required parameters

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2536 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2008-12-09 20:40:25 +00:00
parent 342ac47dd3
commit 57528d3822
2 changed files with 45 additions and 8 deletions

View File

@ -1,9 +1,28 @@
#!/bin/sh
#!/bin/bash
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
set
fwpref=${rvid_fwrev%%???}
fwver=${rvid_fwrev##????}
fwmaj=${fwver%%?}
if [ -z "$fwmaj" ]; then
echo "Unable to recognize AMM firmware revision"
exit 1
fi
mkdir -p /tmp/xcat
if [ ! -f /tmp/xcat/$rvid_server.remotekvm.jar ]; then
wget -O /tmp/xcat/$rvid_server.remotekvm.jar http://$rvid_server/private/remotekvm.jar
fi
if [ $fwpref == 'BPET' ]; then
if [ $fwmaj -ge 46 ]; then
java -jar /tmp/xcat/$rvid_server.remotekvm.jar -s $rvid_server -r $rvid_authtoken -b $rvid_slot >& /dev/null
elif [ $fwmaj -ge 42 ]; then
java -jar /tmp/xcat/$rvid_server.remotekvm.jar $rvid_server -rbs $rvid_authtoken -ba $rvid_ba -port $rvid_port >& /dev/null
else
echo "Unknown method for firmware $rvid_fwrev, ensure it is at least BPET42R";
fi
else
echo "Unknown semantics for $fwpref, trying a particular way, may not work."
java -jar /tmp/xcat/$rvid_server.remotekvm.jar $rvid_server -rbs $rvid_authtoken -ba $rvid_ba -b $rvid_slot >& /dev/null
fi
java -jar /tmp/xcat/$rvid_server.remotekvm.jar -s $rvid_server -r $rvid_authtoken -b $rvid_slot >& /dev/null
rm /tmp/xcat/rvid_server.remotekvm.jar
rm /tmp/xcat/$rvid_server.remotekvm.jar

View File

@ -1783,30 +1783,41 @@ sub get_kvm_params {
my $html = $response->{_content};
my $destip;
my $rbs;
my $fwrev;
my $port;
foreach (split /\n/,$html) {
if (/<param\s+name\s*=\s*"([^"]*)"\s+value\s*=\s*"([^"]*)"/) {
if ($1 eq 'ip') {
$destip=$2;
} elsif ($1 eq 'rbs') {
$rbs = $2;
} elsif ($1 eq 'cdl') {
$fwrev=$2;
}
}
}
my $ba;
unless (defined $destip and defined $rbs) { #Try another way
$response = $browser->get("http://$mpa/private/remotecontrol.js.php");
$html = $response->{_content};
foreach (split /\n/,$html) {
if (/<param\s+name\s*=\s*"([^"]*)"\s+value\s*=\s*"([^"]*)"/i) {
if (/<param\s+name\s*=\s*"?([^"]*)"?\s+value\s*=\s*"?([^"]*)"?/i) {
if ($1 eq 'ip') {
$destip=$2;
} elsif ($1 eq 'rbs') {
$rbs = $2;
} elsif ($1 eq 'ba') {
$ba=$2; #NOTE: This is the username and password. The client seems to required it for this version of firmware.
} elsif ($1 eq 'cdl') {
$fwrev=$2;
} elsif ($1 eq 'port') {
$port=$2;
}
}
}
}
return ($destip,$rbs);
return ($destip,$rbs,$fwrev,$port,$ba);
}
@ -2650,7 +2661,7 @@ sub dompa {
my $user = $mpahash->{$mpa}->{username};
my $pass = $mpahash->{$mpa}->{password};
httplogin($mpa,$user,$pass);
(my $target, my $authtoken) = get_kvm_params($mpa);
(my $target, my $authtoken, my $fwrev, my $port, my $ba) = get_kvm_params($mpa);
#an http logoff would invalidate the KVM token, so we can't do it here
#For the instant in time, banking on the http session timeout to cleanup for us
#It may be possible to provide the session id to client so it can logoff when done, but
@ -2662,6 +2673,13 @@ sub dompa {
push(@output,"server:$target");
push(@output,"authtoken:$authtoken");
push(@output,"slot:$slot");
push(@output,"fwrev:$fwrev");
if ($port) {
push(@output,"ba:$ba");
}
if ($ba) {
push(@output,"ba:$ba");
}
my %outh;
$outh{node}->[0]->{name}=[$node];
$outh{node}->[0]->{data}=[];