added snmp desination setup for monitoring for blade center MM

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@935 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
linggao 2008-03-28 18:45:49 +00:00
parent d68304896c
commit d2648d49e4

View File

@ -66,6 +66,7 @@ sub start {
configBMC(1);
#enable MMAs if any
configMPA(1);
return (0, "started")
}
@ -82,12 +83,15 @@ sub start {
#--------------------------------------------------------------------------------
sub configBMC {
my $action=shift;
my $isSV=xCAT::Utils->isServiceNode();
#the ips of this node
my $ret_text="";
my $ret_val=0;
#the identification of this node
my @hostinfo=xCAT::Utils->determinehostname();
%iphash=();
foreach(@hostinfo) {$iphash{$_}=1;}
my $isSV=xCAT::Utils->isServiceNode();
my %masterhash=();
@ -128,7 +132,7 @@ sub configBMC {
}
$nrtab->close();
if (@node_a==0){ return (0, "");} #nothing to handle
if (@node_a==0){ return ($ret_val, $ret_text);} #nothing to handle
#now doing the real thing: enable PEF alert policy table
my $noderange=join(',',@node_a );
@ -136,7 +140,8 @@ sub configBMC {
if ($action==0) {$actionstring="dis";}
my $result = `XCATBYPASS=Y rspconfig $noderange alert=$actionstring 2>&1`;
if ($?) {
xCAT::MsgUtils->message('S', "[mon]: Changeing SNMP PEF policy for $noderange:\n $result\n");
xCAT::MsgUtils->message('S', "[mon]: Changeing SNMP PEF policy for IPMI nodes $noderange:\n $result\n");
$ret_tex .= "Changeing SNMP PEF policy for IPMI nodes $noderange:\n $result\n";
}
#setup the snmp destination
@ -147,13 +152,111 @@ sub configBMC {
my $nr2=join(',', @$ref2);
my $result2 = `XCATBYPASS=Y rspconfig $nr2 snmpdest=$_ 2>&1`;
if ($?) {
xCAT::MsgUtils->message('S', "[mon]: Changing SNMP destination for $nr2:\n $result2\n");
xCAT::MsgUtils->message('S', "[mon]: Changing SNMP destination for IPMI nodes $nr2:\n $result2\n");
$ret_tex .= "Changing SNMP destination for IPMI nodes $nr2:\n $result2\n";
}
}
}
return ($ret_val, $ret_text);
}
#--------------------------------------------------------------------------------
=head3 configMPA
This function configures Blade Center Management Module to setup the snmp destination,
enable/disable remote alert notification.
Arguments:
actioon -- 1 enable remote alert notification. 0 disable remote alert notification.
Returns:
(return code, message)
=cut
#--------------------------------------------------------------------------------
sub configMPA {
my $action=shift;
my $ret_val=0;
my $ret_text="";
#the identification of this node
my @hostinfo=xCAT::Utils->determinehostname();
%iphash=();
foreach(@hostinfo) {$iphash{$_}=1;}
my $isSV=xCAT::Utils->isServiceNode();
my %mpa_hash=();
my %masterhash=();
my @node_a=();
my $nrtab = xCAT::Table->new('noderes');
my $table=xCAT::Table->new("mp");
if ($table) {
my @tmp1=$table->getAllNodeAttribs(['mpa']);
if (defined(@tmp1) && (@tmp1 > 0)) {
foreach(@tmp1) {
my $mpa=$_->{mpa};
if ($mpa_hash{$mpa}) { next;} #already handled
$mpa_hash{$mpa}=1;
my $monserver;
my $tent = $nrtab->getNodeAttribs($mpa,['monserver', 'servicenode']);
if ($tent) {
if ($tent->{monserver}) { $monserver=$tent->{monserver}; }
elsif ($tent->{servicenode}) { $monserver=$tent->{servicenode}; }
}
if ($monserver) {
if (!$iphash{$monserver}) { next;} #skip if has sn but not localhost
} else {
if ($isSV) { next; } #skip if does not have sn but localhost is a sn
}
push(@node_a, $mpa);
# find the master node and add the node in the hash
$master=xCAT::Utils->GetMasterNodeName($mpa); #should we use $bmc?
if(exists($masterhash{$master})) {
my $ref=$masterhash{$master};
push(@$ref, $mpa);
} else { $masterhash{$master}=[$mpa]; }
} #foreach
}
$table->close();
}
$nrtab->close();
if (@node_a==0){ return ($ret_val, $ret_text);} #nothing to handle
#now doing the real thing: enable PEF alert policy table
my $noderange=join(',',@node_a );
#print "noderange=@noderange\n";
my $actionstring="en";
if ($action==0) {$actionstring="dis";}
my $result = `XCATBYPASS=Y rspconfig $noderange alert=$actionstring 2>&1`;
if ($?) {
xCAT::MsgUtils->message('S', "[mon]: Changeing SNMP remote alert profile for Blade Center MM $noderange:\n $result\n");
$ret_text .= "Changeing SNMP remote alert profile for Blade Center MM $noderange:\n $result\n";
}
#setup the snmp destination
if ($action==1) {
foreach (keys(%masterhash)) {
my $ref2=$masterhash{$_};
if (@$ref2==0) { next;}
my $nr2=join(',', @$ref2);
my $result2 = `XCATBYPASS=Y rspconfig $nr2 snmpdest=$_ 2>&1`;
if ($?) {
xCAT::MsgUtils->message('S', "[mon]: Changing SNMP destination for Blade Center MM $nr2:\n $result2\n");
$ret_text .= "Changing SNMP destination for Blade Center MM $nr2:\n $result2\n";
}
}
}
return ($ret_val, $ret_text);
}
#--------------------------------------------------------------------------------
=head3 configSNMP
This function puts xcat_traphanlder into the snmptrapd.conf file and
@ -255,6 +358,9 @@ sub stop {
# do not turn it on on the service node
#if (xCAT::Utils->isServiceNode()) { return (0, "");}
#disable MMAs if any
configMPA(0);
#disable BMC so that it stop senging alerts (PETs) to this node
configBMC(0);