+ 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;
+ }
+
+ private String getUniqueRequestId(VesAlarm rootAlarm) {
+ String alarmUniqueKey = "";
+ if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ABATED) {
+ alarmUniqueKey =
+ rootAlarm.getSourceId() + ":" + rootAlarm.getEventName().replace("Cleared", "");
+ } else {
+ alarmUniqueKey = rootAlarm.getSourceId() + ":" + rootAlarm.getEventName();
+ }
+ if (uniqueRequestIdCache.containsKey(alarmUniqueKey)) {
+ return uniqueRequestIdCache.get(alarmUniqueKey);
+ } else {
+ String requestID = UUID.randomUUID().toString();
+ uniqueRequestIdCache.put(alarmUniqueKey, requestID);
+ return requestID;
+ }
+ }
+
+ private void enrichVnfInfo(VmEntity vmEntity, VesAlarm childAlarm, PolicyMsg policyMsg) {
+ String vnfId = "";
+ String vnfName = "";
+ if (null != childAlarm) {
+ vnfId = childAlarm.getSourceId();
+ vnfName = childAlarm.getSourceName();
+ } else {
+ Relationship relationship = vmEntity.getRelationshipList()
+ .getRelationship(PolicyMassgeConstant.GENERIC_VNF);
+ if (null != relationship) {
+ vnfId = relationship.getRelationshipDataValue(PolicyMassgeConstant.GENERIC_VNF_VNF_ID);
+ vnfName = relationship.getRelatedToPropertyValue(PolicyMassgeConstant.GENERIC_VNF_VNF_NAME);
+ }
+ }
+ VnfEntity vnfEntity = getVnfEntity(vnfId, vnfName);
+ String vserverInstatnceId = getVserverInstanceId(vnfEntity);
+ policyMsg.getAai().put("generic-vnf.vnf-id", vnfId);
+ policyMsg.getAai().put("generic-vnf.service-instance-id", vserverInstatnceId);
+ }
+
+