Build payload APPC parameter from UserParams 15/95615/1
authorElena Kuleshov <evn@att.com>
Thu, 12 Sep 2019 19:55:39 +0000 (15:55 -0400)
committerElena Kuleshov <evn@att.com>
Thu, 12 Sep 2019 19:55:39 +0000 (15:55 -0400)
If a payload parameter is not specified on VID request for APPC interaction, we will need to build it from UserParams from requestCOntext.

Issue-ID: SO-2311
Signed-off-by: Kuleshov, Elena <evn@att.com>
Change-Id: Ie6affe2bad031d80c43c0358a49cb252fb04f5e2

bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java

index 9c72d22..79ccd92 100644 (file)
@@ -24,6 +24,7 @@ package org.onap.so.bpmn.infrastructure.appc.tasks;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import org.onap.so.logger.LoggingAnchor;
 import org.json.JSONArray;
@@ -31,6 +32,7 @@ import org.json.JSONObject;
 import org.onap.aai.domain.yang.Vserver;
 import org.onap.appc.client.lcm.model.Action;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.core.json.JsonUtils;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
@@ -166,6 +168,10 @@ public class AppcRunTasks {
                 String pay = requestParameters.getPayload();
                 if (pay != null) {
                     payload = Optional.of(pay);
+                } else {
+                    String payloadFromUserParams =
+                            buildPayloadFromUserParams(gBBInput.getRequestContext().getUserParams());
+                    payload = Optional.of(payloadFromUserParams);
                 }
             }
             logger.debug("Running APP-C action: {}", action.toString());
@@ -221,6 +227,21 @@ public class AppcRunTasks {
         return payloadInfo;
     }
 
+    protected String buildPayloadFromUserParams(Map<String, Object> userParams) {
+        if (userParams == null || userParams.size() == 0) {
+            return null;
+        }
+
+        String payload = "{}";
+        for (Map.Entry<String, Object> entry : userParams.entrySet()) {
+            payload = JsonUtils.addJsonValue(payload, entry.getKey(), (String) entry.getValue());
+        }
+
+        payload = payload.replaceAll("\"", "\\\\\"");
+        payload = payload.replaceAll("\n", "");
+        return payload;
+    }
+
     protected void getVserversForAppc(BuildingBlockExecution execution, GenericVnf vnf) throws Exception {
         AAIResultWrapper aaiRW = aaiVnfResources.queryVnfWrapperById(vnf);
 
index cc25689..f0c3330 100644 (file)
@@ -33,6 +33,8 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
 import org.junit.Test;
 import org.mockito.InjectMocks;
@@ -168,6 +170,21 @@ public class AppcRunTasksTest extends BaseTaskTest {
         assertEquals(vmIdList, expectedVmIdList);
     }
 
+    @Test
+    public void testUserParams() throws Exception {
+        Map<String, Object> userParams = new HashMap<String, Object>();
+        userParams.put("existing_software_version", "3.1");
+        userParams.put("new_software_version", "3.2");
+        userParams.put("operations_timeout", "150000");
+
+        String actualPayload = appcRunTasks.buildPayloadFromUserParams(userParams);
+        System.out.println(actualPayload);
+        String expectedPayload =
+                "{\\\"operations_timeout\\\":\\\"150000\\\",\\\"existing_software_version\\\":\\\"3.1\\\",\\\"new_software_version\\\":\\\"3.2\\\"}";
+        assertEquals(expectedPayload, actualPayload.replaceAll(" ", ""));
+
+    }
+
     private void mockReferenceResponse() {
         ControllerSelectionReference reference = new ControllerSelectionReference();
         reference.setControllerName("TEST-CONTROLLER-NAME");