import lombok.extern.slf4j.Slf4j;
import org.jvnet.hk2.annotations.Service;
import org.onap.holmes.common.aai.AaiQuery;
+import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData;
import org.onap.holmes.common.aai.entity.VmEntity;
import org.onap.holmes.common.aai.entity.VnfEntity;
@Slf4j
@Service
public class DmaapService {
-
public static final int POLICY_MESSAGE_ABATED = 1;
-
+ public static final String SERVICE_INSTANCE = "service-instance";
+ public static final String SERVICE_INSTANCE_ID = "service-instance.service-instance-id";
@Inject
private AaiQuery aaiQuery;
-
public static ConcurrentHashMap<String, String> loopControlNames = new ConcurrentHashMap<>();
-
public static ConcurrentHashMap<String, String> alarmUniqueRequestID = new ConcurrentHashMap<>();
public void publishPolicyMsg(PolicyMsg policyMsg, String dmaapConfigKey) {
private String getVserverInstanceId(VnfEntity vnfEntity) {
String vserverInstanceId = "";
if (vnfEntity != null) {
- List<RelationshipData> relationshipDataList = vnfEntity.getRelationshipList()
- .getRelationships().stream()
- .filter(relationship -> relationship.getRelatedTo().equals("service-instance"))
- .limit(1).findFirst().get().getRelationshipDataList();
-
- vserverInstanceId = relationshipDataList.stream()
- .filter(relationshipData -> relationshipData.getRelationshipKey()
- .equals("service-instance.service-instance-id"))
- .findFirst()
- .map(relationshipData -> relationshipData.getRelationshipValue()).get();
+ List<Relationship> relationshipList = vnfEntity.getRelationshipList().getRelationships();
+ Relationship relationship = null;
+ for(int i = 0; i < relationshipList.size(); i++) {
+ if (SERVICE_INSTANCE.equals(relationshipList.get(i).getRelatedTo())) {
+ relationship = relationshipList.get(i);
+ break;
+ }
+ }
+ if (relationship != null) {
+ List<RelationshipData> relationshipDataList = relationship.getRelationshipDataList();
+ for(int i = 0; i < relationshipDataList.size(); i++) {
+ if (SERVICE_INSTANCE_ID
+ .equals(relationshipDataList.get(i).getRelationshipKey())) {
+ vserverInstanceId = relationshipDataList.get(i).getRelationshipValue();
+ break;
+ }
+ }
+ }
}
return vserverInstanceId;
}
private PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm rootAlarm, VesAlarm childAlarm,
String packageName) {
PolicyMsg policyMsg = new PolicyMsg();
+ String alarmUniqueKey = "";
if (rootAlarm.getAlarmIsCleared() == POLICY_MESSAGE_ABATED) {
policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED);
+ alarmUniqueKey =
+ rootAlarm.getSourceId() + ":" + rootAlarm.getEventName().replace("Cleared", "");
} else {
policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET);
enrichVnfInfo(childAlarm, policyMsg);
+ alarmUniqueKey = rootAlarm.getSourceId() + ":" + rootAlarm.getEventName();
}
- if (alarmUniqueRequestID.containsKey(rootAlarm.getSourceId())) {
- policyMsg.setRequestID(alarmUniqueRequestID.get(rootAlarm.getSourceId()));
+ if (alarmUniqueRequestID.containsKey(alarmUniqueKey)) {
+ policyMsg.setRequestID(alarmUniqueRequestID.get(alarmUniqueKey));
} else {
String requestID = UUID.randomUUID().toString();
policyMsg.setRequestID(requestID);
- alarmUniqueRequestID.put(rootAlarm.getSourceId(), requestID);
+ alarmUniqueRequestID.put(alarmUniqueKey, requestID);
}
policyMsg.setClosedLoopControlName(loopControlNames.get(packageName));
+ policyMsg.setTarget(vmEntity.getVserverName());
policyMsg.getAai().put("vserver.in-maint", String.valueOf(vmEntity.getInMaint()));
policyMsg.getAai().put("vserver.is-closed-loop-disabled",
String.valueOf(vmEntity.getClosedLoopDisable()));