Support instantiation of same model vnfs/vf-modules
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / client / cds / ConfigureInstanceParamsForVfModule.java
index 6f850fa..eeaecb9 100644 (file)
@@ -21,7 +21,7 @@
 package org.onap.so.client.cds;
 
 import com.google.gson.JsonObject;
-import org.onap.so.client.cds.ExtractServiceFromUserParameters;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.so.client.exception.PayloadGenerationException;
 import org.onap.so.serviceinstancebeans.Service;
 import org.onap.so.serviceinstancebeans.VfModules;
@@ -47,12 +47,17 @@ public class ConfigureInstanceParamsForVfModule {
      * @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 vnfCustomizationUuid, String vfModuleCustomizationUuid) throws PayloadGenerationException {
+            String vnfCustomizationUuid, String vfModuleCustomizationUuid, String vfModuleInstanceName)
+            throws PayloadGenerationException {
         try {
             Service service = extractServiceFromUserParameters.getServiceFromRequestUserParams(userParamsFromRequest);
 
-            List<Map<String, String>> instanceParamsList =
-                    getInstanceParams(service, vnfCustomizationUuid, vfModuleCustomizationUuid);
+            List<Map<String, String>> instanceParamsList;
+            if (StringUtils.isNotBlank(vfModuleInstanceName)) {
+                instanceParamsList = getInstanceParamsByInstanceNames(service, vfModuleInstanceName);
+            } else {
+                instanceParamsList = getInstanceParams(service, vnfCustomizationUuid, vfModuleCustomizationUuid);
+            }
 
             instanceParamsList.stream().flatMap(instanceParamsMap -> instanceParamsMap.entrySet().stream())
                     .forEachOrdered(entry -> jsonObject.addProperty(entry.getKey(), entry.getValue()));
@@ -61,6 +66,14 @@ public class ConfigureInstanceParamsForVfModule {
         }
     }
 
+    private List<Map<String, String>> getInstanceParamsByInstanceNames(Service service, String vfModuleInstanceName)
+            throws PayloadGenerationException {
+        return service.getResources().getVnfs().stream().map(Vnfs::getVfModules).flatMap(List::stream)
+                .filter(vfm -> vfModuleInstanceName.equals(vfm.getInstanceName())).findFirst()
+                .map(VfModules::getInstanceParams).orElseThrow(() -> new PayloadGenerationException(
+                        "Could not find vfModule with instanceName: " + vfModuleInstanceName));
+    }
+
     private List<Map<String, String>> getInstanceParams(Service service, String vnfCustomizationUuid,
             String vfModuleCustomizationUuid) throws PayloadGenerationException {