From 35ca27d9ac88a344fdc6b24838281d75c5445b1f Mon Sep 17 00:00:00 2001 From: Shiwei Tian Date: Mon, 25 Sep 2017 10:50:01 +0800 Subject: [PATCH] add correlation analysis Issue-ID: HOLMES-44 Change-Id: I357587ff182c3bc900f3a03ca3a28a7d73d9564a Signed-off-by: Shiwei Tian --- .../onap/holmes/common/aai/CorrelationUtil.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/aai/CorrelationUtil.java diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/aai/CorrelationUtil.java b/holmes-actions/src/main/java/org/onap/holmes/common/aai/CorrelationUtil.java new file mode 100644 index 0000000..d0a4160 --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/aai/CorrelationUtil.java @@ -0,0 +1,64 @@ +/** + * Copyright 2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.onap.holmes.common.aai; + +import java.util.List; +import java.util.Optional; +import lombok.extern.slf4j.Slf4j; +import org.onap.holmes.common.aai.entity.RelationshipList.Relationship; +import org.onap.holmes.common.aai.entity.VmEntity; +import org.onap.holmes.common.exception.CorrelationException; + +@Slf4j +public class CorrelationUtil { + + private AaiQuery aaiQuery; + + private static class LazyHolder { + private static final CorrelationUtil INSTANCE = new CorrelationUtil(); + } + private CorrelationUtil (){} + + public static final CorrelationUtil getInstance() { + return LazyHolder.INSTANCE; + } + + public boolean isTopologicallyRelated(String childId, String rootId) { + + return Optional.ofNullable(getVmEntity(rootId)).map(vmEntity -> + getIsRelated(childId, vmEntity)).orElse(false); + } + + private boolean getIsRelated(String childId, VmEntity vmEntity) { + List relationships = vmEntity.getRelationshipList().getRelationships(); + for (Relationship relationship : relationships) { + boolean isRelated = relationship.getRelationshipDataList().stream().anyMatch( + relationshipData -> relationshipData.getRelationshipValue().equals(childId)); + if (isRelated) { + return true; + } + } + return false; + } + + private VmEntity getVmEntity(String rootId) { + VmEntity vmEntity = null; + try { + vmEntity = aaiQuery.getAaiVmData("", rootId); + } catch (CorrelationException e) { + log.error("Failed to get vm data", e.getMessage()); + } + return vmEntity; + } +} -- 2.16.6