Fix Sdc Controller 33/47233/1
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 11 May 2018 16:29:37 +0000 (18:29 +0200)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 11 May 2018 16:29:37 +0000 (18:29 +0200)
Add support to decode the entire input parameters provided in the
blueprints so that user see them in the Clamp UI + Unit tests

Issue-ID: CLAMP-151
Change-Id: I838e03375cb544fd91b0a1f86905d96239ffece2
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json [new file with mode: 0644]
src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json [new file with mode: 0644]

index 13af043..d24b6db 100644 (file)
@@ -26,6 +26,7 @@ package org.onap.clamp.clds.sdc.controller.installer;
 import com.att.aft.dme2.internal.apache.commons.io.IOUtils;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -50,6 +51,7 @@ import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.service.CldsService;
 import org.onap.clamp.clds.service.CldsTemplateService;
 import org.onap.clamp.clds.transform.XslTransformer;
+import org.onap.clamp.clds.util.JacksonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
@@ -164,6 +166,25 @@ public class CsarInstallerImpl implements CsarInstaller {
         return listConfig.get(0);
     }
 
+    private static String getAllBlueprintParametersInJson(BlueprintArtifact blueprintArtifact) {
+        ObjectNode node = JacksonUtils.getObjectMapperInstance().createObjectNode();
+        Yaml yaml = new Yaml();
+        Map<String, Object> inputsNodes = ((Map<String, Object>) ((Map<String, Object>) yaml
+                .load(blueprintArtifact.getDcaeBlueprint())).get("inputs"));
+        inputsNodes.entrySet().stream().filter(e -> !e.getKey().contains("policy_id")).forEach(elem -> {
+            Object defaultNode = ((Map<String, Object>) elem.getValue()).get("default");
+            if (defaultNode != null && defaultNode instanceof String) {
+                node.put(elem.getKey(), (String) defaultNode);
+            } else if (defaultNode != null) {
+                node.putPOJO(elem.getKey(), defaultNode);
+            } else {
+                node.put(elem.getKey(), "");
+            }
+        });
+        node.put("policy_id", "AUTO_GENERATED_POLICY_ID_AT_SUBMIT");
+        return node.toString();
+    }
+
     private static String searchForPolicyScopePrefix(BlueprintArtifact blueprintArtifact)
             throws SdcArtifactInstallerException {
         String policyName = null;
@@ -265,8 +286,8 @@ public class CsarInstallerImpl implements CsarInstaller {
         // Do a test to validate the BPMN
         new ModelProperties(cldsModel.getName(), cldsModel.getControlName(), "PUT", false,
                 cldsBpmnTransformer.doXslTransformToString(cldsTemplate.getBpmnText()), "{}");
-        String inputParams = "{\"name\":\"deployParameters\",\"value\":{\n" + "\"policy_id\": \""
-                + "AUTO_GENERATED_POLICY_ID_AT_SUBMIT" + "\"" + "}}";
+        String inputParams = "{\"name\":\"deployParameters\",\"value\":"
+                + getAllBlueprintParametersInJson(blueprintArtifact) + "}";
         cldsModel.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\""
                 + blueprintArtifact.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\""
                 + blueprintArtifact.getResourceAttached().getResourceInvariantUUID()
index e0f774b..222f757 100644 (file)
@@ -56,6 +56,7 @@ import org.onap.sdc.api.notification.IResourceInstance;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.skyscreamer.jsonassert.JSONAssert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -152,26 +153,42 @@ public class CsarInstallerItCase {
         String generatedName = RandomStringUtils.randomAlphanumeric(5);
         CsarHandler csar = buildFakeCsarHandler(generatedName);
         csarInstaller.installTheCsar(csar);
+        CldsModel cldsModel1 = verifyClosedLoopModelLoadedInDb(csar, generatedName, INSTANCE_NAME_RESOURCE1);
+        JSONAssert.assertEquals(
+                IOUtils.toString(
+                        ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca.json")),
+                cldsModel1.getPropText(), true);
+        CldsModel cldsModel2 = verifyClosedLoopModelLoadedInDb(csar, generatedName, INSTANCE_NAME_RESOURCE2);
+        JSONAssert.assertEquals(
+                IOUtils.toString(
+                        ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca-2.json")),
+                cldsModel2.getPropText(), true);
+    }
+
+    private CldsModel verifyClosedLoopModelLoadedInDb(CsarHandler csar, String generatedName,
+            String instanceNameResource) throws SdcArtifactInstallerException {
         // Get the template back from DB
-        CldsTemplate templateFromDb = CldsTemplate.retrieve(cldsDao, CsarInstallerImpl.TEMPLATE_NAME_PREFIX
-                + CsarInstallerImpl.buildModelName(csar, INSTANCE_NAME_RESOURCE1), false);
+        CldsTemplate templateFromDb = CldsTemplate.retrieve(cldsDao,
+                CsarInstallerImpl.TEMPLATE_NAME_PREFIX + CsarInstallerImpl.buildModelName(csar, instanceNameResource),
+                false);
         assertNotNull(templateFromDb);
         assertNotNull(templateFromDb.getBpmnText());
         assertNotNull(templateFromDb.getImageText());
         assertNotNull(templateFromDb.getPropText());
         assertTrue(templateFromDb.getPropText().contains("global")
                 && templateFromDb.getPropText().contains("node_templates:"));
-        assertEquals(templateFromDb.getName(), CsarInstallerImpl.TEMPLATE_NAME_PREFIX
-                + CsarInstallerImpl.buildModelName(csar, INSTANCE_NAME_RESOURCE1));
+        assertEquals(templateFromDb.getName(),
+                CsarInstallerImpl.TEMPLATE_NAME_PREFIX + CsarInstallerImpl.buildModelName(csar, instanceNameResource));
         // Get the Model back from DB
         CldsModel modelFromDb = CldsModel.retrieve(cldsDao,
-                CsarInstallerImpl.buildModelName(csar, INSTANCE_NAME_RESOURCE2), true);
+                CsarInstallerImpl.buildModelName(csar, instanceNameResource), true);
         assertNotNull(modelFromDb);
         assertNotNull(modelFromDb.getBpmnText());
         assertNotNull(modelFromDb.getImageText());
         assertNotNull(modelFromDb.getPropText());
         assertTrue(modelFromDb.getPropText().contains("policy_id"));
-        assertEquals(CsarInstallerImpl.buildModelName(csar, INSTANCE_NAME_RESOURCE2), modelFromDb.getName());
+        assertEquals(CsarInstallerImpl.buildModelName(csar, instanceNameResource), modelFromDb.getName());
         assertEquals(CsarInstallerImpl.CONTROL_NAME_PREFIX, modelFromDb.getControlNamePrefix());
+        return modelFromDb;
     }
 }
diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json
new file mode 100644 (file)
index 0000000..41ca2de
--- /dev/null
@@ -0,0 +1,49 @@
+{
+       "global": [
+               {
+                       "name": "service",
+                       "value": [
+                               "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+                       ]
+               },
+               {
+                       "name": "vf",
+                       "value": [
+                               "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+                       ]
+               },
+               {
+                       "name": "actionSet",
+                       "value": [
+                               "vnfRecipe"
+                       ]
+               },
+               {
+                       "name": "location",
+                       "value": [
+                               "DC1"
+                       ]
+               },
+               {
+                       "name": "deployParameters",
+                       "value": {
+                               "dh_override": "component_dockerhost",
+                               "dh_location_id": "zone1",
+                               "aaiEnrichmentHost": "none",
+                               "aaiEnrichmentPort": 8443,
+                               "enableAAIEnrichment": false,
+                               "dmaap_host": "dmaap.onap-message-router",
+                               "dmaap_port": 3904,
+                               "enableRedisCaching": false,
+                               "redisHosts": "",
+                               "tag_version": "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0",
+                               "consul_host": "consul-server.onap-consul",
+                               "consul_port": "8500",
+                               "cbs_host": "config-binding-service.dcae",
+                               "cbs_port": "10000",
+                               "external_port": "32010",
+                               "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"
+                       }
+               }
+       ]
+}
diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json
new file mode 100644 (file)
index 0000000..ce3158d
--- /dev/null
@@ -0,0 +1,36 @@
+{
+       "global": [
+               {
+                       "name": "service",
+                       "value": [
+                               "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+                       ]
+               },
+               {
+                       "name": "vf",
+                       "value": [
+                               "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"
+                       ]
+               },
+               {
+                       "name": "actionSet",
+                       "value": [
+                               "vnfRecipe"
+                       ]
+               },
+               {
+                       "name": "location",
+                       "value": [
+                               "DC1"
+                       ]
+               },
+               {
+                       "name": "deployParameters",
+                       "value": {
+                               "location_id": "",
+                               "service_id": "",
+                               "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"
+                       }
+               }
+       ]
+}