diff options
4 files changed, 61 insertions, 1 deletions
diff --git a/config/application.properties b/config/application.properties index 556c240..6a40904 100644 --- a/config/application.properties +++ b/config/application.properties @@ -24,6 +24,11 @@ networkDiscoveryCtxBuilder.userId=admin networkDiscoveryCtxBuilder.password=OBF:1u2a1toa1w8v1tok1u30 networkDiscoveryCtxBuilder.resourceList=vnfcs,vservers,l3-networks +# Resource Type mapping from ServiceDecomposition type to CtxBuilder type +networkDiscoveryCtxBuilder.resourceTypeMapping.vnfcs=vnfc +networkDiscoveryCtxBuilder.resourceTypeMapping.vservers=vserver +networkDiscoveryCtxBuilder.resourceTypeMapping.l3-networks=l3-network + # Service Decomposition REST Client Configuration serviceDecomposition.httpProtocol=http serviceDecomposition.host=10.147.112.136 @@ -155,6 +155,11 @@ limitations under the License. <version>2.18.0</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.onap.aai</groupId> + <artifactId>rest-client</artifactId> + <version>1.2.1</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/NdctxbConfiguration.java b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/NdctxbConfiguration.java index ec5fb8d..a8f6f7f 100644 --- a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/NdctxbConfiguration.java +++ b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/NdctxbConfiguration.java @@ -19,18 +19,30 @@ package org.onap.pomba.contextbuilder.networkdiscovery; import java.net.InetAddress; +import java.util.Arrays; import java.util.Base64; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.StreamSupport; + import org.eclipse.jetty.util.security.Password; import org.onap.pomba.contextbuilder.networkdiscovery.exception.DiscoveryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; +import org.springframework.core.env.AbstractEnvironment; +import org.springframework.core.env.EnumerablePropertySource; +import org.springframework.core.env.Environment; +import org.springframework.core.env.MutablePropertySources; import org.springframework.stereotype.Component; @Component public class NdctxbConfiguration { private static Logger log = LoggerFactory.getLogger(NdctxbConfiguration.class); + private final String prefixResourceType = "networkDiscoveryCtxBuilder.resourceTypeMapping."; + private final String whiteSpace = "\\s"; // Network Discovery Context Builder Configuration values @@ -161,4 +173,34 @@ public class NdctxbConfiguration { return ("Basic " + Base64.getEncoder().encodeToString(auth.getBytes())); } + @Autowired + private Environment env; + + // This method builds a map between Service Decomposition resource type and Network Discovery + // Context Builder resource type using dynamic mapping technique. + // It scans the contents of the configuration file "application.properties", + // searching for the string "networkDiscoveryCtxBuilder.resourceTypeMapping.", and if found, + // anything from the remaining string will be used as the key (Service Decomposition resource Type) + // to match to the value of assignment (network discovery context builder resource type). + // For example,"networkDiscoveryCtxBuilder.resourceTypeMapping.BBB = bbb", + // Service Decomposition resource type BBB matches to context builder resource type bbb + @Bean(name = "networkDiscoveryCtxBuilderResourceTypeMapping") + public Map<String, String> getResourceTypeMapping() { + Map<String, String> props = new HashMap<>(); + MutablePropertySources propSrcs = ((AbstractEnvironment) this.env).getPropertySources(); + StreamSupport.stream(propSrcs.spliterator(), false) + .filter(ps -> ps instanceof EnumerablePropertySource) + .map(ps -> ((EnumerablePropertySource<?>) ps).getPropertyNames()) + .flatMap(Arrays::<String>stream) + .forEach(propName -> { + if (propName.startsWith(prefixResourceType)) { + String myKey = propName.substring(prefixResourceType.length()).replaceAll(whiteSpace,""); + String myValue = this.env.getProperty(propName).replaceAll(whiteSpace, ""); + props.put( myKey , myValue); + } + }); + + log.info(props.toString()); + return props; + } } diff --git a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/SpringServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/SpringServiceImpl.java index 89b07f8..7dbb1a9 100644 --- a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/SpringServiceImpl.java +++ b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/SpringServiceImpl.java @@ -154,6 +154,9 @@ public class SpringServiceImpl implements SpringService { @Autowired private Client jerseyClient; + @javax.annotation.Resource + private Map<String, String> networkDiscoveryCtxBuilderResourceTypeMapping; + private static final ReentrantLock lock = new ReentrantLock(); @Override @@ -436,7 +439,12 @@ public class SpringServiceImpl implements SpringService { for (Resource resource : resourceList) { String resourceId = resource.getResourceId(); - String resourceType = resource.getResourceType(); + String origResourceType = resource.getResourceType(); + String resourceType = networkDiscoveryCtxBuilderResourceTypeMapping.get(origResourceType); + if (resourceType == null) { + log.error("Unable to find " + origResourceType + " from networkDiscoveryCtxBuilderResourceTypeMapping"); + continue; + } // The old_requestId is inherited from ServiceDecomposition. // Before we send a |