-Add rspreset to working in ipmi plugin rewrite

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@5103 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2010-02-01 17:22:05 +00:00
parent bde3e92d14
commit cd4a801a8c

View File

@ -46,6 +46,7 @@ sub handled_commands {
renergy => 'nodehm:power,mgt',
getipmicons => 'ipmi',
rspconfig => 'nodehm:mgt',
rspreset => 'nodehm:mgt',
rvitals => 'nodehm:mgt',
rinv => 'nodehm:mgt',
rsetboot => 'nodehm:mgt',
@ -483,7 +484,9 @@ sub on_bmc_connect {
}
if ($command eq "rpower") {
return power($sessdata);
}
} elsif ($command eq "rspreset") {
return resetbmc($sessdata);
}
return;
my @output;
@ -678,33 +681,26 @@ sub on_bmc_connect {
}
sub resetbmc {
my $netfun = 0x18;
my @cmd = (0x02);
my @returnd = ();
my $rc = 0;
my $text;
my $error;
$error = docmd(
$netfun,
\@cmd,
\@returnd
);
if ($error) {
$rc = 1;
$text = $error;
my $sessdata = shift;
$sessdata->{ipmisession}->subcmd(netfn=>6,command=>2,data=>[],callback=>\&resetedbmc,callback_args=>$sessdata);
}
sub resetedbmc {
my $rsp = shift;
my $sessdata = shift;
if ($rsp->{error}) {
sendmsg([1,$rsp->{error}],$sessdata->{node});
} else {
if (0 == $returnd[0]) {
$text = "BMC reset";
} else {
if ($codes{$returnd[0]}) {
$text = $codes{$returnd[0]};
if ($rsp->{code}) {
if ($codes{$rsp->{code}}) {
sendmsg([1,$codes{$rsp->{code}}],$sessdata->{node});
} else {
$text = sprintf("BMC Responded with code %d",$returnd[36]);
sendmsg([1,sprintf("Unknown error %02xh",$rsp->{code})],$sessdata->{node});
}
}
return;
}
sendmsg("BMC reset",$sessdata->{node});
$sessdata->{ipmisession} = undef; #throw away now unusable session
}
return($rc,$text);
}
sub setnetinfo {
@ -4799,7 +4795,6 @@ sub add_sdr_data {
my $offset = $sessdata->{sdr_offset}; #shorten typing a little
if ($rsp->{error}) {
sendoutput([1,$rsp->{error}]);
$sessdata->{ipmissession}->logout();
return; #give up
}
my @returnd = ($rsp->{code},@{$rsp->{data}});
@ -4810,7 +4805,6 @@ sub add_sdr_data {
$text = sprintf("unknown response %02x",$code);
}
sendoutput([1,$text]);
$sessdata->{ipmissession}->logout();
return; #abort the whole mess
}
push @{$sessdata->{sdr_data}},@returnd[3..@returnd-1];
@ -5755,8 +5749,10 @@ sub donode {
};
my ($rc,@output) = ipmicmd($sessiondata{$node});
while ($sessiondata{$node}->{ipmisession}->waitforrsp()) { yield };
$sessiondata{$node}->{ipmisession}->logout();
while ($sessiondata{$node}->{ipmisession}->waitforrsp()) { yield };
if ($sessiondata{$node}->{ipmisession}) {
$sessiondata{$node}->{ipmisession}->logout();
while ($sessiondata{$node}->{ipmisession}->waitforrsp()) { yield };
}
my @outhashes;
sendoutput($rc,@output);
yield;