Drools Rule file for MDONS use case 04/109704/1
authorMehreen Kaleem <mehreen.kaleem@us.fujitsu.com>
Tue, 30 Jun 2020 17:18:56 +0000 (17:18 +0000)
committerMehreen Kaleem <mehreen.kaleem@us.fujitsu.com>
Tue, 30 Jun 2020 17:19:03 +0000 (17:19 +0000)
Change-Id: Iec9416b83e7e112875942b160a5aa480389ddc88
Issue-ID: HOLMES-312
Signed-off-by: Mehreen Kaleem <mehreen.kaleem@us.fujitsu.com>
rules/mdons-rule.drl [new file with mode: 0644]

diff --git a/rules/mdons-rule.drl b/rules/mdons-rule.drl
new file mode 100644 (file)
index 0000000..c4bc803
--- /dev/null
@@ -0,0 +1,130 @@
+package org.onap.holmes.mdonsPnf;\r
+\r
+dialect "java"\r
+import org.onap.holmes.common.api.stat.VesAlarm;\r
+import org.onap.holmes.common.api.stat.AlarmAdditionalField;\r
+import org.onap.holmes.common.aai.AaiQueryMdons;\r
+import org.onap.holmes.common.exception.CorrelationException;\r
+import org.onap.holmes.common.dmaap.entity.PolicyMsg;\r
+import org.onap.holmes.common.dmaap.DmaapService;\r
+import org.onap.holmes.common.utils.DroolsLog;\r
+import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;\r
+import com.alibaba.fastjson.JSONArray;\r
+import com.alibaba.fastjson.JSONObject;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.UUID;\r
+       \r
+function Map<String, String> processAlarm(String sourceId) {\r
+       AaiQueryMdons mdons = AaiQueryMdons.newInstance();\r
+    DroolsLog.printInfo("Alarm pnf id " + sourceId);\r
+       String pnfName = mdons.getPnfNameFromPnfId(sourceId);\r
+       DroolsLog.printInfo("Pnf name from AAI" + pnfName);\r
+       mdons.updatePnfOperationalStatus(pnfName, "down");\r
+       Map<String, String> accessMap = mdons.processPnf(pnfName);\r
+       DroolsLog.printInfo("Access List from AAI" + accessMap.toString());\r
+       mdons.updateLinksForAccessService(accessMap);\r
+    return accessMap;\r
+}\r
+\r
+function void processAlarmCleared(String sourceId) {\r
+       AaiQueryMdons mdons = AaiQueryMdons.newInstance();\r
+       DroolsLog.printInfo("Alarm pnf id " + sourceId);\r
+       String pnfName = mdons.getPnfNameFromPnfId(sourceId);\r
+       DroolsLog.printInfo("Pnf name from AAI" + pnfName);\r
+       mdons.updatePnfOperationalStatus(pnfName, "up");\r
+}\r
+\r
+function PolicyMsg createPolicyMsg(VesAlarm alarm, String serviceInstanceId, String serviceName) {\r
+    PolicyMsg m = new PolicyMsg();\r
+    m.setPolicyVersion("1.0.0");\r
+       m.setVersion("0.0.1");\r
+    m.setPolicyName("mdons");\r
+    m.setPolicyScope("service=OTNService,type=SampleType,closedLoopControlName=ControlLoop-MDONS-2179b738-fd36-4843-a71a-a8c24c70c66b");\r
+    m.setClosedLoopControlName("ControlLoop-MDONS-2179b738-fd36-4843-a71a-a8c24c70c66b");\r
+    m.setRequestID(UUID.randomUUID().toString());\r
+    m.setClosedLoopAlarmStart(alarm.getStartEpochMicrosec());\r
+    m.setClosedLoopAlarmEnd(alarm.getLastEpochMicrosec());\r
+    m.setTarget("vserver.vserver-name");\r
+    m.setAai(getAaiObjectPolicy(serviceName, serviceInstanceId));\r
+       \r
+    DmaapService.alarmUniqueRequestID.put(alarm.getEventId(), m.getRequestID());\r
+    return m;\r
+    }\r
+       \r
+function Map<String, Object> getAaiObjectPolicy(String serviceName, String serviceInstanceId){\r
+       Map<String, Object> aaiMap = new HashMap<String, Object>();\r
+       aaiMap.put("service-name", serviceName);\r
+       aaiMap.put("request-id" , serviceInstanceId);\r
+       aaiMap.put("service-type" , "MDONS_OTN");\r
+       return aaiMap;\r
+}      \r
+       \r
+rule "Process Alarms MSA"\r
+       no-loop true\r
+    salience 200\r
+       when\r
+        $a: VesAlarm(sourceId.contains("OWBSPDRNE"), \r
+                        rootFlag != 1, eventSeverity.equals("MAJOR"))          \r
+    then\r
+               DroolsLog.printInfo("MSA Alarm: ID for alarm raised=" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
+               Map<String, String> map = processAlarm($a.getSourceId() + "-XPDR1");\r
+               for(Map.Entry<String,String> entry : map.entrySet()){\r
+                   PolicyMsg msg = createPolicyMsg($a, entry.getKey(), entry.getValue());\r
+                       DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\r
+                       dmaapService.publishPolicyMsg(msg, "unauthenticated.DCAE_Output_Event");\r
+                       DroolsLog.printInfo("Published to policy=" + msg.toString());\r
+\r
+               }\r
+               $a.setRootFlag(1);\r
+\r
+end    \r
+\r
+rule "Process Alarms TAPI"\r
+       no-loop true\r
+    salience 200\r
+       when\r
+        $a: VesAlarm(eventId.contains("FW950074SDN"), \r
+                        rootFlag != 1, eventSeverity.equals("MINOR"))          \r
+    then\r
+               DroolsLog.printInfo("TAPI Alarm: ID for alarm raised=" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
+               Map<String, String> map = processAlarm($a.getEventId());\r
+               for(Map.Entry<String,String> entry : map.entrySet()){\r
+                   PolicyMsg msg = createPolicyMsg($a, entry.getKey(), entry.getValue());\r
+                       DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\r
+                       dmaapService.publishPolicyMsg(msg, "unauthenticated.DCAE_Output_Event");\r
+                       DroolsLog.printInfo("Published to policy=" + msg.toString());\r
+\r
+               }\r
+               $a.setRootFlag(1);\r
+\r
+end    \r
+\r
+rule "Process Alarms cleared MSA"\r
+       no-loop true\r
+    salience 200\r
+       when\r
+        $a: VesAlarm(sourceId.contains("OWBSPDRNE"), \r
+                        rootFlag != 1, eventSeverity.equals("NORMAL")) \r
+    then\r
+               DroolsLog.printInfo("MSA Alarm: ID for Alarm cleared =" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
+               processAlarmCleared($a.getSourceId() + "-XPDR1");\r
+               $a.setRootFlag(1);\r
+\r
+end    \r
+\r
+rule "Process Alarms cleared TAPI"\r
+       no-loop true\r
+    salience 200\r
+       when\r
+        $a: VesAlarm(eventId.contains("FW950074SDN"), \r
+                        rootFlag != 1, eventSeverity.equals("NORMAL"))         \r
+    then\r
+               DroolsLog.printInfo("TAPI Alarm: ID for Alarm cleared =" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
+               processAlarmCleared($a.getEventId());\r
+               $a.setRootFlag(1);\r
+\r
+end    
\ No newline at end of file