From f26aba338b7be2d7f7953fa54dfd0c23f60f0b87 Mon Sep 17 00:00:00 2001 From: Casandra Qiu Date: Thu, 23 Mar 2017 12:07:52 -0400 Subject: [PATCH 1/4] rinv command get error message on Habanero --- xCAT-server/lib/xcat/plugins/ipmi.pm | 45 +++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index ae76557c1..0134cb4e4 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -2666,16 +2666,18 @@ sub add_textual_frus { my $type = shift; my $sessdata = shift; unless ($type) { $type = 'hw'; } + if ($desc =~ /System Firmware/i and $category =~ /product/i) { $type = 'firmware,bmc'; } - if ($desc =~ /NODE \d+/ and $category =~ /chassis/) { + if ( ($desc =~ /NODE \d+/ or $desc =~ /Backplane/) 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 . "FRU Number", $category, "frunum", $type, $sessdata); add_textual_fru($parsedfru, $desc . " " . $categorydesc . "Version", $category, "version", $type, $sessdata); @@ -3035,6 +3037,7 @@ sub initfru_with_mprom { sub process_currfruid { my $rsp = shift; my $sessdata = shift; + if ($rsp->{code} == 0xcb) { $sessdata->{currfrudata} = "Not Present"; $sessdata->{currfrudone} = 1; @@ -3299,7 +3302,11 @@ sub initfru_zero { 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); + if (isHabanero($sessdata)) { + @{$sessdata->{frus_for_openpower}} = qw(2 43); + } else { + @{$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}; @@ -3692,7 +3699,7 @@ sub readcurrfrudevice { if ($data[0] != $sessdata->{currfruchunk}) { # Fix FRU 43,48 and 49 for GRS server that they can not return as much data as shall return - if ($data[0] gt 0) { + if ($data[0] ge 0) { $sessdata->{currfrudone} = 1; } else { my $text = "Received incorrect data from BMC for FRU ID: " . $sessdata->{currfruid}; @@ -7683,7 +7690,7 @@ sub preprocess_request { #pdu commands will be handled in the pdu plugin if(($subcmd eq 'pduoff') || ($subcmd eq 'pduon') || ($subcmd eq 'pdustat')){ - return 0; + return 0; } if (($subcmd ne 'reseat') && ($subcmd ne 'stat') && ($subcmd ne 'state') && ($subcmd ne 'status') && ($subcmd ne 'on') && ($subcmd ne 'off') && ($subcmd ne 'softoff') && ($subcmd ne 'nmi') && ($subcmd ne 'cycle') && ($subcmd ne 'reset') && ($subcmd ne 'boot') && ($subcmd ne 'wake') && ($subcmd ne 'suspend')) { @@ -8459,6 +8466,36 @@ sub genhwtree } +########################################################################## +# To check if this is Habanero system +# we identified Hananero via Chassis Part number : 8348-21C +########################################################################## +sub isHabanero +{ + my $sessdata = shift; + + my $bmc_addr = $sessdata->{ipmisession}->{bmc}; + my $bmc_userid = $sessdata->{ipmisession}->{userid}; + my $bmc_password = undef; + if (defined($sessdata->{ipmisession}->{password})) { + $bmc_password = $sessdata->{ipmisession}->{password}; + } + + my $pre_cmd = "$IPMIXCAT -H $bmc_addr -I lanplus -U $bmc_userid"; + if ($bmc_password) { + $pre_cmd = $pre_cmd . " -P $bmc_password"; + } + + my $cmd = $pre_cmd . " fru print 2"; + my $output = xCAT::Utils->runcmd($cmd, -1); + if ($::RUNCMD_RC == 0) { + if ($output =~ /8348-21C/) { + return 1; + } + } + + return 0; +} From 35e704bd14a6dd3e7ec781f93f88290a2a5610b5 Mon Sep 17 00:00:00 2001 From: Casandra Qiu Date: Thu, 23 Mar 2017 15:05:21 -0400 Subject: [PATCH 2/4] modify with Victor's review --- xCAT-server/lib/xcat/plugins/ipmi.pm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 0134cb4e4..b2b4e8d24 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -3288,7 +3288,7 @@ sub initfru_zero { if ($_->{encoding} == 3) { $fru->value($_->{value}); } else { - next; + #print Dumper($_); #print $_->{encoding}; @@ -3301,9 +3301,10 @@ sub initfru_zero { 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 - if (isHabanero($sessdata)) { + # For openpower Big Data servers, fru 2 has MTM/Serial and fru 43 has firmware information + if (isopenpower_bd($sessdata)) { @{$sessdata->{frus_for_openpower}} = qw(2 43); + # For openpower HPC servers, fru 3 has MTM/Serial and fru 47 has firmware information } else { @{$sessdata->{frus_for_openpower}} = qw(3 47); } @@ -8467,10 +8468,10 @@ sub genhwtree } ########################################################################## -# To check if this is Habanero system -# we identified Hananero via Chassis Part number : 8348-21C +# To check if this is openpower Big Data system +# we identified it via Chassis Part number : 8348-21C ########################################################################## -sub isHabanero +sub isopenpower_bd { my $sessdata = shift; From d022582718c60801084b4c6c99d20047a0480753 Mon Sep 17 00:00:00 2001 From: Casandra Qiu Date: Thu, 23 Mar 2017 17:29:30 -0400 Subject: [PATCH 3/4] add back the line I deleted --- xCAT-server/lib/xcat/plugins/ipmi.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index b2b4e8d24..ee9f2184e 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -3288,7 +3288,7 @@ sub initfru_zero { if ($_->{encoding} == 3) { $fru->value($_->{value}); } else { - + next; #print Dumper($_); #print $_->{encoding}; From 8b8021fa3f9b42827a9d2cb17c2b65dc3b3ae807 Mon Sep 17 00:00:00 2001 From: Casandra Qiu Date: Fri, 24 Mar 2017 14:18:25 -0400 Subject: [PATCH 4/4] remove checking for Habanero server --- xCAT-server/lib/xcat/plugins/ipmi.pm | 41 ++-------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index ee9f2184e..30edfb46e 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -3302,12 +3302,8 @@ sub initfru_zero { if ($sessdata->{skipotherfru} and isopenpower($sessdata)) { # For openpower Big Data servers, fru 2 has MTM/Serial and fru 43 has firmware information - if (isopenpower_bd($sessdata)) { - @{$sessdata->{frus_for_openpower}} = qw(2 43); # For openpower HPC servers, fru 3 has MTM/Serial and fru 47 has firmware information - } else { - @{$sessdata->{frus_for_openpower}} = qw(3 47); - } + @{$sessdata->{frus_for_openpower}} = qw(2 3 43 47); my %fruids_hash = map {$_ => 1} @{$sessdata->{frus_for_openpower}}; foreach my $key (keys %{ $sessdata->{sdr_hash} }) { my $sdr = $sessdata->{sdr_hash}->{$key}; @@ -3594,7 +3590,7 @@ sub add_fruhash { $fru->rec_type("hw"); } $fru->value($sessdata->{currfrudata}); - if (exists($sessdata->{currfrusdr})) { + if ($sessdata->{currfrusdr}) { $fru->desc($sessdata->{currfrusdr}->id_string); } $sessdata->{fru_hash}->{ $sessdata->{frudex} } = $fru; @@ -8467,37 +8463,4 @@ sub genhwtree } -########################################################################## -# To check if this is openpower Big Data system -# we identified it via Chassis Part number : 8348-21C -########################################################################## -sub isopenpower_bd -{ - my $sessdata = shift; - - my $bmc_addr = $sessdata->{ipmisession}->{bmc}; - my $bmc_userid = $sessdata->{ipmisession}->{userid}; - my $bmc_password = undef; - if (defined($sessdata->{ipmisession}->{password})) { - $bmc_password = $sessdata->{ipmisession}->{password}; - } - - my $pre_cmd = "$IPMIXCAT -H $bmc_addr -I lanplus -U $bmc_userid"; - if ($bmc_password) { - $pre_cmd = $pre_cmd . " -P $bmc_password"; - } - - my $cmd = $pre_cmd . " fru print 2"; - my $output = xCAT::Utils->runcmd($cmd, -1); - if ($::RUNCMD_RC == 0) { - if ($output =~ /8348-21C/) { - return 1; - } - } - - return 0; -} - - - 1;