added response to log RMC events to TEAL x_tealeventlog table.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@7979 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
3775d2fd04
commit
9b3449b98e
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$RES::EventResponse{'LogEventToTealEvenetLog'} = {
|
||||
Name => q(LogEventToTealEvenetLog),
|
||||
Locked => q(0),
|
||||
Actions => q({[logToTeal,{127},{0},{86400},/opt/xcat/sbin/rmcmon/logeventtoteal,3,0,0,0,{},0]}),
|
||||
};
|
||||
1;
|
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/perl
|
||||
BEGIN
|
||||
{
|
||||
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
|
||||
}
|
||||
use lib "$::XCATROOT/lib/perl";
|
||||
use xCAT::Utils;
|
||||
|
||||
if (exists($ENV{RSCT_VER})) {
|
||||
my $rsct_ver=$ENV{RSCT_VER};
|
||||
if (xCAT::Utils->CheckVersion($rsct_ver, "2.3.5.0") < 0) { exit 0;}
|
||||
}
|
||||
|
||||
$RES::EventResponse{'LogEventToTealEvenetLog_Batch'} = {
|
||||
Name => q(LogEventToTealEvenetLog_Batch),
|
||||
Locked => q(0),
|
||||
EventBatching => q(1),
|
||||
Actions => q({[logToTeal,{127},{0},{86400},/opt/xcat/sbin/rmcmon/logeventtoteal,3,0,0,0,{},0]}),
|
||||
};
|
||||
1;
|
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$RES::EventResponse{'LogEventToTealEvenetLog'} = {
|
||||
Name => q(LogEventToTealEvenetLog),
|
||||
Locked => q(0),
|
||||
Actions => q({[logToTeal,{127},{0},{86400},/opt/xcat/sbin/rmcmon/logeventtoteal,3,0,0,0,{},0]}),
|
||||
};
|
||||
1;
|
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/perl
|
||||
BEGIN
|
||||
{
|
||||
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
|
||||
}
|
||||
use lib "$::XCATROOT/lib/perl";
|
||||
use xCAT::Utils;
|
||||
|
||||
if (exists($ENV{RSCT_VER})) {
|
||||
my $rsct_ver=$ENV{RSCT_VER};
|
||||
if (xCAT::Utils->CheckVersion($rsct_ver, "2.3.5.0") < 0) { exit 0;}
|
||||
}
|
||||
|
||||
$RES::EventResponse{'LogEventToTealEvenetLog_Batch'} = {
|
||||
Name => q(LogEventToTealEvenetLog_Batch),
|
||||
Locked => q(0),
|
||||
EventBatching => q(1),
|
||||
Actions => q({[logToTeal,{127},{0},{86400},/opt/xcat/sbin/rmcmon/logeventtoteal,3,0,0,0,{},0]}),
|
||||
};
|
||||
1;
|
119
xCAT-rmc/scripts/logeventtoteal
Executable file
119
xCAT-rmc/scripts/logeventtoteal
Executable file
@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env perl
|
||||
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
# This script is used by LogEventToTealEventLog response to put RMC events into
|
||||
# the TEAL's x_tealeventlog table. It handles both batch and non-batching events.
|
||||
|
||||
BEGIN
|
||||
{
|
||||
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
|
||||
}
|
||||
use lib "$::XCATROOT/lib/perl";
|
||||
use strict;
|
||||
use Getopt::Std;
|
||||
use POSIX qw(strftime);
|
||||
use xCAT::Utils;
|
||||
use xCAT::MsgUtils;
|
||||
use IO::File;
|
||||
use TEAL::Semaphore;
|
||||
|
||||
my $batch=0;
|
||||
if (exists($ENV{ERRM_COND_BATCH})) { $batch=$ENV{ERRM_COND_BATCH}; }
|
||||
my @a=();
|
||||
my $condname=$ENV{ERRM_COND_NAME};
|
||||
my $respname=$ENV{ERRM_ER_NAME};
|
||||
|
||||
if (!$batch) { #handle single event
|
||||
my $time=$ENV{ERRM_TIME};
|
||||
my $nodenamelist=$ENV{ERRM_NODE_NAMELIST};
|
||||
$nodenamelist =~ s/\{(.*)\}/$1/;
|
||||
|
||||
my $event={
|
||||
event_id => "XR000001",
|
||||
time_occurred => convertTime($time),
|
||||
src_comp => $ENV{ERRM_RSRC_CLASS_PNAME},
|
||||
src_loc_type => "A",
|
||||
src_loc => "$nodenamelist##" . $ENV{ERRM_RSRC_NAME},
|
||||
rpt_comp => 'IBM.Condition',
|
||||
rpt_loc_type =>"A",
|
||||
rpt_loc => $ENV{ERRM_NODE_NAME} . "##" . $ENV{ERRM_COND_NAME},
|
||||
raw_data => $ENV{ERRM_ATTR_PNAME} . "=" . $ENV{ERRM_VALUE},
|
||||
};
|
||||
|
||||
push(@a, $event);
|
||||
} else { #handle event batching
|
||||
if ($ENV{ERRM_COND_BATCH_NUM} > 0) {
|
||||
#check if event detail file exist
|
||||
if (!exists($ENV{ERRM_EVENT_DETAIL_FILE})){
|
||||
xCAT::MsgUtils->message('S', "logeventtoteal: no event detail file specified in the response $respname for condition $condname.\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
my $filename=$ENV{ERRM_EVENT_DETAIL_FILE};
|
||||
if (! -f $filename) {
|
||||
xCAT::MsgUtils->message('S', "logeventtoteal: cannot find event detail file $filename in response $respname for condition $condname.\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
open(FILE1, "<$filename");
|
||||
readline(FILE1);#skip first 2 lines
|
||||
readline(FILE1);
|
||||
my $line1=readline(FILE1);
|
||||
my @aTemp=split(/=/, $line1);
|
||||
my $num_events=$aTemp[1];
|
||||
close(FILE1);
|
||||
|
||||
my $count;
|
||||
for ($count = 1; $count <= $num_events; $count++) {
|
||||
my $content=`sed -n "/Event $count:/,/ERRM_COND_BATCH/ p" $filename`;
|
||||
|
||||
my @content_array=split(/\n/, $content);
|
||||
pop(@content_array); #get rid of last line
|
||||
shift(@content_array); #get rid of firt line
|
||||
|
||||
my %content_hash=();
|
||||
foreach(@content_array) {
|
||||
/([^\=]+)\=(.*)/;
|
||||
$content_hash{$1}=$2;
|
||||
}
|
||||
|
||||
my $time=$content_hash{ERRM_TIME};
|
||||
my $nodenamelist=$content_hash{ERRM_NODE_NAMELIST};
|
||||
$nodenamelist =~ s/\{(.*)\}/$1/;
|
||||
my $event={
|
||||
event_id => "XR000001",
|
||||
time_occurred => convertTime($time),
|
||||
src_comp => $content_hash{ERRM_RSRC_CLASS_PNAME},
|
||||
src_loc_type => "A",
|
||||
src_loc => $nodenamelist . "##" . $content_hash{ERRM_RSRC_NAME},
|
||||
rpt_comp => "IBM.Condition",
|
||||
rpt_loc_type =>"A",
|
||||
rpt_loc => $content_hash{ERRM_NODE_NAME} . "##" . $content_hash{ERRM_COND_NAME},
|
||||
raw_data => $content_hash{ERRM_ATTR_PNAME} . "=" . $content_hash{ERRM_VALUE},
|
||||
};
|
||||
push(@a, $event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my ($rc, $msg)=xCAT::Utils->logEventsToTealDatabase(\@a);
|
||||
if ($rc) {
|
||||
xCAT::MsgUtils->message('S', "logeventtoteal:$msg. The condition is $condname. The response is $respname.\n");
|
||||
} else {
|
||||
my $s = TEAL::Semaphore->new();
|
||||
$s->post()
|
||||
}
|
||||
|
||||
# convert time string that can be used for timestamp datatype for db
|
||||
sub convertTime {
|
||||
my ($seconds, $micro) = split(/\,/, $_[0]);
|
||||
#return strftime("%A %D %T", localtime($seconds));
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($seconds);
|
||||
my $result=sprintf("%4d-%02d-%02d %02d:%02d:%02d.%06d", $year+1900,$mon+1,$mday,$hour,$min,$sec,$micro);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
exit $rc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user