X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=sdnc-a1-controller%2Fnorthbound%2Fnonrt-ric-api%2Fprovider%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fsdnc%2Fnorthbound%2Frestadpter%2FNearRicUrlProvider.java;h=8c2d69237f1df790d0680dd027cb9f0acd8de023;hb=eec4647d457ca8c2ebecc86485127bd529919533;hp=496b4bdfe169e51508d3326957dc2a4ef5710d43;hpb=799dafa576935e93c262a20f2b055a94dd637ddd;p=nonrtric.git diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadpter/NearRicUrlProvider.java b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadpter/NearRicUrlProvider.java index 496b4bdf..8c2d6923 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadpter/NearRicUrlProvider.java +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadpter/NearRicUrlProvider.java @@ -20,6 +20,16 @@ package org.onap.sdnc.northbound.restadpter; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Properties; +import org.onap.sdnc.northbound.exceptions.NearRtRicNotFoundException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.util.UriComponentsBuilder; /** @@ -31,10 +41,42 @@ import org.springframework.web.util.UriComponentsBuilder; public class NearRicUrlProvider { - private String baseUrl; + // nearRicMap provides mapping from nearRtRicId to domainname:port of nearRTRics + private HashMap nearRicMap = new HashMap<>(); + private static final String NEAR_RIC_LIST_FILE = "NearRtRicList.properties"; + private final Logger log = LoggerFactory.getLogger(NearRicUrlProvider.class); public NearRicUrlProvider() { - // Near ric ip:port is passed in payload currently + try { + readNearRtRicConfigFile(); + } catch (IOException ex) { + log.error("Exception while reading nearRtRicConfigFile: {}", ex); + } + } + + private void readNearRtRicConfigFile() throws IOException { + InputStream inputStream = NearRicUrlProvider.class.getClassLoader().getResourceAsStream(NEAR_RIC_LIST_FILE); + if (inputStream == null) { + log.error("The file {} not found in classpath", NEAR_RIC_LIST_FILE); + } else { + Properties properties = new Properties(); + properties.load(inputStream); + Enumeration keys = properties.propertyNames(); + while (keys.hasMoreElements()) { + String key = (String) keys.nextElement(); + nearRicMap.put(key, properties.getProperty(key)); + } + inputStream.close(); + } + } + + /** + * Retrieve the list of Near-RICs + * + * @return the list of Near-RICs + */ + public List getNearRTRicIdsList () { + return new ArrayList<>(nearRicMap.keySet()); } /** @@ -43,7 +85,10 @@ public class NearRicUrlProvider { * @return the base url */ public String getBaseUrl(final String nearRtRicId) { - baseUrl = "http://" + nearRtRicId + "/a1-p/"; + if (!nearRicMap.containsKey(nearRtRicId)) { + throw new NearRtRicNotFoundException("NearRtRic with this ID is not known by the A1 controller"); + } + String baseUrl = "http://" + nearRicMap.get(nearRtRicId) + "/a1-p/"; return UriComponentsBuilder.fromUriString(baseUrl).build().toString(); } @@ -73,7 +118,8 @@ public class NearRicUrlProvider { * @param policyTypeId Policy Type Id * @return the policy type id url */ - public String getPolicyTypeId(final String nearRtRicId, final String policyTypeId) { + public String getPolicyTypeId(final String nearRtRicId, + final String policyTypeId) { return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicId)).pathSegment("policytypes") .pathSegment(policyTypeId).build().toString(); } @@ -84,7 +130,8 @@ public class NearRicUrlProvider { * @param policyTypeId Policy Type Id * @return the policy instances for the given policy type */ - public String getPolicyInstances(final String nearRtRicId, final String policyTypeId) { + public String getPolicyInstances(final String nearRtRicId, + final String policyTypeId) { return UriComponentsBuilder.fromUriString(getPolicyTypeId(nearRtRicId, policyTypeId)).pathSegment("policies") .build().toString(); } @@ -96,7 +143,8 @@ public class NearRicUrlProvider { * @param policyInstanceId Policy Instance Id * @return the policy instance id for the given policy type */ - public String getPolicyInstanceId(final String nearRtRicId, final String policyTypeId, final String policyInstanceId) { + public String getPolicyInstanceId(final String nearRtRicId, final String policyTypeId, + final String policyInstanceId) { return UriComponentsBuilder.fromUriString(getPolicyTypeId(nearRtRicId, policyTypeId)).pathSegment("policies") .pathSegment(policyInstanceId).build().toString(); }