From b5ffdfa0e652e7d7b6c320d28fc78eded8a0763a Mon Sep 17 00:00:00 2001 From: Niranjana Date: Tue, 12 Apr 2022 09:03:51 +0000 Subject: [SLICEANALYSIS] Filter data from AAI to avoid possible exceptions, remove null parameters in policy payload and add logs. Issue-ID: DCAEGEN2-3142 Signed-off-by: Niranjana Change-Id: I3734c666e030b010a1922ba0282fd0ccae83fce6 --- components/slice-analysis-ms/ChangeLog.md | 3 +++ components/slice-analysis-ms/pom.xml | 2 +- .../org/onap/slice/analysis/ms/aai/AaiService.java | 22 +++++++++++++--------- .../org/onap/slice/analysis/ms/cps/CpsService.java | 6 ++++++ .../slice/analysis/ms/models/policy/Payload.java | 5 +++++ .../analysis/ms/service/SliceUtilization.java | 2 ++ components/slice-analysis-ms/version.properties | 2 +- 7 files changed, 31 insertions(+), 11 deletions(-) (limited to 'components/slice-analysis-ms') diff --git a/components/slice-analysis-ms/ChangeLog.md b/components/slice-analysis-ms/ChangeLog.md index db380685..15287441 100644 --- a/components/slice-analysis-ms/ChangeLog.md +++ b/components/slice-analysis-ms/ChangeLog.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [1.1.1] - 2022/04/12 + - [DCAEGEN2-3142](https://jira.onap.org/browse/DCAEGEN2-3142) - Filter data from AAI to avoid possible exceptions, remove null parameters in policy payload and add logs + ## [1.1.0] - 2022/3/10 - [DCAEGEN2-3063](https://jira.onap.org/browse/DCAEGEN2-3063) - IBN user-triggered CLoud Leased Line update and CCVPN closed-loop diff --git a/components/slice-analysis-ms/pom.xml b/components/slice-analysis-ms/pom.xml index d9ab31f8..1f68fe51 100644 --- a/components/slice-analysis-ms/pom.xml +++ b/components/slice-analysis-ms/pom.xml @@ -34,7 +34,7 @@ org.onap.dcaegen2.services.components slice-analysis-ms - 1.1.0-SNAPSHOT + 1.1.1-SNAPSHOT dcaegen2-services-slice-analysis-ms Network slice PM analyser jar diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/aai/AaiService.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/aai/AaiService.java index eb5d243c..289fedfd 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/aai/AaiService.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/aai/AaiService.java @@ -70,6 +70,7 @@ public class AaiService implements AaiInterface { Map responseMap = fetchSubscriberAndSubscriptionServiceType(); String serviceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances"; + log.info("serviceReqUrl {}", serviceReqUrl); String serviceRole = "AN-NF"; try { String serviceInstance = @@ -78,7 +79,7 @@ public class AaiService implements AaiInterface { JSONArray serviceInstanceList = serviceInstanceJson.getJSONArray("service-instance"); for (int i = 0; i < serviceInstanceList.length(); i++) { JSONObject serviceObj = serviceInstanceList.getJSONObject(i); - if (serviceObj.getString("environment-context").equalsIgnoreCase(snssai)) { + if (serviceObj.has("environment-context") && serviceObj.getString("environment-context").equalsIgnoreCase(snssai)) { responseMap.put("sliceProfileId", serviceObj.getString("service-instance-id")); } } @@ -86,7 +87,7 @@ public class AaiService implements AaiInterface { String serviceRoleReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances/?service-role=nssi&depth=2"; - + log.info("serviceRoleReqUrl {}", serviceRoleReqUrl); String serviceInstanceForServiceRole = restclient.sendGetRequest(serviceRoleReqUrl, new ParameterizedTypeReference() {}).getBody(); JSONObject serviceInstanceForServiceRoleJson = new JSONObject(serviceInstanceForServiceRole); @@ -94,7 +95,7 @@ public class AaiService implements AaiInterface { serviceInstanceForServiceRoleJson.getJSONArray("service-instance"); for (int i = 0; i < serviceInstanceListForServiceRole.length(); i++) { JSONObject serviceObj = serviceInstanceListForServiceRole.getJSONObject(i); - if (serviceObj.getString("workload-context").trim().equalsIgnoreCase(serviceRole)) { + if (serviceObj.has("workload-context") && serviceObj.getString("workload-context").trim().equalsIgnoreCase(serviceRole)) { responseMap.put("ranNFNSSIId", serviceObj.getString("service-instance-id")); } } @@ -117,6 +118,7 @@ public class AaiService implements AaiInterface { String serviceInstaneId = null; String serviceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances"; + log.info("serviceReqUrl {}", serviceReqUrl); Map responseMap = new HashMap(); try { String serviceInstance = @@ -126,7 +128,7 @@ public class AaiService implements AaiInterface { JSONArray serviceInstanceList = serviceInstanceJson.getJSONArray("service-instance"); for (int i = 0; i < serviceInstanceList.length(); i++) { JSONObject serviceObj = serviceInstanceList.getJSONObject(i); - if (serviceObj.getString("environment-context").equalsIgnoreCase(snssai)) { + if (serviceObj.has("environment-context") && serviceObj.getString("environment-context").equalsIgnoreCase(snssai)) { serviceInstaneId = serviceObj.getString("service-instance-id"); } } @@ -134,7 +136,7 @@ public class AaiService implements AaiInterface { String sliceProfileReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances/service-instance/" + serviceInstaneId + "/slice-profiles"; - + log.info("sliceProfileReqUrl {}", sliceProfileReqUrl); String sliceProfile = restclient .sendGetRequest(sliceProfileReqUrl, new ParameterizedTypeReference() {}).getBody(); JSONObject sliceProfileJson = new JSONObject(sliceProfile); @@ -163,6 +165,7 @@ public class AaiService implements AaiInterface { log.info("Get GlobalSubscriberId"); String subscriberReqUrl = aaiBaseUrl + "/business/customers"; + log.info("subscriberReqUrl {}", subscriberReqUrl); try { String subscriberReq = restclient.sendGetRequest(subscriberReqUrl, new ParameterizedTypeReference() {}).getBody(); @@ -178,7 +181,7 @@ public class AaiService implements AaiInterface { log.info("Get subscriptionServiceType"); String subscriptionServiceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions"; - + log.info("subscriptionServiceReqUrl: {}", subscriptionServiceReqUrl); String subscriptionService = restclient .sendGetRequest(subscriptionServiceReqUrl, new ParameterizedTypeReference() {}).getBody(); JSONObject subscriptionServiceJson = new JSONObject(subscriptionService); @@ -214,14 +217,14 @@ public class AaiService implements AaiInterface { String serviceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances/service-instance/" + sliceInstanceId; - + log.info("serviceReqUrl {}", serviceReqUrl); try { String serviceInstanceString = restclient.sendGetRequest(serviceReqUrl, new ParameterizedTypeReference() {}).getBody(); ServiceInstance serviceInstance = objectMapper.readValue(serviceInstanceString, ServiceInstance.class); if (serviceInstance.getServiceRole().equalsIgnoreCase("nsi")) { serviceInstance.getRelationshipList().getRelationship().forEach(relationship -> { - if (relationship.getRelatedTo().equalsIgnoreCase("allotted-resource")) { + if (Objects.nonNull(relationship.getRelatedTo()) && relationship.getRelatedTo().equalsIgnoreCase("allotted-resource")) { relationship.getRelationshipData().forEach(data -> { if (data.get("relationship-key").equalsIgnoreCase("service-instance.service-instance-id")) { allotedResource.add(data.get("relationship-value")); @@ -280,6 +283,7 @@ public class AaiService implements AaiInterface { String serviceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances/service-instance/" + serviceInstanceId; + log.info("serviceReqUrl {}", serviceReqUrl); String serviceInstanceString = restclient.sendGetRequest(serviceReqUrl, new ParameterizedTypeReference() {}).getBody(); ServiceInstance serviceInstance = objectMapper.readValue(serviceInstanceString, ServiceInstance.class); @@ -326,7 +330,7 @@ public class AaiService implements AaiInterface { String serviceReqUrl = aaiBaseUrl + "/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + subscriptionServiceType + "/service-instances/" + "service-instance/" + serviceInstanceId; - + log.info("serviceReqUrl {}", serviceReqUrl); try { String serviceInstanceString = restclient.sendGetRequest(serviceReqUrl, new ParameterizedTypeReference() {}).getBody(); diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/cps/CpsService.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/cps/CpsService.java index 743ac3cf..27f37aba 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/cps/CpsService.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/cps/CpsService.java @@ -58,7 +58,9 @@ public class CpsService implements CpsInterface { Map> responseMap = new HashMap>(); String reqUrl = cpsBaseUrl + "/get-nearrtric-config"; log.info("fetching current configuration of RIC from Cps: {s-NSSAI: " + snssai + "}"); + log.info("reqUrl {}", reqUrl); String requestBody = "{\"inputParameters\": {\"sNssai\":" + JSONObject.quote(snssai) + "}}"; + log.info("requestBody {}", requestBody); try { String response = restclient .sendPostRequest(reqUrl, requestBody, new ParameterizedTypeReference() {}).getBody(); @@ -93,7 +95,9 @@ public class CpsService implements CpsInterface { List responseList = new ArrayList<>(); String reqUrl = cpsBaseUrl + "/get-gnbdufunction-by-snssai"; log.info("fetching network functions of snssai from Cps: {s-NSSAI: " + snssai + "}"); + log.info("reqUrl {}", reqUrl); String requestBody = "{\"inputParameters\": {\"sNssai\":" + JSONObject.quote(snssai) + "}}"; + log.info("requestBody {}", requestBody); try { String response = restclient .sendPostRequest(reqUrl, requestBody, new ParameterizedTypeReference() {}).getBody(); @@ -115,7 +119,9 @@ public class CpsService implements CpsInterface { Map> responseMap = new HashMap<>(); String reqUrl = cpsBaseUrl + "/get-nrcelldu-by-snssai"; log.info("fetching RIC of s-NSSAI from Cps: {s-NSSAI: " + snssai + "}"); + log.info("reqUrl {}", reqUrl); String requestBody = "{\"inputParameters\": {\"sNssai\":" + JSONObject.quote(snssai) + "}}"; + log.info("requestBody {}", requestBody); try { String response = restclient .sendPostRequest(reqUrl, requestBody, new ParameterizedTypeReference() {}).getBody(); diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/models/policy/Payload.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/models/policy/Payload.java index e3351541..ceaeb730 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/models/policy/Payload.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/models/policy/Payload.java @@ -21,9 +21,14 @@ *******************************************************************************/ package org.onap.slice.analysis.ms.models.policy; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; + /** * Model class for the Paylaod Object */ +@JsonInclude(Include.NON_NULL) public class Payload { private String name; diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/SliceUtilization.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/SliceUtilization.java index 94696343..1d53892c 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/SliceUtilization.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/SliceUtilization.java @@ -134,6 +134,8 @@ public class SliceUtilization { String jsonRequestBody = new ObjectMapper().writeValueAsString(inputParameter); log.info("fetching PM Data for : {}", snssai); + log.info("desUrl {}", desUrl); + log.info("jsonRequestBody {}", jsonRequestBody); response = desRestClient.sendPostRequest(desUrl, jsonRequestBody, new ParameterizedTypeReference() {}); pmData = new JSONObject(response.getBody()); diff --git a/components/slice-analysis-ms/version.properties b/components/slice-analysis-ms/version.properties index d5c05922..612bdf05 100644 --- a/components/slice-analysis-ms/version.properties +++ b/components/slice-analysis-ms/version.properties @@ -21,7 +21,7 @@ ############################################################################### major=1 minor=1 -patch=0 +patch=1 base_version=${major}.${minor}.${patch} release_version=${base_version} snapshot_version=${base_version}-SNAPSHOT -- cgit 1.2.3-korg