/
c3mc-mon-mesg-caseinfo-record
executable file
·60 lines (45 loc) · 1.96 KB
/
c3mc-mon-mesg-caseinfo-record
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/data/Software/mydan/perl/bin/perl -I/data/Software/mydan/Connector/lib
use strict;
use warnings;
$|++;
use YAML::XS;
use MYDB;
=head1 SYNOPSIS
$0
=cut
local $/ = undef;
my @data = YAML::XS::Load( my $x = <STDIN> );
local $/ = "\n";
my $db = MYDB->new( "/data/Software/mydan/AGENT/conf/conn", delayedconnection => 1 );
sub recode
{
my $data = shift @_;
return unless( $data && ref $data eq 'HASH'
&& defined $data->{'fingerprint' } && $data->{'fingerprint' } =~ /^[a-zA-Z0-9]+$/
&& defined $data->{'labels.fromtreeid' } && $data->{'labels.fromtreeid' } =~ /^\d+$/
);
my %data = (
mtime => time,
treeid => $data->{'labels.fromtreeid'},
ackuuid => $data->{ack },
instance => $data->{'labels.instance' },
fingerprint => $data->{fingerprint },
caseuuid => $data->{c3monitormsguuid },
casestat => $data->{status },
title => $data->{title },
content => $data->{content },
);
$data{ instance } = $data->{'labels.instanceid' } if $data->{'labels.instanceid' };
$data{ instance } = $data->{'labels.cache_cluster_id' } if $data->{'labels.cache_cluster_id' };
$data{ instance } = $data->{'labels.dbinstance_identifier'} if $data->{'labels.dbinstance_identifier'};
my @col = keys %data;
eval{$db->execute( sprintf "replace into openc3_monitor_caseinfo(%s) value(%s)",join(',', @col),join(',', map{ $data{$_} //= ''; $data{$_} =~ s/'//;"'$data{$_}'"}@col) ); };
warn "caseinfo-record err: $@" if $@;
return unless $data->{to} && ref $data->{to} eq 'ARRAY';
eval{
map{ $db->execute( sprintf "replace into openc3_monitor_usercase(`user`,`caseuuid`) value('$_', '$data{caseuuid}')" ); }@{$data->{to}}
};
warn "usercase-record err: $@" if $@;
}
map{ recode($_ ) }@data;
print YAML::XS::Dump @data;