diff options
author | xuegao <xg353y@intl.att.com> | 2020-03-23 14:30:56 +0100 |
---|---|---|
committer | xuegao <xg353y@intl.att.com> | 2020-03-23 14:42:07 +0100 |
commit | 3c327c1fe313cb31dcc914dcaee7f38255240099 (patch) | |
tree | 28933daca7a06749a778d1dba06ea99872603096 | |
parent | c405a83ec84c2bc1c090f06f9ac6207469e09cbb (diff) |
Populate deployment parameters
Create deployment parameters while creating loops.
Issue-ID: CLAMP-788
Change-Id: Icb4ebc786b87468846692744f27b697734015401
Signed-off-by: xuegao <xg353y@intl.att.com>
-rw-r--r-- | src/main/java/org/onap/clamp/loop/Loop.java | 2 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/loop/deploy/DcaeDeployParameters.java | 60 | ||||
-rw-r--r-- | src/main/resources/clds/camel/routes/loop-flows.xml | 4 | ||||
-rw-r--r-- | src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java | 79 | ||||
-rw-r--r-- | src/test/resources/example/sdc/expected-result/deployment-parameters-multi-blueprints.json (renamed from src/test/resources/example/sdc/expected-result/deployment-parameters.json) | 12 | ||||
-rw-r--r-- | src/test/resources/example/sdc/expected-result/deployment-parameters-single-blueprint.json | 9 |
6 files changed, 95 insertions, 71 deletions
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 605e42fd1..19a17dbb0 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 48349e791..e2b16e62e 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<String, JsonObject> init(Set<BlueprintArtifact> blueprintArtifactList, Loop loop) { + private static LinkedHashMap<String, JsonObject> init(Loop loop) { LinkedHashMap<String, JsonObject> 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<MicroServicePolicy> 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<String, Object> inputsNodes = ((Map<String, Object>) ((Map<String, Object>) 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<String, Object>) 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<BlueprintArtifact> blueprintArtifactList, - Loop loop) { - LinkedHashMap<String, JsonObject> deploymentParamMap = init(blueprintArtifactList, loop); - + public static JsonObject getDcaeDeploymentParametersInJson(Loop loop) { JsonObject globalProperties = new JsonObject(); JsonObject deployParamJson = new JsonObject(); - for (Map.Entry<String, JsonObject> 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<String, JsonObject> deploymentParamMap = init(loop); + for (Map.Entry<String, JsonObject> 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<BlueprintArtifact> 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 a4b6e2920..8c22743a3 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 @@ <simple>${body.getName()}</simple> </setProperty> <setProperty propertyName="policyType"> - <simple>onap.policies.controlloop.Operational</simple> + <simple>${body.getPolicyModel().getPolicyModelType()}</simple> </setProperty> <setProperty propertyName="policyVersion"> - <simple>1</simple> + <simple>1.0.0</simple> </setProperty> <setProperty propertyName="operationalPolicy"> <simple>${body}</simple> 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 75ca25cff..a580a6ac8 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<BlueprintArtifact> 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<BlueprintArtifact> blueprintSet = new LinkedHashSet<BlueprintArtifact>(); + 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<MicroServicePolicy> umServiceSet = new LinkedHashSet<MicroServicePolicy>(); + 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<MicroServicePolicy> umServiceSet = new LinkedHashSet<MicroServicePolicy>(); - 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 index 2e10ac37e..6ebaa073f 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 000000000..494c2e4ff --- /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 |