diff options
Diffstat (limited to 'components/slice-analysis-ms/src/main/java/org/onap/slice')
2 files changed, 84 insertions, 5 deletions
diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java index f0c27e19..389a75d9 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java @@ -22,12 +22,18 @@ package org.onap.slice.analysis.ms.configdb; import java.util.List; import java.util.Map; +import java.util.HashMap; +import java.util.ArrayList; +import org.json.JSONArray; +import org.json.JSONObject; import org.onap.slice.analysis.ms.models.Configuration; import org.onap.slice.analysis.ms.restclients.CpsRestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.core.ParameterizedTypeReference; import org.springframework.stereotype.Service; /** @@ -48,22 +54,84 @@ public class CpsService implements CpsInterface { * Fetches the current configuration of RIC from CPS */ public Map<String, Map<String, Object>> fetchCurrentConfigurationOfRIC(String snssai) { - return null; + Map<String, Map<String, Object>> responseMap = new HashMap<String, Map<String, Object>>(); + String reqUrl = cpsBaseUrl +"/get-nearrtric-config"; + log.info("fetching current configuration of RIC from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response = restclient.sendPostRequest(reqUrl,requestBody, new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray sliceArray = new JSONArray(response); + for (int i=0;i<sliceArray.length();i++) { + String nearRTTICid = sliceArray.getJSONObject(i).optString("idNearRTRIC"); + JSONArray pLMNInfoList = sliceArray.getJSONObject(i).getJSONObject("attributes").getJSONArray("pLMNInfoList"); + for (int j=0;j<pLMNInfoList.length();j++){ + JSONArray sNSSAIList = pLMNInfoList.getJSONObject(j).getJSONArray("sNSSAIList"); + for(int k=0;k<sNSSAIList.length();k++) { + Map<String,Object> map = new HashMap<String,Object>(); + JSONArray configDataArray = sNSSAIList.getJSONObject(k).getJSONArray("configData"); + for(int l=0;l<configDataArray.length();l++) { + JSONObject configData = configDataArray.getJSONObject(l); + map.put((String) configData.get("configParameter"), configData.get("configValue")); + } + responseMap.put(nearRTTICid, map); + } + } + } + }catch (Exception e) { + log.info("CPS fetches current configuration of RIC: " + e); + } + return responseMap; } /** * Fetches all the network functions of an S-NSSAI from CPS */ public List<String> fetchNetworkFunctionsOfSnssai(String snssai) { - return null; + List<String> responseList=new ArrayList<>(); + String reqUrl=cpsBaseUrl+"/get-gnbdufunction-by-snssai"; + log.info("fetching network functions of snssai from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response=restclient.sendPostRequest(reqUrl,requestBody,new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray networkFunctionJsonArry = new JSONArray(response); + for (int i=0;i<networkFunctionJsonArry.length();i++) { + JSONObject networkFunctionJson = networkFunctionJsonArry.getJSONObject(i); + responseList.add(networkFunctionJson.getJSONObject("attributes").optString("gNBDUId")); + } + } + catch (Exception e) { + log.info("Fetch network functions of S-NSSAI from CPS" + e); + } + return responseList; } /** * Fetches the RICS of an S-NSSAI from CPS */ public Map<String, List<String>> fetchRICsOfSnssai(String snssai) { - return null; + Map<String,List<String>> responseMap=new HashMap<>(); + String reqUrl=cpsBaseUrl + "/get-nrcelldu-by-snssai"; + log.info("fetching RIC of s-NSSAI from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response=restclient.sendPostRequest(reqUrl,requestBody,new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray sliceArray = new JSONArray(response); + for (int i=0;i<sliceArray.length();i++) { + String nearRTTICid = sliceArray.getJSONObject(i).optString("idNearRTRIC"); + JSONArray GNBDUFunctionArray = sliceArray.getJSONObject(i).getJSONArray("GNBDUFunction"); + for (int j=0;j<GNBDUFunctionArray.length();j++){ + JSONArray NRCellDUArray = GNBDUFunctionArray.getJSONObject(j).getJSONArray("NRCellDU"); + List<String> cellslist=new ArrayList<>(); + for(int k=0;k<NRCellDUArray.length();k++) { + cellslist.add(NRCellDUArray.getJSONObject(k).getJSONObject("attributes").optString("cellLocalId")); + } + responseMap.put(nearRTTICid,cellslist); + } + } + }catch (Exception e) { + log.info("Fetch RICS of S-NSSAI from CPS" + e); + } + return responseMap; } - } diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java index e8028200..6098142e 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java @@ -22,7 +22,9 @@ package org.onap.slice.analysis.ms.service; import java.util.List; +import java.util.Objects; +import org.onap.slice.analysis.ms.configdb.CpsInterface; import org.onap.slice.analysis.ms.configdb.IConfigDbService; import org.onap.slice.analysis.ms.models.Configuration; import org.onap.slice.analysis.ms.models.SubCounter; @@ -38,6 +40,7 @@ public class ConsumerThread extends Thread { private PmDataQueue pmDataQueue; private IConfigDbService configDbService; private SnssaiSamplesProcessor snssaiSamplesProcessor; + private CpsInterface cpsInterface; private long initialDelaySec; private int samples; @@ -50,6 +53,7 @@ public class ConsumerThread extends Thread { this.configDbService = BeanUtil.getBean(IConfigDbService.class); this.initialDelaySec = Configuration.getInstance().getInitialDelaySeconds(); this.samples = Configuration.getInstance().getSamples(); + this.cpsInterface = BeanUtil.getBean(CpsInterface.class); } /** @@ -57,6 +61,8 @@ public class ConsumerThread extends Thread { */ @Override public void run() { + Boolean isConfigDbEnabled = (Objects.isNull(Configuration.getInstance().getConfigDbEnabled())) ? true + : Configuration.getInstance().getConfigDbEnabled(); boolean done = false; boolean result = false; String snssai = ""; @@ -69,7 +75,12 @@ public class ConsumerThread extends Thread { if (!snssai.equals("")) { log.info("Consumer thread processing data for s-nssai {}",snssai); try { - nfs = configDbService.fetchNetworkFunctionsOfSnssai(snssai); + if (isConfigDbEnabled) { + nfs = configDbService.fetchNetworkFunctionsOfSnssai(snssai); + } + else { + nfs = cpsInterface.fetchNetworkFunctionsOfSnssai(snssai); + } } catch(Exception e) { pmDataQueue.putSnssaiToQueue(snssai); |