Submitting the VoLTE Rule
[holmes/rule-management.git] / rules / volte-rule.drl
1 package org.onap.holmes.droolsRule;
2
3 import org.onap.holmes.common.dmaap.DmaapService;
4 import org.onap.holmes.common.api.stat.VesAlarm;
5 import org.onap.holmes.common.aai.CorrelationUtil;
6 import org.onap.holmes.common.dmaap.entity.PolicyMsg;
7 import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
8 import org.onap.holmes.common.utils.DroolsLog;
9  
10
11 rule "Relation_analysis_Rule"
12 salience 200
13 no-loop true
14     when
15         $root : VesAlarm(alarmIsCleared == 0,
16             $sourceId: sourceId, sourceId != null && !sourceId.equals(""),
17                         $sourceName: sourceName, sourceName != null && !sourceName.equals(""),
18                         $startEpochMicrosec: startEpochMicrosec,
19             eventName in ("Fault_MultiCloud_VMFailure"),
20             $eventId: eventId)
21         $child : VesAlarm( eventId != $eventId, parentId == null,
22             CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId, $sourceName),
23             eventName in ("Fault_IMSSBC_Backup MPU is down"),
24             startEpochMicrosec < $startEpochMicrosec + 600000000 && startEpochMicrosec > $startEpochMicrosec - 600000000 )
25     then
26                 DroolsLog.printInfo("Correlation Identified: Root: ID=" + $root.getEventId() + ", Event Name=" + $root.getEventName() +"; Child: ID=" + $child.getEventId() + ", Event Name=" + $child.getEventName());
27                 $child.setParentId($root.getEventId());
28                 update($child);
29 end
30
31 rule "root_has_child_handle_Rule"
32 salience 150
33 no-loop true
34         when
35                 $root : VesAlarm(alarmIsCleared == 0, rootFlag == 0, $eventId: eventId)
36                 $child : VesAlarm(eventId != $eventId, parentId == $eventId)
37         then
38                 DroolsLog.printInfo("Root alarm: ID=" + $root.getEventId() + ", Event Name=" + $root.getEventName());
39                 DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);
40                 PolicyMsg policyMsg = dmaapService.getPolicyMsg($root, $child, "org.onap.holmes.droolsRule");
41         dmaapService.publishPolicyMsg(policyMsg, "unauthenticated.DCAE_CL_OUTPUT");
42                 $root.setRootFlag(1);
43                 update($root);
44 end
45
46 rule "root_no_child_handle_Rule"
47 salience 100
48 no-loop true
49     when
50         $root : VesAlarm(alarmIsCleared == 0, rootFlag == 0,
51             sourceId != null && !sourceId.equals(""),
52                         sourceName != null && !sourceName.equals(""),
53             eventName in ("Fault_MultiCloud_VMFailure"))
54     then
55                 DroolsLog.printInfo("New alarm: ID=" + $root.getEventId() + ", Event Name=" + $root.getEventName());
56                 DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);
57                 PolicyMsg policyMsg = dmaapService.getPolicyMsg($root, null, "org.onap.holmes.droolsRule");
58         dmaapService.publishPolicyMsg(policyMsg, "unauthenticated.DCAE_CL_OUTPUT");
59                 $root.setRootFlag(1);
60                 update($root);
61 end
62
63 rule "root_cleared_handle_Rule"
64 salience 100
65 no-loop true
66     when
67         $root : VesAlarm(alarmIsCleared == 1, rootFlag == 1)
68     then
69                 DroolsLog.printInfo("Alarm cleared: ID=" + $root.getEventId() + ", Event Name=" + $root.getEventName());
70                 DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);
71                 PolicyMsg policyMsg = dmaapService.getPolicyMsg($root, null, "org.onap.holmes.droolsRule");
72         dmaapService.publishPolicyMsg(policyMsg, "unauthenticated.DCAE_CL_OUTPUT");
73                 retract($root);
74 end
75
76 rule "child_handle_Rule"
77 salience 100
78 no-loop true
79     when
80         $child : VesAlarm(alarmIsCleared == 1, rootFlag == 0)
81     then
82                 DroolsLog.printInfo("Alarm cleared: ID=" + $child.getEventId() + ", Event Name=" + $child.getEventName());
83                 retract($child);
84 end