X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Fdmaap%2FDmaapService.java;h=f4143414fbc1d05a28f279aeabffe8686533360b;hb=095ad14dcf2c7e836924e9e4911c5237a94661ce;hp=9c3d19b930f7b99fd050da6ad8dafdb7e6351e7d;hpb=680b0cc11beb6a8dd6daeda860ddad74cd709d43;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java b/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java index 9c3d19b..f414341 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java @@ -15,41 +15,57 @@ */ package org.onap.holmes.common.dmaap; +import com.fasterxml.jackson.core.JsonProcessingException; import java.util.List; import java.util.Optional; -import lombok.AllArgsConstructor; +import java.util.concurrent.ConcurrentHashMap; +import javax.inject.Inject; 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.RelationshipData; import org.onap.holmes.common.aai.entity.VmEntity; import org.onap.holmes.common.aai.entity.VnfEntity; import org.onap.holmes.common.api.stat.VesAlarm; +import org.onap.holmes.common.dcae.DcaeConfigurationsCache; import org.onap.holmes.common.dmaap.entity.PolicyMsg; import org.onap.holmes.common.dmaap.entity.PolicyMsg.EVENT_STATUS; import org.onap.holmes.common.exception.CorrelationException; +import org.onap.holmes.common.utils.JacksonUtil; @Slf4j -@AllArgsConstructor +@Service public class DmaapService { - private static AaiQuery aaiQuery; - private static Publisher publisher; + public static final int POLICY_MESSAGE_ABATED = 1; - public static void publishPolicyMsg(PolicyMsg policyMsg) { + @Inject + private AaiQuery aaiQuery; + + public static ConcurrentHashMap loopControlNames = new ConcurrentHashMap<>(); + + public void publishPolicyMsg(PolicyMsg policyMsg, String dmaapConfigKey) { try { + Publisher publisher = new Publisher(); + publisher.setUrl(DcaeConfigurationsCache.getPubSecInfo(dmaapConfigKey).getDmaapInfo().getTopicUrl()); publisher.publish(policyMsg); + log.info("send policyMsg: " + JacksonUtil.beanToJson(policyMsg)); } catch (CorrelationException e) { log.error("Failed to publish policyMsg to dmaap", e.getMessage()); + } catch (JsonProcessingException e) { + log.info("Failed to convert policyMsg to json"); + } catch (NullPointerException e) { + log.error("DMaaP configurations does not exist!"); } } - public static PolicyMsg getPolicyMsg(VesAlarm vesAlarm) { + public PolicyMsg getPolicyMsg(VesAlarm vesAlarm, String packgeName) { return Optional.ofNullable(getVmEntity(vesAlarm.getSourceId(), vesAlarm.getSourceName())) - .map(vmEntity -> getEnrichedPolicyMsg(vmEntity, vesAlarm)) + .map(vmEntity -> getEnrichedPolicyMsg(vmEntity, vesAlarm, packgeName)) .orElse(getDefaultPolicyMsg(vesAlarm.getSourceName())); } - private static String getVserverInstanceId(VnfEntity vnfEntity) { + private String getVserverInstanceId(VnfEntity vnfEntity) { String vserverInstanceId = ""; if (vnfEntity != null) { List relationshipDataList = vnfEntity.getRelationshipList() @@ -65,7 +81,7 @@ public class DmaapService { return vserverInstanceId; } - private static VnfEntity getVnfEntity(String vnfId, String vnfName) { + private VnfEntity getVnfEntity(String vnfId, String vnfName) { VnfEntity vnfEntity = null; try { vnfEntity = aaiQuery.getAaiVnfData(vnfId, vnfName); @@ -75,7 +91,7 @@ public class DmaapService { return vnfEntity; } - private static VmEntity getVmEntity(String sourceId, String sourceName) { + private VmEntity getVmEntity(String sourceId, String sourceName) { VmEntity vmEntity = null; try { vmEntity = aaiQuery.getAaiVmData(sourceId, sourceName); @@ -85,24 +101,16 @@ public class DmaapService { return vmEntity; } - private static PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm vesAlarm) { + private PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm vesAlarm, String packageName) { VnfEntity vnfEntity = getVnfEntity(vesAlarm.getEventId(), vesAlarm.getEventName()); String vserverInstatnceId = getVserverInstanceId(vnfEntity); PolicyMsg policyMsg = new PolicyMsg(); - policyMsg.setClosedLoopEventClient("DCAE_INSTANCE_ID.dcae-tca"); - policyMsg.setPolicyVersion("1.0.0.5"); - policyMsg.setPolicyName("vLoadBalancer"); - policyMsg.setPolicyScope( - "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop"); - policyMsg.setTargetType("VM"); - policyMsg.setClosedLoopAlarmStart(1484855); - policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET); - policyMsg.setClosedLoopControlName( - "CL-LB-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8"); - policyMsg.setVersion("1.0.2"); - policyMsg.setTarget("generic-vnf.vnf-id"); - policyMsg.setRequestID("8c1b8bd8-06f7-493f-8ed7-daaa4cc481bc"); - policyMsg.setFrom("DCAE"); + if (vesAlarm.getAlarmIsCleared() == POLICY_MESSAGE_ABATED) { + policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED); + } else { + policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET); + } + policyMsg.setClosedLoopControlName(loopControlNames.get(packageName)); policyMsg.getAai().put("vserver.in-maint", String.valueOf(vmEntity.getInMaint())); policyMsg.getAai().put("vserver.is-closed-loop-disabled", String.valueOf(vmEntity.getClosedLoopDisable())); @@ -118,7 +126,7 @@ public class DmaapService { return policyMsg; } - private static PolicyMsg getDefaultPolicyMsg(String sourceName) { + private PolicyMsg getDefaultPolicyMsg(String sourceName) { PolicyMsg policyMsg = new PolicyMsg(); policyMsg.setTarget("vserver.vserver-name"); policyMsg.setTargetType("VM");