+ } catch (NullPointerException e) {
+ log.error("DMaaP configurations does not exist!");
+ }
+ }
+
+ public PolicyMsg getPolicyMsg(VesAlarm rootAlarm, VesAlarm childAlarm, String packgeName) {
+ return Optional.ofNullable(getVmEntity(rootAlarm.getSourceId(), rootAlarm.getSourceName()))
+ .map(vmEntity -> getEnrichedPolicyMsg(vmEntity, rootAlarm, childAlarm, packgeName))
+ .orElse(getDefaultPolicyMsg(rootAlarm.getSourceName()));
+ }
+
+ private PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm rootAlarm, VesAlarm childAlarm,
+ String packageName) {
+ PolicyMsg policyMsg = new PolicyMsg();
+ policyMsg.setRequestID(getUniqueRequestId(rootAlarm, policyMsg));
+ if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ONSET) {
+ enrichVnfInfo(vmEntity, childAlarm, policyMsg);
+ policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET);
+ policyMsg.setTarget("vserver.vserver-id");
+ policyMsg.getAai().put("vserver.in-maint", String.valueOf(vmEntity.getInMaint()));
+ policyMsg.getAai().put("vserver.is-closed-loop-disabled",
+ String.valueOf(vmEntity.getClosedLoopDisable()));
+ policyMsg.getAai().put("vserver.prov-status", vmEntity.getProvStatus());
+ policyMsg.getAai().put("vserver.resource-version", vmEntity.getResourceVersion());
+ } else {
+ policyMsg.setClosedLoopAlarmEnd(rootAlarm.getLastEpochMicrosec());
+ policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED);
+ }
+ policyMsg.setClosedLoopControlName(loopControlNames.get(packageName));
+ policyMsg.setClosedLoopAlarmStart(rootAlarm.getStartEpochMicrosec());
+ policyMsg.getAai().put("vserver.vserver-id", vmEntity.getVserverId());
+ policyMsg.getAai().put("vserver.vserver-name", vmEntity.getVserverName());
+ policyMsg.getAai().put("vserver.vserver-name2", vmEntity.getVserverName2());
+ policyMsg.getAai().put("vserver.vserver-selflink", vmEntity.getVserverSelflink());
+ return policyMsg;
+ }
+
+ private PolicyMsg getDefaultPolicyMsg(String sourceName) {
+ PolicyMsg policyMsg = new PolicyMsg();
+ policyMsg.setTarget("vserver.vserver-id");
+ policyMsg.setTargetType("VM");
+ policyMsg.getAai().put("vserver.vserver-name", sourceName);
+ return policyMsg;
+ }
+
+ private String getUniqueRequestId(VesAlarm rootAlarm, PolicyMsg policyMsg) {
+ String alarmUniqueKey = "";
+ if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ABATED) {
+ alarmUniqueKey =
+ rootAlarm.getSourceId() + ":" + rootAlarm.getEventName().replace("Cleared", "");
+ } else {
+ alarmUniqueKey = rootAlarm.getSourceId() + ":" + rootAlarm.getEventName();
+ }
+ if (alarmUniqueRequestID.containsKey(alarmUniqueKey)) {
+ return alarmUniqueRequestID.get(alarmUniqueKey);
+ } else {
+ String requestID = UUID.randomUUID().toString();
+ alarmUniqueRequestID.put(alarmUniqueKey, requestID);
+ return requestID;