--- /dev/null
+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