mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-29 09:13:08 +00:00
support options model|serial|deviceid|uuid|guid|vpd|mprom|firm for rinv for OpenPOWER servers
This commit is contained in:
parent
c7a4174054
commit
09b28930dc
@ -79,20 +79,22 @@ my %usage = (
|
||||
rinv <noderange> [all|model|serial] [-V|--verbose]
|
||||
rinv [-h|--help|-v|--version]
|
||||
BMC specific:
|
||||
rinv <noderange> [mprom|deviceid|uuid|guid|vpd [-t]|all [-t]]
|
||||
rinv <noderange> [mprom|deviceid|uuid|guid|vpd|all]
|
||||
OpenPOWER server specific:
|
||||
rinv <noderange> [model|serial|deviceid|uuid|guid|vpd|mprom|firm|all]
|
||||
MPA specific:
|
||||
rinv <noderange> [firm|bios|diag|mprom|sprom|mparom|mac|mtm [-t]]
|
||||
rinv <noderange> [firm|bios|diag|mprom|sprom|mparom|mac|mtm]
|
||||
PPC specific(with HMC):
|
||||
rinv <noderange> [all|bus|config|serial|model|firm [-t]]
|
||||
rinv <noderange> [all|bus|config|serial|model|firm]
|
||||
PPC specific(using Direct FSP Management):
|
||||
rinv <noderange> [firm]
|
||||
rinv <noderange> [deconfig [-x]]
|
||||
Blade specific:
|
||||
rinv <noderange> [all|serial|mac|bios|diag|mprom|mparom|firm|mtm [-t]]
|
||||
rinv <noderange> [all|serial|mac|bios|diag|mprom|mparom|firm|mtm]
|
||||
IBM Flex System Compute Node specific:
|
||||
rinv <noderange> [firm]
|
||||
VMware specific:
|
||||
rinv <noderange>
|
||||
rinv <noderange> [-t]
|
||||
zVM specific:
|
||||
rinv noderange [all|config]
|
||||
MIC specific:
|
||||
|
@ -10,6 +10,10 @@ B<rinv> [B<-h>|B<--help>|B<-v>|B<--version>]
|
||||
|
||||
B<rinv> I<noderange> {B<pci>|B<model>|B<serial>|B<asset>|B<vpd>|B<mprom>|B<deviceid>|B<guid>|B<firm>|B<diag>|B<bios>|B<mparom>|B<mac>|B<all>}
|
||||
|
||||
=head2 OpenPOWER server specific:
|
||||
|
||||
B<rinv> I<noderange> {B<model>|B<serial>|B<deviceid>|B<uuid>|B<guid>|B<vpd>|B<mprom>|B<firm>|B<all>}
|
||||
|
||||
=head2 PPC (with HMC) specific:
|
||||
|
||||
B<rinv> I<noderange> {B<bus>|B<config>|B<serial>|B<model>|B<firm>|B<all>}
|
||||
|
@ -1574,11 +1574,14 @@ sub isfpc {
|
||||
return 1
|
||||
}
|
||||
|
||||
sub isfirestone {
|
||||
sub isopenpower {
|
||||
my $sessdata = shift;
|
||||
if ($sessdata->{prod_id} == 43707) {
|
||||
if ($sessdata->{prod_id} == 43707 and $sessdata->{mfg_id} == 0) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
sub check_firmware_version {
|
||||
@ -1821,7 +1824,7 @@ sub do_firmware_update {
|
||||
|
||||
sub rflash {
|
||||
my $sessdata = shift;
|
||||
if (isfirestone($sessdata)) {
|
||||
if (isopenpower($sessdata)) {
|
||||
|
||||
# Do firmware update for firestone here.
|
||||
@{ $sessdata->{component_ids} } = qw/1 2 4/;
|
||||
@ -2584,9 +2587,17 @@ sub add_textual_frus {
|
||||
my $type = shift;
|
||||
my $sessdata = shift;
|
||||
unless ($type) { $type = 'hw'; }
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Part Number", $category, "partnumber", $type, $sessdata);
|
||||
if ($desc =~ /System Firmware/i and $category =~ /product/i) {
|
||||
$type = 'firmware,bmc';
|
||||
}
|
||||
if ($desc =~ /NODE \d+/ and $category =~ /chassis/) {
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Part Number", $category, "partnumber", 'model', $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Serial Number", $category, "serialnumber", 'serial', $sessdata);
|
||||
} else {
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Part Number", $category, "partnumber", $type, $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Serial Number", $category, "serialnumber", $type, $sessdata);
|
||||
}
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Manufacturer", $category, "manufacturer", $type, $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Serial Number", $category, "serialnumber", $type, $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "FRU Number", $category, "frunum", $type, $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Version", $category, "version", $type, $sessdata);
|
||||
add_textual_fru($parsedfru, $desc . " " . $categorydesc . "MAC Address", $category, "macaddrs", "mac", $sessdata, addnumber => 1);
|
||||
@ -2937,6 +2948,7 @@ sub initfru_with_mprom {
|
||||
fru_initted($sessdata);
|
||||
return;
|
||||
}
|
||||
|
||||
$sessdata->{currfruid} = 0;
|
||||
$sessdata->{ipmisession}->subcmd(netfn => 0xa, command => 0x10, data => [0], callback => \&process_currfruid, callback_args => $sessdata);
|
||||
}
|
||||
@ -3202,10 +3214,29 @@ sub initfru_zero {
|
||||
}
|
||||
$sessdata->{fru_hash}->{ $frudex++ } = $fru;
|
||||
}
|
||||
|
||||
#Ok, done with fru 0, on to the other fru devices from SDR
|
||||
$sessdata->{frudex} = $frudex;
|
||||
if ($sessdata->{skipotherfru}) { #skip non-primary fru devices
|
||||
|
||||
if ($sessdata->{skipotherfru} and isopenpower($sessdata)) {
|
||||
# For openpower servers, fru 3 is used to get MTM/Serial information, fru 47 is used to get firmware information
|
||||
@{$sessdata->{frus_for_openpower}} = qw(3 47);
|
||||
my %fruids_hash = map {$_ => 1} @{$sessdata->{frus_for_openpower}};
|
||||
foreach my $key (keys %{ $sessdata->{sdr_hash} }) {
|
||||
my $sdr = $sessdata->{sdr_hash}->{$key};
|
||||
unless ($sdr->rec_type == 0x11) {
|
||||
next;
|
||||
}
|
||||
my $fru_id = $sdr->sensor_number;
|
||||
if (defined($fruids_hash{$fru_id})) {
|
||||
$sessdata->{sdr_info_for_openpower}->{$fru_id} = $sdr;
|
||||
}
|
||||
}
|
||||
$sessdata->{currfruid} = shift @{$sessdata->{frus_for_openpower}};
|
||||
$sessdata->{currfrusdr} = $sessdata->{sdr_info_for_openpower}->{$sessdata->{currfruid}};
|
||||
$sessdata->{ipmisession}->subcmd(netfn => 0xa, command => 0x10, data => [ $sessdata->{currfruid} ], callback => \&process_currfruid, callback_args => $sessdata);
|
||||
return;
|
||||
}
|
||||
fru_initted($sessdata);
|
||||
return;
|
||||
}
|
||||
@ -3521,6 +3552,18 @@ sub add_fruhash {
|
||||
add_textual_frus($fruhash, $sessdata->{currfrusdr}->id_string, "Chassis ", "chassis", undef, $sessdata);
|
||||
}
|
||||
}
|
||||
|
||||
if ($sessdata->{skipotherfru}) {
|
||||
if (scalar @{$sessdata->{frus_for_openpower}}) {
|
||||
$sessdata->{currfruid} = shift @{$sessdata->{frus_for_openpower}};
|
||||
$sessdata->{currfrusdr} = $sessdata->{sdr_info_for_openpower}->{$sessdata->{currfruid}};
|
||||
$sessdata->{ipmisession}->subcmd(netfn => 0xa, command => 0x10, data => [ $sessdata->{currfruid} ], callback => \&process_currfruid, callback_args => $sessdata);
|
||||
return;
|
||||
}
|
||||
fru_initted($sessdata);
|
||||
return;
|
||||
}
|
||||
|
||||
if (scalar @{ $sessdata->{dimmfru} }) {
|
||||
$sessdata->{currfrusdr} = shift @{ $sessdata->{dimmfru} };
|
||||
while ($sessdata->{currfrusdr}->sensor_number == 0 and scalar @{ $sessdata->{dimmfru} }) {
|
||||
@ -5876,7 +5919,7 @@ sub do_dcmi_operating {
|
||||
sub renergy {
|
||||
my $sessdata = shift;
|
||||
my @subcommands = @{ $sessdata->{extraargs} };
|
||||
if (isfirestone($sessdata)) {
|
||||
if (isopenpower($sessdata)) {
|
||||
unless (@subcommands) {
|
||||
@subcommands = qw/powerusage temperature/;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user