Changed the CL Ouput Topic to dcae_cl_out
[holmes/rule-management.git] / rules / mdons-rule.drl
1 package org.onap.holmes.mdonsPnf;\r
2 \r
3 dialect "java"\r
4 import org.onap.holmes.common.api.stat.VesAlarm;\r
5 import org.onap.holmes.common.api.stat.AlarmAdditionalField;\r
6 import org.onap.holmes.common.aai.AaiQueryMdons;\r
7 import org.onap.holmes.common.exception.CorrelationException;\r
8 import org.onap.holmes.common.dmaap.entity.PolicyMsg;\r
9 import org.onap.holmes.common.dmaap.DmaapService;\r
10 import org.onap.holmes.common.utils.DroolsLog;\r
11 import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;\r
12 import com.alibaba.fastjson.JSONArray;\r
13 import com.alibaba.fastjson.JSONObject;\r
14 \r
15 import java.util.List;\r
16 import java.util.Map;\r
17 import java.util.ArrayList;\r
18 import java.util.HashMap;\r
19 import java.util.UUID;\r
20         \r
21 function Map<String, String> processAlarm(String sourceId) {\r
22         AaiQueryMdons mdons = AaiQueryMdons.newInstance();\r
23     DroolsLog.printInfo("Alarm pnf id " + sourceId);\r
24         String pnfName = mdons.getPnfNameFromPnfId(sourceId);\r
25         DroolsLog.printInfo("Pnf name from AAI" + pnfName);\r
26         mdons.updatePnfOperationalStatus(pnfName, "down");\r
27         Map<String, String> accessMap = mdons.processPnf(pnfName);\r
28         DroolsLog.printInfo("Access List from AAI" + accessMap.toString());\r
29         mdons.updateLinksForAccessService(accessMap);\r
30     return accessMap;\r
31 }\r
32 \r
33 function void processAlarmCleared(String sourceId) {\r
34         AaiQueryMdons mdons = AaiQueryMdons.newInstance();\r
35         DroolsLog.printInfo("Alarm pnf id " + sourceId);\r
36         String pnfName = mdons.getPnfNameFromPnfId(sourceId);\r
37         DroolsLog.printInfo("Pnf name from AAI" + pnfName);\r
38         mdons.updatePnfOperationalStatus(pnfName, "up");\r
39 }\r
40 \r
41 function PolicyMsg createPolicyMsg(VesAlarm alarm, String serviceInstanceId, String serviceName) {\r
42     PolicyMsg m = new PolicyMsg();\r
43     m.setPolicyVersion("1.0.0");\r
44         m.setVersion("0.0.1");\r
45     m.setPolicyName("mdons");\r
46     m.setPolicyScope("service=OTNService,type=SampleType,closedLoopControlName=ControlLoop-MDONS-2179b738-fd36-4843-a71a-a8c24c70c66b");\r
47     m.setClosedLoopControlName("ControlLoop-MDONS-2179b738-fd36-4843-a71a-a8c24c70c66b");\r
48     m.setRequestID(UUID.randomUUID().toString());\r
49     m.setClosedLoopAlarmStart(alarm.getStartEpochMicrosec());\r
50     m.setClosedLoopAlarmEnd(alarm.getLastEpochMicrosec());\r
51     m.setTarget("vserver.vserver-name");\r
52     m.setAai(getAaiObjectPolicy(serviceName, serviceInstanceId));\r
53         \r
54     DmaapService.alarmUniqueRequestID.put(alarm.getEventId(), m.getRequestID());\r
55     return m;\r
56     }\r
57         \r
58 function Map<String, Object> getAaiObjectPolicy(String serviceName, String serviceInstanceId){\r
59         Map<String, Object> aaiMap = new HashMap<String, Object>();\r
60         aaiMap.put("service-name", serviceName);\r
61         aaiMap.put("request-id" , serviceInstanceId);\r
62         aaiMap.put("service-type" , "MDONS_OTN");\r
63         return aaiMap;\r
64 }       \r
65         \r
66 rule "Process Alarms MSA"\r
67         no-loop true\r
68     salience 200\r
69         when\r
70         $a: VesAlarm(sourceId.contains("OWBSPDRNE"), \r
71                         rootFlag != 1, eventSeverity.equals("MAJOR"))           \r
72     then\r
73                 DroolsLog.printInfo("MSA Alarm: ID for alarm raised=" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
74                 Map<String, String> map = processAlarm($a.getSourceId() + "-XPDR1");\r
75                 for(Map.Entry<String,String> entry : map.entrySet()){\r
76                     PolicyMsg msg = createPolicyMsg($a, entry.getKey(), entry.getValue());\r
77                         DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\r
78                         dmaapService.publishPolicyMsg(msg, "dcae_cl_out");\r
79                         DroolsLog.printInfo("Published to policy=" + msg.toString());\r
80 \r
81                 }\r
82                 $a.setRootFlag(1);\r
83 \r
84 end     \r
85 \r
86 rule "Process Alarms TAPI"\r
87         no-loop true\r
88     salience 200\r
89         when\r
90         $a: VesAlarm(eventId.contains("FW950074SDN"), \r
91                         rootFlag != 1, eventSeverity.equals("MINOR"))           \r
92     then\r
93                 DroolsLog.printInfo("TAPI Alarm: ID for alarm raised=" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
94                 Map<String, String> map = processAlarm($a.getEventId());\r
95                 for(Map.Entry<String,String> entry : map.entrySet()){\r
96                     PolicyMsg msg = createPolicyMsg($a, entry.getKey(), entry.getValue());\r
97                         DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\r
98                         dmaapService.publishPolicyMsg(msg, "dcae_cl_out");\r
99                         DroolsLog.printInfo("Published to policy=" + msg.toString());\r
100 \r
101                 }\r
102                 $a.setRootFlag(1);\r
103 \r
104 end     \r
105 \r
106 rule "Process Alarms cleared MSA"\r
107         no-loop true\r
108     salience 200\r
109         when\r
110         $a: VesAlarm(sourceId.contains("OWBSPDRNE"), \r
111                         rootFlag != 1, eventSeverity.equals("NORMAL"))  \r
112     then\r
113                 DroolsLog.printInfo("MSA Alarm: ID for Alarm cleared =" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
114                 processAlarmCleared($a.getSourceId() + "-XPDR1");\r
115                 $a.setRootFlag(1);\r
116 \r
117 end     \r
118 \r
119 rule "Process Alarms cleared TAPI"\r
120         no-loop true\r
121     salience 200\r
122         when\r
123         $a: VesAlarm(eventId.contains("FW950074SDN"), \r
124                         rootFlag != 1, eventSeverity.equals("NORMAL"))          \r
125     then\r
126                 DroolsLog.printInfo("TAPI Alarm: ID for Alarm cleared =" + $a.getEventId() + ", Event Name=" + $a.getSourceId());\r
127                 processAlarmCleared($a.getEventId());\r
128                 $a.setRootFlag(1);\r
129 \r
130 end