+ 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, packgeName));
+ }
+
+ private PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm rootAlarm, VesAlarm childAlarm,
+ String packageName) {
+ PolicyMsg policyMsg = new PolicyMsg();
+ policyMsg.setRequestID(getUniqueRequestId(rootAlarm));
+ if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ONSET) {
+ enrichVnfInfo(vmEntity, childAlarm, policyMsg);
+ policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET);
+ policyMsg.getAai().put("vserver.in-maint", vmEntity.getInMaint());
+ policyMsg.getAai().put("vserver.is-closed-loop-disabled",
+ 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(closedLoopControlNameCache.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());
+ policyMsg.setTarget("vserver.vserver-name");
+ return policyMsg;
+ }
+
+ private PolicyMsg getDefaultPolicyMsg(VesAlarm rootAlarm, String packageName) {
+ PolicyMsg policyMsg = new PolicyMsg();
+ policyMsg.setRequestID(getUniqueRequestId(rootAlarm));
+ policyMsg.setClosedLoopControlName(closedLoopControlNameCache.get(packageName));
+ policyMsg.setClosedLoopAlarmStart(rootAlarm.getStartEpochMicrosec());
+ policyMsg.setTarget("vserver.vserver-name");
+ policyMsg.setTargetType("VM");
+ policyMsg.getAai().put("vserver.vserver-name", rootAlarm.getSourceName());
+ if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ABATED) {
+ policyMsg.setClosedLoopAlarmEnd(rootAlarm.getLastEpochMicrosec());
+ policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED);
+ }
+ return policyMsg;