2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-12 17:30:19 +00:00

Initial pass for OpenBMC rvitals

This commit is contained in:
Mark Gurevich
2017-05-10 14:49:40 -04:00
parent 1e098afcb2
commit c02c9269df
4 changed files with 73 additions and 4 deletions

View File

@ -60,7 +60,7 @@ OpenPOWER server specific:
==========================
\ **rvitals**\ \ *noderange*\ {\ **temp | voltage | wattage | fanspeed | power | leds | all**\ }
\ **rvitals**\ \ *noderange*\ [\ **temp | voltage | wattage | fanspeed | power | leds | all**\ ]

View File

@ -76,7 +76,7 @@ my %usage = (
BMC specific:
rvitals noderange {temp|voltage|wattage|fanspeed|power|leds|all}
OpenPOWER server specific:
rvitals noderange {temp|voltage|wattage|fanspeed|power|leds|all}
rvitals noderange [temp|voltage|wattage|fanspeed|power|leds|all]
MIC specific:
rvitals noderange {thermal|all}",
"reventlog" =>

View File

@ -28,7 +28,7 @@ B<rvitals> I<noderange> {B<temp>|B<voltage>|B<wattage>|B<fanspeed>|B<power>|B<le
=head2 OpenPOWER server specific:
B<rvitals> I<noderange> {B<temp>|B<voltage>|B<wattage>|B<fanspeed>|B<power>|B<leds>|B<all>}
B<rvitals> I<noderange> [B<temp>|B<voltage>|B<wattage>|B<fanspeed>|B<power>|B<leds>|B<all>]
=head1 B<Description>

View File

@ -168,6 +168,13 @@ my %status_info = (
RSPCONFIG_SET_RESPONSE => {
process => \&rspconfig_response,
},
RVITALS_REQUEST => {
method => "GET",
init_url => "$openbmc_project_url/sensors/enumerate",
},
RVITALS_RESPONSE => {
process => \&rvitals_response,
},
);
$::RESPONSE_OK = "200 OK";
@ -361,7 +368,7 @@ sub parse_args {
return ([ 1, "No option specified for $command" ]);
}
if (scalar(@ARGV) > 1 and ($command =~ /rpower|rinv|rsetboot/)) {
if (scalar(@ARGV) > 1 and ($command =~ /rpower|rinv|rsetboot|rvitals/)) {
return ([ 1, "Only one option is supported at the same time" ]);
}
@ -429,6 +436,12 @@ sub parse_args {
return ([ 1, "Unsupported command: $command $subcommand" ]);
}
}
} elsif ($command eq "rvitals") {
$check = unsupported($callback); if (ref($check) eq "ARRAY") { return $check; }
$subcommand = "all" if (!defined($ARGV[0]));
unless ($subcommand =~ /^temp$|^voltage$|^wattage$|^fanspeed$|^power$|^leds$|^all$/) {
return ([ 1, "Unsupported command: $command $subcommand" ]);
}
} else {
return ([ 1, "Command is not supported." ]);
}
@ -562,6 +575,18 @@ sub parse_command_status {
return 1;
}
if ($command eq "rvitals") {
if (defined($ARGV[0])) {
$subcommand = $ARGV[0];
} else {
$subcommand = "all";
}
$next_status{LOGIN_RESPONSE} = "RVITALS_REQUEST";
$next_status{RVITALS_REQUEST} = "RVITALS_RESPONSE";
$status_info{RVITALS_RESPONSE}{argv} = "$subcommand";
}
print Dumper(\%next_status) . "\n";
return;
}
@ -1090,4 +1115,48 @@ sub rspconfig_response {
}
}
#-------------------------------------------------------
=head3 rvitals_response
Deal with response of rvitals command
Input:
$node: nodename of current response
$response: Async return response
=cut
#-------------------------------------------------------
sub rvitals_response {
my $node = shift;
my $response = shift;
my $response_info = decode_json $response->content;
my $grep_string = $status_info{RVITALS_RESPONSE}{argv};
my $src;
my $content_info;
my $sensor_value;
xCAT::SvrUtils::sendmsg("Processing command rvitals $grep_string", $callback, $node);
foreach my $key_url (keys %{$response_info->{data}}) {
my %content = %{ ${ $response_info->{data} }{$key_url} };
#print Dumper(%{$response_info->{data}}) . "\n";
#print Dumper(%content) . "\n";
$sensor_value = $key_url . " " . $content{Value};
xCAT::SvrUtils::sendmsg("$sensor_value", $callback, $node);
}
if ($next_status{ $node_info{$node}{cur_status} }) {
$node_info{$node}{cur_status} = $next_status{ $node_info{$node}{cur_status} };
gen_send_request($node);
} else {
$wait_node_num--;
}
return;
}
1;