Merge "Fix Sdc Controller"
diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
index 13af043..d24b6db 100644
--- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
+++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
@@ -26,6 +26,7 @@
 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.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 @@
         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 @@
         // 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()
diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
index e0f774b..222f757 100644
--- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
@@ -56,6 +56,7 @@
 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 @@
         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
index 0000000..41ca2de
--- /dev/null
+++ b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json
@@ -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
index 0000000..ce3158d
--- /dev/null
+++ b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json
@@ -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"
+			}
+		}
+	]
+}