From 81c1344c018e995e4f6f906435d0faab3480e13b Mon Sep 17 00:00:00 2001 From: xuegao Date: Tue, 4 Feb 2020 15:22:00 +0100 Subject: Update get Dcae Status flow Update the flow to get Dcae Status, supporting multiple blue print. Issue-ID: CLAMP-590 Change-Id: I6a05a40d4879082413d3ed83159467ea616c5d37 Signed-off-by: xuegao --- .../org/onap/clamp/loop/DcaeComponentTest.java | 4 +- .../org/onap/clamp/loop/DeployFlowTestItCase.java | 86 +++++++++++++++-- .../onap/clamp/loop/LoopControllerTestItCase.java | 4 + .../org/onap/clamp/loop/LoopServiceTestItCase.java | 7 ++ .../resources/clds/camel/routes/dcae-flows.xml | 26 +++--- .../resources/clds/camel/routes/loop-flows.xml | 104 +++++++++++++++------ 6 files changed, 183 insertions(+), 48 deletions(-) (limited to 'src/test') diff --git a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java index 03b35f1b4..fa9cc063a 100644 --- a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java @@ -69,8 +69,8 @@ public class DcaeComponentTest { @Test public void convertDcaeResponseTest() throws IOException { - String dcaeFakeResponse = "{'requestId':'testId','operationType':'install','status':'state','error':'errorMessage', " - + "'links':{'self':'selfUrl','uninstall':'uninstallUrl'}}"; + String dcaeFakeResponse = "{'requestId':'testId','operationType':'install','status':'state'," + + "'error':'errorMessage', 'links':{'self':'selfUrl','uninstall':'uninstallUrl'}}"; DcaeOperationStatusResponse responseObject = DcaeComponent.convertDcaeResponse(dcaeFakeResponse); assertThat(responseObject.getRequestId()).isEqualTo("testId"); assertThat(responseObject.getOperationType()).isEqualTo("install"); diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java index e1cee341b..c85d5a57c 100644 --- a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java @@ -58,6 +58,9 @@ public class DeployFlowTestItCase { @Autowired LoopService loopService; + @Autowired + LoopsRepository loopsRepository; + @Test @Transactional public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException { @@ -86,8 +89,8 @@ public class DeployFlowTestItCase { @Transactional public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" - + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," - + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -98,7 +101,7 @@ public class DeployFlowTestItCase { "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true); loopTest2.addMicroServicePolicy(microServicePolicy1); loopTest2.addMicroServicePolicy(microServicePolicy2); - loopService.saveOrUpdateLoop(loopTest2); + loopsRepository.saveAndFlush(loopTest2); Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2) .build(); @@ -143,8 +146,8 @@ public class DeployFlowTestItCase { @Transactional public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" - + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," - + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -157,7 +160,7 @@ public class DeployFlowTestItCase { "testDeploymentId2", "testDeploymentStatusUrl2"); loopTest2.addMicroServicePolicy(microServicePolicy1); loopTest2.addMicroServicePolicy(microServicePolicy2); - loopService.saveOrUpdateLoop(loopTest2); + loopsRepository.saveAndFlush(loopTest2); Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2) .build(); @@ -172,6 +175,77 @@ public class DeployFlowTestItCase { assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); } + + @Test + @Transactional + public void getStatusWithSingleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + template.setBlueprint("yamlcontent"); + loopTest.setLoopTemplate(template); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopService.saveOrUpdateLoop(loopTest); + assertThat(loopTest.getComponents().size()).isEqualTo(2); + assertThat(loopTest.getComponent("DCAE")).isNotNull(); + assertThat(loopTest.getComponent("POLICY")).isNotNull(); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest) + .build(); + + camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange); + + assertThat(loopTest.getComponent("DCAE").getState().getStateName()).isEqualTo("BLUEPRINT_DEPLOYED"); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getComponents().size()).isEqualTo(2); + assertThat(loopAfterTest.getComponent("DCAE")).isNotNull(); + assertThat(loopAfterTest.getComponent("POLICY")).isNotNull(); + } + + @Test + @Transactional + public void getStatusWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + loopTest.setLoopTemplate(template); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("configPolicyTest2", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopTest.addMicroServicePolicy(microServicePolicy2); + loopService.saveOrUpdateLoop(loopTest); + assertThat(loopTest.getComponents().size()).isEqualTo(3); + assertThat(loopTest.getComponent("DCAE")).isNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull(); + assertThat(loopTest.getComponent("POLICY")).isNotNull(); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest) + .build(); + + camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange); + + assertThat(loopTest.getComponent("DCAE_configPolicyTest").getState().getStateName()) + .isEqualTo("BLUEPRINT_DEPLOYED"); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2").getState().getStateName()) + .isEqualTo("BLUEPRINT_DEPLOYED"); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getComponents().size()).isEqualTo(3); + assertThat(loopAfterTest.getComponent("DCAE")).isNull(); + assertThat(loopAfterTest.getComponent("POLICY")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull(); + } + private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, String dcaeBlueprintId) throws JsonSyntaxException, IOException { Loop loop = new Loop(name, svgRepresentation); diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java index ad37bcc88..f1e5c0927 100644 --- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java @@ -39,6 +39,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -68,6 +69,9 @@ public class LoopControllerTestItCase { private void saveTestLoopToDb() { Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + testLoop.setLoopTemplate(template); loopService.saveOrUpdateLoop(testLoop); } diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java index 615826eda..8089bf1a8 100644 --- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java @@ -40,6 +40,7 @@ import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.loop.log.LogType; import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.log.LoopLogService; +import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -175,6 +176,9 @@ public class LoopServiceTestItCase { private void saveTestLoopToDb() { Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + testLoop.setLoopTemplate(template); loopService.saveOrUpdateLoop(testLoop); } @@ -296,6 +300,9 @@ public class LoopServiceTestItCase { // Add log Loop loop = loopsRepository.findById(EXAMPLE_LOOP_NAME).orElse(null); loop.addLog(new LoopLog("test", LogType.INFO, "CLAMP", loop)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + loop.setLoopTemplate(template); loop = loopService.saveOrUpdateLoop(loop); // Add op policy OperationalPolicy operationalPolicy = new OperationalPolicy("opPolicy", null, diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index 48cda7a05..8088c2a40 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -3,12 +3,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -74,6 +74,8 @@ + java.lang.Exception @@ -170,12 +172,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -238,12 +240,14 @@ + + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !','WARNING','DCAE',${exchangeProperty[loopObject]})" /> @@ -344,7 +348,7 @@ + message="Getting DCAE deployment status for loop: ${exchangeProperty[loopObject].getName()} - ${exchangeProperty[dcaeComponent].getComponentName()}" /> @@ -364,9 +368,9 @@ + message="Endpoint to query Closed Loop status: ${exchangeProperty[getStatusUrl]}"> + uri="${exchangeProperty[getStatusUrl]}?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.dcae.deployment.userName}}&authPassword={{clamp.config.dcae.deployment.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=30000&authenticationPreemptive=true&connectionClose=true" /> ${exchangeProperty[dcaeResponseList]} - - ${body} - + + ${body} + diff --git a/src/test/resources/clds/camel/routes/loop-flows.xml b/src/test/resources/clds/camel/routes/loop-flows.xml index 036e8efc8..c4e9fee6d 100644 --- a/src/test/resources/clds/camel/routes/loop-flows.xml +++ b/src/test/resources/clds/camel/routes/loop-flows.xml @@ -17,7 +17,6 @@ - @@ -109,37 +108,84 @@ - - ${exchangeProperty[loopObject].getComponent('DCAE')} - - - ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} - != null - - - false - - + - ${header.CamelHttpResponseCode} == 200 - - - + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true + + + ${exchangeProperty[loopObject].getComponent('DCAE')} + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + - - - - ${exchangeProperty[dcaeComponent].computeState(*)} - - - - - - + + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + ${exchangeProperty[loopObject].getComponent('DCAE_' + ${exchangeProperty[microServicePolicy].getName())} + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + + + > + + +