#!/usr/bin/env perl
use warnings;
use strict;
use XML::XPath;
use Data::Dumper;
use LWP::UserAgent;
use DateTime;
use DateTime::Format::Strptime;
use Cpanel::JSON::XS qw(encode_json);
my $xml = 'events.xml';
my $xp = XML::XPath->new(filename => $xml);
my $nodeset = $xp->findnodes('//event');
my $json;
my @records;
my $count=0; # Counter to set the Line variable
my $dtnow = DateTime->now;
foreach my $node ($nodeset->get_nodelist) {
my $severity = $xp->find('./severity', $node);
$severity =~ s/^\s+|\s+$//g; # Remove prefix newline \n charac
+ter
my $ticketnum = $xp->find("./custom_attribute_list/custom_att
+ribute[normalize-space(name)='SLB_RemedyIncident']/value", $node);
$ticketnum=~ s/^\s+|\s+$//g;
my $timereceived = $xp->find('./time_first_received', $node);
$timereceived=~ s/^\s+|\s+$//g;
my $service_name = $xp->find("./custom_attribute_list/custom_a
+ttribute[normalize-space(name)='Service Name']/value", $node);
$service_name=~ s/^\s+|\s+$//g;
my $ssrid = $xp->find("./custom_attribute_list/custom_attribut
+e[normalize-space(name)='SLB_SSRID']/value", $node);
$ssrid=~ s/^\s+|\s+$//gs;
my $remedyqueue = $xp->find("./custom_attribute_list/custom_at
+tribute[normalize-space(name)='SLB_RemedyQueue']/value", $node);
$remedyqueue = [ map $_->string_value =~ s/\n//r, $remedyqueue
+->get_nodelist ];
#Calculate the time difference
my $strp = DateTime::Format::Strptime->new(on_error=>'croak',p
+attern => '%Y-%m-%dT%H:%M:%S.%3NZ', time_zone=>'UTC');
my $dtevent = $strp->parse_datetime($timereceived);
my $diff_sec = $dtnow->subtract_datetime_absolute($dtevent)->i
+n_units('seconds');
my $diff_hours = $diff_sec/(60*60);
#print "$diff_sec s / $diff_hours h\n";
if ($diff_hours>2000) { # Get the event details which are more
+ then 2 hours
$count ++;
push @records, {
line => $count,
severity => $severity,
ticketnum => $ticketnum,
appname => $service_name . "(" . $ssrid . ")",
remedy_queue => $remedyqueue,
event_age => sprintf("%.0f", $diff_hours),
}
}
@records = sort { $b->{event_age} <=> $a->{event_age} } @recor
+ds; # sort the records in decending order of event_age
}
print Dumper @records;
# Convert into JSON format
$json = encode_json \@records;
# print $json;
my $uri = 'http://US1455EPC0674.dir.slb.com:12224/api/submit/3160
+9de09a484e20b9e3a6e5b502be66/dims/line/tags/availability';
my $jsondata = $json;
my $req = HTTP::Request->new( 'POST', $uri );
$req->header( 'Content-Type' => 'application/json');
$req->content( $json );
my $lwp = LWP::UserAgent->new;
$lwp->request( $req );
print "Data send to Dashboard";
|