-Support multiple rvitals arguments for IPMI
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4769 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
cec6dc7a43
commit
d1a01cc53f
@ -4447,11 +4447,13 @@ sub checkleds {
|
||||
|
||||
sub vitals {
|
||||
my $subcommand = shift;
|
||||
my @textfilters = split /,/,$subcommand;
|
||||
unless (scalar @textfilters) { @textfilters = ("all"); }
|
||||
|
||||
my $rc = 0;
|
||||
my $text;
|
||||
my $key;
|
||||
my @sensor_filters=(0x00);
|
||||
my %sensor_filters=();
|
||||
my @output;
|
||||
my $reading;
|
||||
my $unitdesc;
|
||||
@ -4462,36 +4464,38 @@ sub vitals {
|
||||
my $doall;
|
||||
$doall=0;
|
||||
$rc=0;
|
||||
#filters: defined in sensor type codes and data table
|
||||
# 1 == temp, 2 == voltage 3== current (we lump in wattage here for lack of a better spot), 4 == fan
|
||||
|
||||
if($subcommand eq "all") {
|
||||
@sensor_filters=(0x01); #,0x02,0x03,0x04);
|
||||
if(grep { $_ eq "all"} @textfilters) {
|
||||
$sensor_filters{1}=1; #,0x02,0x03,0x04); rather than filtering, unfiltered results
|
||||
$sensor_filters{energy}=1;
|
||||
$doall=1;
|
||||
}
|
||||
elsif($subcommand =~ /temp/) {
|
||||
@sensor_filters=(0x01);
|
||||
if(grep /temp/,@textfilters) {
|
||||
$sensor_filters{0x01}=1;
|
||||
}
|
||||
elsif($subcommand eq "voltage") {
|
||||
@sensor_filters=(0x02);
|
||||
if(grep /volt/,@textfilters) {
|
||||
$sensor_filters{0x02}=1;
|
||||
}
|
||||
elsif($subcommand =~ /watt/) {
|
||||
@sensor_filters=(0x03);
|
||||
if(grep /watt/,@textfilters) {
|
||||
$sensor_filters{0x03}=1;
|
||||
}
|
||||
elsif($subcommand eq "fanspeed") {
|
||||
@sensor_filters=(0x04);
|
||||
if(grep /fan/,@textfilters) {
|
||||
$sensor_filters{0x04}=1;
|
||||
}
|
||||
elsif($subcommand eq "power") {
|
||||
($rc,$text) = power("stat");
|
||||
$text = sprintf($format,"Power Status:",$text);
|
||||
return($rc,$text);
|
||||
if(grep /power/,@textfilters) { #power does not really include energy, but most people use 'power' to mean both
|
||||
$sensor_filters{0x03}=1;
|
||||
$sensor_filters{powerstate}=1;
|
||||
$sensor_filters{energy}=1;
|
||||
}
|
||||
elsif($subcommand eq "leds") {
|
||||
my @cleds;
|
||||
($rc,@cleds) = checkleds();
|
||||
foreach $text (@cleds) {
|
||||
push(@output,$text);
|
||||
}
|
||||
if(grep /energy/,@textfilters) {
|
||||
$sensor_filters{energy}=1;
|
||||
}
|
||||
else {
|
||||
if(grep /led/,@textfilters) {
|
||||
$sensor_filters{leds}=1;
|
||||
}
|
||||
unless (keys %sensor_filters) {
|
||||
return(1,"unsupported command vitals $subcommand");
|
||||
}
|
||||
|
||||
@ -4500,8 +4504,9 @@ sub vitals {
|
||||
return($rc,$text);
|
||||
}
|
||||
|
||||
foreach(@sensor_filters) {
|
||||
foreach(keys %sensor_filters) {
|
||||
my $filter = $_;
|
||||
if ($filter eq "energy" or $filter eq "leds") { next; }
|
||||
|
||||
foreach $key (sort {$sdr_hash{$a}->id_string cmp $sdr_hash{$b}->id_string} keys %sdr_hash) {
|
||||
my $sdr = $sdr_hash{$key};
|
||||
@ -4585,15 +4590,20 @@ sub vitals {
|
||||
}
|
||||
}
|
||||
|
||||
if($subcommand eq "all") {
|
||||
if($sensor_filters{leds}) {
|
||||
my @cleds;
|
||||
($rc,@cleds) = checkleds();
|
||||
push @output,@cleds;
|
||||
}
|
||||
if ($sensor_filters{powerstate}) {
|
||||
($rc,$text) = power("stat");
|
||||
$text = sprintf($format,"Power Status:",$text,"");
|
||||
push(@output,$text);
|
||||
($rc,@cleds) = checkleds();
|
||||
push @output,@cleds;
|
||||
($rc,@cleds)=readenergy();
|
||||
push @output,@cleds;
|
||||
}
|
||||
if ($sensor_filters{energy}) {
|
||||
my @energies;
|
||||
($rc,@energies)=readenergy();
|
||||
push @output,@energies;
|
||||
}
|
||||
|
||||
return($rc,@output);
|
||||
|
Loading…
Reference in New Issue
Block a user