From 3c327c1fe313cb31dcc914dcaee7f38255240099 Mon Sep 17 00:00:00 2001 From: xuegao Date: Mon, 23 Mar 2020 14:30:56 +0100 Subject: [PATCH] Populate deployment parameters Create deployment parameters while creating loops. Issue-ID: CLAMP-788 Change-Id: Icb4ebc786b87468846692744f27b697734015401 Signed-off-by: xuegao --- src/main/java/org/onap/clamp/loop/Loop.java | 2 + .../clamp/loop/deploy/DcaeDeployParameters.java | 60 +++++++--------- .../resources/clds/camel/routes/loop-flows.xml | 4 +- .../loop/deploy/BlueprintInputParametersTest.java | 79 +++++++++++++++------- ...=> deployment-parameters-multi-blueprints.json} | 12 ++-- .../deployment-parameters-single-blueprint.json | 9 +++ 6 files changed, 95 insertions(+), 71 deletions(-) rename src/test/resources/example/sdc/expected-result/{deployment-parameters.json => deployment-parameters-multi-blueprints.json} (93%) create mode 100644 src/test/resources/example/sdc/expected-result/deployment-parameters-single-blueprint.json diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 605e42fd..19a17dbb 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -57,6 +57,7 @@ import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.components.external.DcaeComponent; import org.onap.clamp.loop.components.external.ExternalComponent; import org.onap.clamp.loop.components.external.PolicyComponent; +import org.onap.clamp.loop.deploy.DcaeDeployParameters; import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopElementModel; @@ -173,6 +174,7 @@ public class Loop extends AuditEntity implements Serializable { .createPolicyInstance(this, toscaConverter)); } }); + this.setGlobalPropertiesJson(DcaeDeployParameters.getDcaeDeploymentParametersInJson(this)); } public String getName() { diff --git a/src/main/java/org/onap/clamp/loop/deploy/DcaeDeployParameters.java b/src/main/java/org/onap/clamp/loop/deploy/DcaeDeployParameters.java index 48349e79..e2b16e62 100644 --- a/src/main/java/org/onap/clamp/loop/deploy/DcaeDeployParameters.java +++ b/src/main/java/org/onap/clamp/loop/deploy/DcaeDeployParameters.java @@ -26,11 +26,9 @@ package org.onap.clamp.loop.deploy; import com.google.gson.JsonObject; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.loop.Loop; import org.onap.clamp.policy.microservice.MicroServicePolicy; @@ -41,32 +39,27 @@ import org.yaml.snakeyaml.Yaml; */ public class DcaeDeployParameters { - private static LinkedHashMap init(Set blueprintArtifactList, Loop loop) { + private static LinkedHashMap init(Loop loop) { LinkedHashMap deploymentParamMap = new LinkedHashMap<>(); - String microServiceName = ((MicroServicePolicy) loop.getMicroServicePolicies().toArray()[0]).getName(); - // Add index to the microservice name from the 2nd blueprint artifact for now. - // Update the microservice names, when able to link the microserivce <-> - // blueprint in the future - int index = 0; - for (BlueprintArtifact blueprintArtifact : blueprintArtifactList) { - if (index > 0) { - deploymentParamMap.put(microServiceName + index, - generateDcaeDeployParameter(blueprintArtifact, microServiceName)); - } else { - deploymentParamMap.put(microServiceName, - generateDcaeDeployParameter(blueprintArtifact, microServiceName)); - } - index++; + Set microServiceList = loop.getMicroServicePolicies(); + + for (MicroServicePolicy microService : microServiceList) { + deploymentParamMap.put(microService.getName(), + generateDcaeDeployParameter(microService)); } return deploymentParamMap; } - private static JsonObject generateDcaeDeployParameter(BlueprintArtifact blueprintArtifact, - String microServiceName) { + private static JsonObject generateDcaeDeployParameter(MicroServicePolicy microService) { + return generateDcaeDeployParameter(microService.getLoopElementModel().getBlueprint(), + microService.getName()); + } + + private static JsonObject generateDcaeDeployParameter(String blueprint, String tabName) { JsonObject deployJsonBody = new JsonObject(); Yaml yaml = new Yaml(); Map inputsNodes = ((Map) ((Map) yaml - .load(blueprintArtifact.getDcaeBlueprint())).get("inputs")); + .load(blueprint)).get("inputs")); inputsNodes.entrySet().stream().filter(e -> !e.getKey().contains("policy_id")).forEach(elem -> { Object defaultValue = ((Map) elem.getValue()).get("default"); if (defaultValue != null) { @@ -76,7 +69,7 @@ public class DcaeDeployParameters { } }); // For Dublin only one micro service is expected - deployJsonBody.addProperty("policy_id", microServiceName); + deployJsonBody.addProperty("policy_id", tabName); return deployJsonBody; } @@ -99,27 +92,20 @@ public class DcaeDeployParameters { * * @return The deploymentParameters in Json */ - public static JsonObject getDcaeDeploymentParametersInJson(Set blueprintArtifactList, - Loop loop) { - LinkedHashMap deploymentParamMap = init(blueprintArtifactList, loop); - + public static JsonObject getDcaeDeploymentParametersInJson(Loop loop) { JsonObject globalProperties = new JsonObject(); JsonObject deployParamJson = new JsonObject(); - for (Map.Entry mapElement : deploymentParamMap.entrySet()) { - deployParamJson.add(mapElement.getKey(), mapElement.getValue()); + if (loop.getLoopTemplate().getUniqueBlueprint()) { + String tabName = "loop template blueprint"; + deployParamJson.add(tabName, generateDcaeDeployParameter(loop.getLoopTemplate().getBlueprint(), tabName)); + } else { + LinkedHashMap deploymentParamMap = init(loop); + for (Map.Entry mapElement : deploymentParamMap.entrySet()) { + deployParamJson.add(mapElement.getKey(), mapElement.getValue()); + } } globalProperties.add("dcaeDeployParameters", deployParamJson); return globalProperties; } - /** - * Convert the object in Json. - * - * @return The deploymentParameters in Json - */ - public static JsonObject getDcaeDeploymentParametersInJson(BlueprintArtifact blueprintArtifact, Loop loop) { - LinkedHashSet blueprintArtifactList = new LinkedHashSet<>(); - blueprintArtifactList.add(blueprintArtifact); - return getDcaeDeploymentParametersInJson(blueprintArtifactList, loop); - } } diff --git a/src/main/resources/clds/camel/routes/loop-flows.xml b/src/main/resources/clds/camel/routes/loop-flows.xml index a4b6e292..8c22743a 100644 --- a/src/main/resources/clds/camel/routes/loop-flows.xml +++ b/src/main/resources/clds/camel/routes/loop-flows.xml @@ -59,10 +59,10 @@ ${body.getName()} - onap.policies.controlloop.Operational + ${body.getPolicyModel().getPolicyModelType()} - 1 + 1.0.0 ${body} diff --git a/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java b/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java index 75ca25cf..a580a6ac 100644 --- a/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java +++ b/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java @@ -34,52 +34,79 @@ import java.util.LinkedHashSet; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; -import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.clamp.loop.Loop; +import org.onap.clamp.loop.template.LoopElementModel; +import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; public class BlueprintInputParametersTest { - private BlueprintArtifact buildFakeBuildprintArtifact(String blueprintFilePath) throws IOException { - BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class); - Mockito.when(blueprintArtifact.getDcaeBlueprint()) - .thenReturn(ResourceFileUtil.getResourceAsString(blueprintFilePath)); - return blueprintArtifact; - } + @Test + public void getDeploymentParametersinJsonMultiBlueprintsTest() throws IOException, SdcToscaParserException { + Loop loop = Mockito.mock(Loop.class); + + MicroServicePolicy umService1 = Mockito.mock(MicroServicePolicy.class); + Mockito.when(umService1.getName()).thenReturn("testName1"); + + LoopElementModel loopElement = Mockito.mock(LoopElementModel.class); + String blueprint1 = ResourceFileUtil.getResourceAsString("example/sdc/blueprint-dcae/tca.yaml"); + Mockito.when(loopElement.getBlueprint()).thenReturn(blueprint1); + Mockito.when(umService1.getLoopElementModel()).thenReturn(loopElement); + + MicroServicePolicy umService2 = Mockito.mock(MicroServicePolicy.class); + Mockito.when(umService2.getName()).thenReturn("testName2"); - private LinkedHashSet buildFakeCsarHandler() throws IOException, SdcToscaParserException { + LoopElementModel loopElement2 = Mockito.mock(LoopElementModel.class); + String blueprint2 = ResourceFileUtil.getResourceAsString("example/sdc/blueprint-dcae/tca_2.yaml"); + Mockito.when(loopElement2.getBlueprint()).thenReturn(blueprint2); + Mockito.when(umService2.getLoopElementModel()).thenReturn(loopElement2); - LinkedHashSet blueprintSet = new LinkedHashSet(); + MicroServicePolicy umService3 = Mockito.mock(MicroServicePolicy.class); + Mockito.when(umService3.getName()).thenReturn("testName3"); - BlueprintArtifact blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca.yaml"); + LoopElementModel loopElement3 = Mockito.mock(LoopElementModel.class); + String blueprint3 = ResourceFileUtil.getResourceAsString("example/sdc/blueprint-dcae/tca_3.yaml"); + Mockito.when(loopElement3.getBlueprint()).thenReturn(blueprint3); + Mockito.when(umService3.getLoopElementModel()).thenReturn(loopElement3); - blueprintSet.add(blueprintArtifact); - // Create fake blueprint artifact 2 on resource2 - blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca_2.yaml"); - blueprintSet.add(blueprintArtifact); + LinkedHashSet umServiceSet = new LinkedHashSet(); + umServiceSet.add(umService1); + umServiceSet.add(umService2); + umServiceSet.add(umService3); + Mockito.when(loop.getMicroServicePolicies()).thenReturn(umServiceSet); + + LoopTemplate template = Mockito.mock(LoopTemplate.class); + Mockito.when(template.getUniqueBlueprint()).thenReturn(false); + Mockito.when(loop.getLoopTemplate()).thenReturn(template); - // Create fake blueprint artifact 3 on resource 1 so that it's possible to - // test multiple CL deployment per Service/vnf - blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca_3.yaml"); - blueprintSet.add(blueprintArtifact); - return blueprintSet; + JsonObject paramJson = DcaeDeployParameters.getDcaeDeploymentParametersInJson(loop); + + Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson), + ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters-multi-blueprints.json")); } @Test - public void getDeploymentParametersinJsonTest() throws IOException, SdcToscaParserException { + public void getDeploymentParametersinJsonSingleBlueprintTest() throws IOException, SdcToscaParserException { Loop loop = Mockito.mock(Loop.class); - MicroServicePolicy umService = Mockito.mock(MicroServicePolicy.class); + + MicroServicePolicy umService1 = Mockito.mock(MicroServicePolicy.class); + Mockito.when(umService1.getName()).thenReturn("testName1"); LinkedHashSet umServiceSet = new LinkedHashSet(); - Mockito.when(umService.getName()).thenReturn("testName"); - umServiceSet.add(umService); + umServiceSet.add(umService1); Mockito.when(loop.getMicroServicePolicies()).thenReturn(umServiceSet); - JsonObject paramJson = DcaeDeployParameters.getDcaeDeploymentParametersInJson(buildFakeCsarHandler(), loop); + LoopTemplate template = Mockito.mock(LoopTemplate.class); + Mockito.when(template.getUniqueBlueprint()).thenReturn(true); + String blueprint = ResourceFileUtil.getResourceAsString("example/sdc/blueprint-dcae/tca.yaml"); + Mockito.when(template.getBlueprint()).thenReturn(blueprint); + Mockito.when(loop.getLoopTemplate()).thenReturn(template); + + JsonObject paramJson = DcaeDeployParameters.getDcaeDeploymentParametersInJson(loop); - Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson), - ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters.json")); + Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson), + ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters-single-blueprint.json")); } } diff --git a/src/test/resources/example/sdc/expected-result/deployment-parameters.json b/src/test/resources/example/sdc/expected-result/deployment-parameters-multi-blueprints.json similarity index 93% rename from src/test/resources/example/sdc/expected-result/deployment-parameters.json rename to src/test/resources/example/sdc/expected-result/deployment-parameters-multi-blueprints.json index 2e10ac37..6ebaa073 100644 --- a/src/test/resources/example/sdc/expected-result/deployment-parameters.json +++ b/src/test/resources/example/sdc/expected-result/deployment-parameters-multi-blueprints.json @@ -1,11 +1,11 @@ { "dcaeDeployParameters": { - "testName": { + "testName1": { "location_id": "", "service_id": "", - "policy_id": "testName" + "policy_id": "testName1" }, - "testName1": { + "testName2": { "aaiEnrichmentHost": "aai.onap.svc.cluster.local", "aaiEnrichmentPort": "8443", "enableAAIEnrichment": true, @@ -20,9 +20,9 @@ "cbs_port": "10000", "external_port": "32012", "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app", - "policy_id": "testName" + "policy_id": "testName2" }, - "testName2": { + "testName3": { "aaiEnrichmentHost": "aai.onap.svc.cluster.local", "aaiEnrichmentPort": "8443", "enableAAIEnrichment": true, @@ -37,7 +37,7 @@ "cbs_port": "10000", "external_port": "32012", "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app", - "policy_id": "testName" + "policy_id": "testName3" } } } \ No newline at end of file diff --git a/src/test/resources/example/sdc/expected-result/deployment-parameters-single-blueprint.json b/src/test/resources/example/sdc/expected-result/deployment-parameters-single-blueprint.json new file mode 100644 index 00000000..494c2e4f --- /dev/null +++ b/src/test/resources/example/sdc/expected-result/deployment-parameters-single-blueprint.json @@ -0,0 +1,9 @@ +{ + "dcaeDeployParameters": { + "loop template blueprint": { + "location_id": "", + "service_id": "", + "policy_id": "loop template blueprint" + } + } +} \ No newline at end of file -- 2.16.6