Support instantiation of same model vnfs/vf-modules
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / client / cds / ConfigureInstanceParamsForVnf.java
index 22c9a7b..43283ac 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.so.client.cds;
 
 import com.google.gson.JsonObject;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.so.client.exception.PayloadGenerationException;
 import org.onap.so.serviceinstancebeans.Service;
 import org.onap.so.serviceinstancebeans.Vnfs;
@@ -45,10 +46,16 @@ public class ConfigureInstanceParamsForVnf {
      * @throws PayloadGenerationException if it doesn't able to populate instance parameters from SO payload.
      */
     public void populateInstanceParams(JsonObject jsonObject, List<Map<String, Object>> userParamsFromRequest,
-            String modelCustomizationUuid) throws PayloadGenerationException {
+            String modelCustomizationUuid, String vnfInstanceName) throws PayloadGenerationException {
         try {
             Service service = extractServiceFromUserParameters.getServiceFromRequestUserParams(userParamsFromRequest);
-            List<Map<String, String>> instanceParamsList = getInstanceParamForVnf(service, modelCustomizationUuid);
+
+            List<Map<String, String>> instanceParamsList;
+            if (StringUtils.isNotBlank(vnfInstanceName)) {
+                instanceParamsList = getInstanceParamByVnfInstanceName(service, vnfInstanceName);
+            } else {
+                instanceParamsList = getInstanceParamForVnf(service, modelCustomizationUuid);
+            }
 
             instanceParamsList.stream().flatMap(instanceParamsMap -> instanceParamsMap.entrySet().stream())
                     .forEachOrdered(entry -> jsonObject.addProperty(entry.getKey(), entry.getValue()));
@@ -57,6 +64,13 @@ public class ConfigureInstanceParamsForVnf {
         }
     }
 
+    private List<Map<String, String>> getInstanceParamByVnfInstanceName(Service service, String instanceName)
+            throws PayloadGenerationException {
+        return service.getResources().getVnfs().stream().filter(vnf -> instanceName.equals(vnf.getInstanceName()))
+                .findFirst().map(Vnfs::getInstanceParams).orElseThrow(
+                        () -> new PayloadGenerationException("Could not find vnf with instanceName: " + instanceName));
+    }
+
     private List<Map<String, String>> getInstanceParamForVnf(Service service, String genericVnfModelCustomizationUuid)
             throws PayloadGenerationException {
         Optional<Vnfs> foundedVnf = service.getResources().getVnfs().stream()