From ea2d22887ba8b421571b7e720aa9a5d60a070d84 Mon Sep 17 00:00:00 2001 From: Casandra Qiu Date: Mon, 22 May 2017 15:27:11 -0400 Subject: [PATCH] Modify pdu error message and check pdu version for different OID --- xCAT-server/lib/xcat/plugins/pdu.pm | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/pdu.pm b/xCAT-server/lib/xcat/plugins/pdu.pm index 17e66f50c..e92a7dc0d 100644 --- a/xCAT-server/lib/xcat/plugins/pdu.pm +++ b/xCAT-server/lib/xcat/plugins/pdu.pm @@ -287,11 +287,11 @@ sub powerpduoutlet { my ($pdu, $outlet) = split /:/, $pdu_outlet; my $session = connectTopdu($pdu,$callback); if (!$session) { - $callback->({ errorcode => [1],error => "Couldn't connect to $pdu"}); + $callback->({ errorcode => [1],error => "$node: Couldn't connect to $pdu"}); next; } if ($outlet > $pdunodes->{$pdu}->{outlet} ) { - $callback->({ errorcode => [1],error => "outlet number $outlet is invalid for $pdu"}); + $callback->({ error => "$node: $pdu outlet number $outlet is invalid"}); next; } my $cmd; @@ -314,7 +314,7 @@ sub powerpduoutlet { } if ($session->{ErrorStr}) { - $callback->({ errorcode => [1],error => "$session->{ErrorStr} for $pdu outlet $outlet"}); + $callback->({ errorcode => [1],error => "$node: $pdu outlet $outlet has error = $session->{ErrorStr}"}); } else { $output = "$pdu outlet $outlet is $statstr"; xCAT::SvrUtils::sendmsg($output, $callback, $node, %allerrornodes); @@ -341,7 +341,8 @@ sub outletpower { my $type = "INTEGER"; if ($session->{newmib}) { $oid = ".1.3.6.1.4.1.2.6.223.8.2.2.1.13"; - } + } + my $varbind = new SNMP::Varbind([ $oid, $outlet, $value, $type ]); return $session->set($varbind); @@ -425,6 +426,7 @@ sub connectTopdu { my $community = "public"; my $session; my $msg = "connectTopdu"; + my $versionoid = ".1.3.6.1.4.1.2.6.223.7.3.0"; $session = new SNMP::Session( DestHost => $pdu, @@ -435,14 +437,17 @@ sub connectTopdu { unless ($session) { return; } - $session->{newmib} = 0; - my $pduversion = $session->get(".1.3.6.1.4.1.2.6.223.7.3.0"); - if ($pduversion =~ /(\d+)\.(\d+)_(\d+)/) { - if ($1 >= 1 and $2 >= 3 and $3 >= 3) { - $session->{newmib} = 1; - } + + my $varbind = new SNMP::Varbind([ $versionoid, '' ]); + my $pduversion = $session->get($varbind); + if ($session->{ErrorStr}) { + return; } + $session->{newmib} = 0; + if ($pduversion =~ /sLEN/) { + $session->{newmib} = 1; + } return $session; @@ -450,6 +455,4 @@ sub connectTopdu { - - 1;