X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=rules%2Fccvnp-rule.drl;h=1471aa99e36676d02a0382da52e914c3f14e8947;hb=12a38b041d2a96cb641909cb40b96e941cc76354;hp=a4d2c06dc4fe23ed2978d4f92c8342eb6570525b;hpb=3f32eebfd7f601ea6cd71d522e1d0c2437088afb;p=holmes%2Frule-management.git diff --git a/rules/ccvnp-rule.drl b/rules/ccvnp-rule.drl index a4d2c06..1471aa9 100644 --- a/rules/ccvnp-rule.drl +++ b/rules/ccvnp-rule.drl @@ -54,8 +54,7 @@ function boolean isCorrelated(VesAlarm a, VesAlarm b) { return logicLinkA.equals(logicLinkB); } -function void updateAaiStatus(String networkId, String pnfName, String ifName, - String linkName, String status) { +function void updateAaiLinkStatus(String linkName, String status) { AaiQuery4Ccvpn aai = AaiQuery4Ccvpn.newInstance(); Map body = new HashMap(){ { @@ -63,6 +62,15 @@ function void updateAaiStatus(String networkId, String pnfName, String ifName, } }; aai.updateLogicLinkStatus(linkName, body); +} + +function void updateAaiTpStatus(String networkId, String pnfName, String ifName, String status) { + AaiQuery4Ccvpn aai = AaiQuery4Ccvpn.newInstance(); + Map body = new HashMap(){ + { + put("operational-status", status); + } + }; aai.updateTerminalPointStatus(networkId, pnfName, ifName, body); } @@ -72,15 +80,21 @@ function Map getAdditionalResourceInfo(String networkId, String Map ret = new HashMap(); - StringBuilder sb = new StringBuilder(); + StringBuilder sbn = new StringBuilder(); + StringBuilder sbi = new StringBuilder(); for(int i = 0; i < instances.size(); ++i) { JSONObject o = instances.getJSONObject(i); - String name = instances.getJSONObject(i).getString("service-instance-name"); - ret.put(name + ".input-parameters", "TBD"); - sb.append(name).append(","); + String name = o.getString("service-instance-name"); + String id = o.getString("service-instance-id"); + ret.put(id + ".input-parameters", o.getString("input-parameters")); + sbn.append(name).append(","); + sbi.append(id).append(","); } - ret.put("service-instance.service-instance-name", sb.substring(0, sb.length() -1).toString()); + ret.put("service-instance.service-instance-name", sbn.substring(0, sbn.length() -1).toString()); + ret.put("service-instance.service-instance-id", sbi.substring(0, sbi.length() -1).toString()); ret.put("vserver.vserver-name", "TBD"); + ret.put("globalSubscriberId", instances.getJSONObject(0).getString("globalSubscriberId")); + ret.put("serviceType", instances.getJSONObject(0).getString("serviceType")); return ret; } @@ -113,33 +127,41 @@ rule "Update AAI Information" when $a: VesAlarm(eventName.indexOf("Fault_Route_Status") != -1) then - updateAaiStatus ( - getAdditionalField($a, "networkId"), - getAdditionalField($a, "node"), - getAdditionalField($a, "tp-id"), - getLogicLink($a), - getAdditionalField($a, "oper-status") - ); + updateAaiTpStatus ( + getAdditionalField($a, "networkId"), + getAdditionalField($a, "node"), + getAdditionalField($a, "tp-id"), + getAdditionalField($a, "oper-status") + ); end rule "Set Up Correlation" no-loop true salience 200 when - $a: VesAlarm($id: eventId, $start: startEpochMicrosec, eventName.indexOf("Fault_Route_Status") != -1) - $b: VesAlarm(eventId != $id, eventName.indexOf("Fault_Route_Status") != -1, Math.abs(startEpochMicrosec - $start) < 60000) + $a: VesAlarm($id: eventId, + $start: startEpochMicrosec, + eventName.indexOf("Fault_Route_Status") != -1) + $b: VesAlarm(eventId != $id, + eventName.indexOf("Fault_Route_Status") != -1, + Math.abs(startEpochMicrosec - $start) < 60000) then - if (isCorrelated($a, $b)){ - // If any of the alarms have been marked as root, a policy message has ever been created and sent. Do NOT send it again. - if ($a.getRootFlag() != 1 && $b.getRootFlag() != 1) { - PolicyMsg msg = createPolicyMsg($a); - DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class); - dmaapService.publishPolicyMsg(msg, "unauthenticated.DCAE_CL_OUTPUT"); - } - $a.setRootFlag(1); - $b.setRootFlag(1); - update($a); - update($b); + String status = "down"; + if (status.equalsIgnoreCase(getAdditionalField($a, "oper-status")) + && status.equalsIgnoreCase(getAdditionalField($b, "oper-status"))) { + if (isCorrelated($a, $b)){ + // If any of the alarms have been marked as root, a policy message has ever been created and sent. Do NOT send it again. + if ($a.getRootFlag() != 1 && $b.getRootFlag() != 1) { + PolicyMsg msg = createPolicyMsg($a); + DmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class); + dmaapService.publishPolicyMsg(msg, "unauthenticated.DCAE_CL_OUTPUT"); + updateAaiLinkStatus(getLogicLink($a), status); + } + $a.setRootFlag(1); + $b.setRootFlag(1); + update($a); + update($b); + } } end @@ -147,14 +169,16 @@ rule "Clear Alarms" no-loop true salience 100 when - $a: VesAlarm(alarmIsCleared == 1, eventName.indexOf("Fault_Route_Status") != -1) + $a: VesAlarm(eventName.indexOf("Fault_Route_Status") != -1) then - if (DmaapService.alarmUniqueRequestID.containsKey($a.getEventId())) { - DmaapService.alarmUniqueRequestID.remove($a.getEventId()); + if ("up".equalsIgnoreCase(getAdditionalField($a, "oper-status"))) { + if (DmaapService.alarmUniqueRequestID.containsKey($a.getEventId())) { + DmaapService.alarmUniqueRequestID.remove($a.getEventId()); + } + + //TODO: send alarm clearing message to Policy - for now it's not needed. + //... + + retract($a); } - - //TODO: send alarm clearing message to Policy - for now it's not needed. - //... - - retract($a); end \ No newline at end of file