From eeb52b53a4b8a209553698ac0df3155cf731a005 Mon Sep 17 00:00:00 2001 From: Niranjana Date: Tue, 21 Apr 2020 17:13:17 +0530 Subject: Filter FM and PM events & change targetType to PNF Issue-ID: DCAEGEN2-2200 Signed-off-by: Niranjana Change-Id: Ib6479b5be8dfc0ce7f42395b5d048ada5d674ff3 --- src/main/docker/config/sonhms/config_all.json | 3 +- .../dcaegen2/services/sonhms/Configuration.java | 14 ++- .../sonhms/DmaapNotificationsComponent.java | 102 +++++++++++---------- .../sonhms/FaultNotificationComponent.java | 66 +++++++------ .../services/sonhms/model/PolicyNotification.java | 4 +- 5 files changed, 108 insertions(+), 81 deletions(-) (limited to 'src/main') diff --git a/src/main/docker/config/sonhms/config_all.json b/src/main/docker/config/sonhms/config_all.json index 29bb357..b6cb345 100644 --- a/src/main/docker/config/sonhms/config_all.json +++ b/src/main/docker/config/sonhms/config_all.json @@ -92,6 +92,7 @@ "sonhandler.policyNegativeAckThreshold": 3, "sonhandler.policyFixedPciTimeInterval": 300000, "sonhandler.pollingTimeout": 60, + "sonhandler.nfNamingCode": "RansimAgent", "service_calls": { "sdnr-getpnfname": [], "sdnr-getpci": [], @@ -130,4 +131,4 @@ } ] } -} \ No newline at end of file +} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java b/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java index 13c86b6..563491c 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java @@ -73,6 +73,7 @@ public class Configuration { private int policyRespTimer; private int policyNegativeAckThreshold; private long policyFixedPciTimeInterval; + private String nfNamingCode; public int getPoorCountThreshold() { return poorCountThreshold; @@ -367,6 +368,14 @@ public class Configuration { public void setPolicyFixedPciTimeInterval(long policyFixedPciTimeInterval) { this.policyFixedPciTimeInterval = policyFixedPciTimeInterval; } + + public String getNfNamingCode() { + return nfNamingCode; + } + + public void setNfNamingCode(String nfNamingCode) { + this.nfNamingCode = nfNamingCode; + } @Override public String toString() { @@ -382,7 +391,7 @@ public class Configuration { + ", badThreshold=" + badThreshold + ", poorThreshold=" + poorThreshold + ", poorCountThreshold=" + poorCountThreshold + ", badCountThreshold=" + badCountThreshold + ", oofTriggerCountTimer=" + oofTriggerCountTimer + ", oofTriggerCountThreshold=" + oofTriggerCountThreshold + ", policyRespTimer=" - + policyRespTimer + ", policyNegativeAckThreshold=" + policyNegativeAckThreshold + ", policyFixedPciTimeInterval="+ policyFixedPciTimeInterval + "]"; + + policyRespTimer + ", policyNegativeAckThreshold=" + policyNegativeAckThreshold + ", policyFixedPciTimeInterval="+ policyFixedPciTimeInterval + ", nfNamingCode="+nfNamingCode+"]"; } /** @@ -441,6 +450,7 @@ public class Configuration { policyRespTimer = jsonObject.get("sonhandler.policyRespTimer").getAsInt(); policyNegativeAckThreshold = jsonObject.get("sonhandler.policyNegativeAckThreshold").getAsInt(); policyFixedPciTimeInterval = jsonObject.get("sonhandler.policyFixedPciTimeInterval").getAsLong(); + nfNamingCode = jsonObject.get("sonhandler.nfNamingCode").getAsString(); log.info("configuration from CBS {}", this); @@ -448,4 +458,4 @@ public class Configuration { -} \ No newline at end of file +} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java index a5d8ba7..5fbb4dc 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * son-handler * ================================================================================ - * Copyright (C) 2019 Wipro Limited. + * Copyright (C) 2019-2020 Wipro Limited. * ============================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import fj.data.Either; import java.io.IOException; + +import org.json.JSONObject; import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository; import org.onap.dcaegen2.services.sonhms.dao.PerformanceNotificationsRepository; import org.onap.dcaegen2.services.sonhms.model.Notification; @@ -35,51 +37,59 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DmaapNotificationsComponent { - - private static Logger log = LoggerFactory.getLogger(DmaapNotificationsComponent.class); - - /** - * Get sdnr notifications. - */ - public Either getSdnrNotifications() { - DmaapNotificationsRepository dmaapNotificationsRepository = BeanUtil - .getBean(DmaapNotificationsRepository.class); - String notificationString = dmaapNotificationsRepository.getNotificationFromQueue(); - if (notificationString == null) { - return Either.right(404); - } - ObjectMapper mapper = new ObjectMapper(); - Notification notification = new Notification(); - try { - notification = mapper.readValue(notificationString, Notification.class); - return Either.left(notification); - } catch (IOException e) { - log.error("Exception in parsing notification", notificationString, e); - return Either.right(400); - } - } - - /** - * Get pm notifications. - */ - public Either getPmNotifications() { - PerformanceNotificationsRepository pmNotificationRepository = - BeanUtil.getBean(PerformanceNotificationsRepository.class); - String pmNotificationString = pmNotificationRepository.getPerformanceNotificationFromQueue(); - if (pmNotificationString == null) { - return Either.right(404); - } - ObjectMapper mapper = new ObjectMapper(); - PmNotification pmNotification = new PmNotification(); - - try { - pmNotification = mapper.readValue(pmNotificationString, PmNotification.class); - return Either.left(pmNotification); - } catch (IOException e) { - log.error("Exception in parsing pm notification ",pmNotificationString,e); - return Either.right(400); - } - } + private static Logger log = LoggerFactory.getLogger(DmaapNotificationsComponent.class); + + /** + * Get sdnr notifications. + */ + public Either getSdnrNotifications() { + DmaapNotificationsRepository dmaapNotificationsRepository = BeanUtil + .getBean(DmaapNotificationsRepository.class); + String notificationString = dmaapNotificationsRepository.getNotificationFromQueue(); + if (notificationString == null) { + return Either.right(404); + } + ObjectMapper mapper = new ObjectMapper(); + + Notification notification = new Notification(); + try { + notification = mapper.readValue(notificationString, Notification.class); + return Either.left(notification); + } catch (IOException e) { + log.error("Exception in parsing notification", notificationString, e); + return Either.right(400); + } + } + + /** + * Get pm notifications. + */ + public Either getPmNotifications() { + PerformanceNotificationsRepository pmNotificationRepository = BeanUtil + .getBean(PerformanceNotificationsRepository.class); + String pmNotificationString = pmNotificationRepository.getPerformanceNotificationFromQueue(); + if (pmNotificationString == null) { + return Either.right(404); + } + try { + JSONObject obj = new JSONObject(pmNotificationString); + Configuration configuration = Configuration.getInstance(); + String configNfNamingCode = configuration.getNfNamingCode(); + String nfNamingCode = obj.getJSONObject("event").getJSONObject("commonEventHeader") + .getString("nfNamingCode"); + if (!nfNamingCode.equalsIgnoreCase(configNfNamingCode)) { + return Either.right(404); + } + ObjectMapper mapper = new ObjectMapper(); + PmNotification pmNotification = new PmNotification(); + pmNotification = mapper.readValue(pmNotificationString, PmNotification.class); + return Either.left(pmNotification); + } catch (Exception e) { + log.error("Exception in parsing pm notification ", pmNotificationString, e); + return Either.right(400); + } + } } + diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/FaultNotificationComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/FaultNotificationComponent.java index d1bf351..9f889da 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/FaultNotificationComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/FaultNotificationComponent.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * son-handler * ================================================================================ - * Copyright (C) 2019 Wipro Limited. + * Copyright (C) 2019-2020 Wipro Limited. * ============================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.json.JSONObject; import org.onap.dcaegen2.services.sonhms.dao.FaultNotificationsRepository; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.slf4j.Logger; @@ -36,35 +37,40 @@ import org.slf4j.LoggerFactory; public class FaultNotificationComponent { - private static Logger log = LoggerFactory.getLogger(FaultNotificationComponent.class); + private static Logger log = LoggerFactory.getLogger(FaultNotificationComponent.class); - /** - * Get fault notifications. - */ - public Either, Integer> getFaultNotifications() { - FaultNotificationsRepository faultNotificationsRepository = BeanUtil - .getBean(FaultNotificationsRepository.class); - String notificationString = faultNotificationsRepository.getFaultNotificationFromQueue(); - log.info("get fault notifications method"); - if (notificationString == null) { - return Either.right(404); - } - ObjectMapper mapper = new ObjectMapper(); - FaultEvent faultEvent = new FaultEvent(); - List faultEvents = new ArrayList<>(); - try { - faultEvent = mapper.readValue(notificationString, FaultEvent.class); - log.info("Parsing FM notification"); - - } catch (IOException e) { - log.error("Exception in parsing Notification {}", e); - return Either.right(400); - } - - faultEvents.add(faultEvent); - - return Either.left(faultEvents); - - } + /** + * Get fault notifications. + */ + public Either, Integer> getFaultNotifications() { + FaultNotificationsRepository faultNotificationsRepository = BeanUtil + .getBean(FaultNotificationsRepository.class); + String notificationString = faultNotificationsRepository.getFaultNotificationFromQueue(); + log.info("get fault notifications method"); + if (notificationString == null) { + return Either.right(404); + } + try { + JSONObject obj = new JSONObject(notificationString); + Configuration configuration = Configuration.getInstance(); + String configNfNamingCode = configuration.getNfNamingCode(); + String nfNamingCode = obj.getJSONObject("event").getJSONObject("commonEventHeader") + .getString("nfNamingCode"); + if (!nfNamingCode.equalsIgnoreCase(configNfNamingCode)) { + return Either.right(404); + } + ObjectMapper mapper = new ObjectMapper(); + FaultEvent faultEvent = new FaultEvent(); + List faultEvents = new ArrayList<>(); + faultEvent = mapper.readValue(notificationString, FaultEvent.class); + log.info("Parsing FM notification"); + faultEvents.add(faultEvent); + return Either.left(faultEvents); + } catch (Exception e) { + log.error("Exception in parsing Notification {}", e); + return Either.right(400); + } + } } + diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java b/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java index 16f7518..972b1f4 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * son-handler * ================================================================================ - * Copyright (C) 2019 Wipro Limited. + * Copyright (C) 2019-2020 Wipro Limited. * ============================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -75,7 +75,7 @@ public class PolicyNotification { this.version = "1.0.2"; this.action = action; this.target = "generic-vnf.vnf-id"; - this.targetType = "VNF"; + this.targetType = "PNF"; this.aai = new HashMap<>(); aai.put("generic-vnf.is-closed-loop-disabled", "false"); aai.put("generic-vnf.prov-status", "ACTIVE"); -- cgit 1.2.3-korg