1 package org.onap.holmes.ccvpnBandwidth;
5 import org.onap.holmes.common.api.stat.VesAlarm;
6 import org.onap.holmes.common.api.stat.AlarmAdditionalField;
7 import org.onap.holmes.common.aai.AaiQuery4Ccvpn2;
8 import org.onap.holmes.common.exception.CorrelationException;
9 import org.onap.holmes.common.dmaap.entity.PolicyMsg;
10 import org.onap.holmes.common.dmaap.DmaapService;
11 import org.onap.holmes.common.utils.DroolsLog;
12 import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
14 import com.alibaba.fastjson.JSONArray;
15 import com.alibaba.fastjson.JSONObject;
17 import java.util.List;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.UUID;
23 function String getAdditionalField(VesAlarm a, String field) {
24 List<AlarmAdditionalField> fields = a.getAlarmAdditionalInformation();
25 for (AlarmAdditionalField f : fields) {
26 if (f.getName().equals(field)) {
33 function Map<String, Object> getAdditionalResourceInfo(VesAlarm a, String bandwidth) {
34 AaiQuery4Ccvpn2 aai = AaiQuery4Ccvpn2.newInstance();
35 JSONObject instance = aai.getServiceInstance(getAdditionalField(a, "siteService"));
36 Map<String, Object> ret = new HashMap<String, Object>();
37 ret.put("service-instance.service-instance-id", instance.getString("service-instance-id"));
38 ret.put("vserver.vserver-name", "TBD");
39 ret.put("globalSubscriberId", instance.getString("globalSubscriberId"));
40 ret.put("serviceType", instance.getString("serviceType"));
41 ret.put("vserver.is-closed-loop-disabled", "false");
42 ret.put("vserver.prov-status", "ACTIVE");
43 ret.put("bandwidth", bandwidth);
44 ret.put("bandwidth-change-time", getAdditionalField(a, "timestamp"));
45 ret.put("vnfId", instance.getString("vnfId"));
49 function PolicyMsg createPolicyMsg(VesAlarm alarm, String bandwidth) {
50 PolicyMsg m = new PolicyMsg();
51 m.setPolicyVersion("2.0.0");
52 m.setPolicyName("ccvpn");
53 m.setPolicyScope("service=SOTNService,type=SampleType,closedLoopControlName=CL-CCVPN-d925ed73-8231-4d02-9545-db4e101f88f8");
54 m.setClosedLoopControlName(DmaapService.loopControlNames.get("org.onap.holmes.ccvpnBandwidth"));
55 m.setRequestID(UUID.randomUUID().toString());
56 m.setClosedLoopAlarmStart(alarm.getStartEpochMicrosec());
57 m.setClosedLoopAlarmEnd(alarm.getLastEpochMicrosec());
58 m.setTarget("vserver.vserver-name");
59 m.setAai(getAdditionalResourceInfo(alarm, bandwidth));
61 DmaapService.alarmUniqueRequestID.put(alarm.getEventId(), m.getRequestID());
66 rule "Analyse traffic exception"
70 $a: VesAlarm(eventName.indexOf("bandwidth") != -1,
73 String bandwidth = "5000";
74 if ("Abnormal".equalsIgnoreCase(getAdditionalField($a, "exceptionType"))) {
77 PolicyMsg msg = createPolicyMsg($a, bandwidth);
78 DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);
79 dmaapService.publishPolicyMsg(msg, "dcae_cl_out");