diff options
author | xuegao <xg353y@intl.att.com> | 2020-01-27 15:21:59 +0100 |
---|---|---|
committer | Sébastien Determe <sebastien.determe@intl.att.com> | 2020-01-30 11:51:18 +0000 |
commit | e0a8ab9bd315aecde32e0163c9d233ec29df9d51 (patch) | |
tree | 04c6afc93739642f8b02f2dfe55fcf37a5e652fd /src/test | |
parent | 1274833bdb3ef9eac728564bd9b1b687bf9f1727 (diff) |
Update undeploy-loop flow
Update the undploy-loop flow to support the multiple blueprint
deployment
Issue-ID: CLAMP-627
Change-Id: Ic4187179e2ef2f574f8cc836eebc3608b8aee899
Signed-off-by: xuegao <xg353y@intl.att.com>
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java | 70 | ||||
-rw-r--r-- | src/test/resources/clds/camel/routes/dcae-flows.xml | 191 |
2 files changed, 176 insertions, 85 deletions
diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java index 3499babd1..d7c2edadc 100644 --- a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java @@ -119,6 +119,66 @@ public class DeployFlowTestItCase { assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); } + @Test + @Transactional + public void undeployWithSingleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + template.setBlueprint("yamlcontent"); + loopTest.setLoopTemplate(template); + loopTest.setDcaeDeploymentId("testDeploymentId"); + loopTest.setDcaeDeploymentStatusUrl("testUrl"); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopService.saveOrUpdateLoop(loopTest); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest).build(); + + camelContext.createProducerTemplate() + .send("direct:undeploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue(); + } + + @Test + @Transactional + public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest2 = createLoop("ControlLoopTest2", "<xml></xml>", "yamlcontent", "{\"dcaeDeployParameters\": {" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "}}", "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + loopTest2.setLoopTemplate(template); + MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true, "testDeploymentId1", "testDeploymentStatusUrl1"); + MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true, "testDeploymentId2", "testDeploymentStatusUrl2"); + loopTest2.addMicroServicePolicy(microServicePolicy1); + loopTest2.addMicroServicePolicy(microServicePolicy2); + loopService.saveOrUpdateLoop(loopTest2); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest2).build(); + + camelContext.createProducerTemplate() + .send("direct:undeploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest2"); + Set<MicroServicePolicy> policyList = loopAfterTest.getMicroServicePolicies(); + for (MicroServicePolicy policy : policyList) { + assertThat(policy.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue(); + } + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNull(); + assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); + } + private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, String dcaeBlueprintId) throws JsonSyntaxException, IOException { Loop loop = new Loop(name, blueprint, svgRepresentation); @@ -135,4 +195,14 @@ public class DeployFlowTestItCase { microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class)); return microService; } + + private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, + String policyTosca, String jsonProperties, boolean shared, String deploymengId, String deploymentStatusUrl) { + MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation, + policyTosca, jsonProperties, shared); + + microService.setDcaeDeploymentId(deploymengId); + microService.setDcaeDeploymentStatusUrl(deploymentStatusUrl); + return microService; + } } diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index 552f02123..48cda7a05 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -81,8 +81,9 @@ <constant>false</constant> </handled> <setProperty propertyName="logMessage"> - <simple>DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + <simple>DEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}), + Dep-id:${exchangeProperty[dcaeDeploymentId]}, StatusUrl:${exchangeProperty[dcaeStatusUrl]}) </simple> </setProperty> @@ -98,88 +99,6 @@ </doFinally> </doTry> </route> - <!--<route id="deploy-loop-multi-blueprint"> - <from uri="direct:deploy-loop-multi-blueprint" /> - - - <doTry> - <split> - <doTry> - <simple>${exchangeProperty[loopObject].getMicroServicePolicies()} - </simple> - <setProperty propertyName="microServicePolicy"> - <simple>${body}</simple> - </setProperty> - <log - loggingLevel="INFO" - message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" /> - <setProperty propertyName="raiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">false</simple> - </setProperty> - <setBody> - <method ref="org.onap.clamp.loop.components.external.DcaeComponent" - method="getDeployPayload(${exchangeProperty[loopObject]},${exchangeProperty[microServicePolicy].getName())" /> - </setBody> - <setProperty propertyName="dcaeDeploymentId"> - <method ref="org.onap.clamp.loop.components.external.DcaeComponent" - method="generateDeploymentId()" /> - </setProperty> - <setHeader headerName="CamelHttpMethod"> - <constant>PUT</constant> - </setHeader> - <setHeader headerName="Content-Type"> - <constant>application/json</constant> - </setHeader> - <setHeader headerName="X-ONAP-RequestID"> - <simple>${exchangeProperty[X-ONAP-RequestID]} - </simple> - </setHeader> - <setHeader headerName="X-ONAP-InvocationID"> - <simple>${exchangeProperty[X-ONAP-InvocationID]} - </simple> - </setHeader> - <setHeader headerName="X-ONAP-PartnerName"> - <simple>${exchangeProperty[X-ONAP-PartnerName]} - </simple> - </setHeader> - <log loggingLevel="INFO" - message="Endpoint to deploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}"></log> - <toD - uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}?bridgeEndpoint=true&useSystemProperties=true&mapHttpMessageHeaders=false&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authUsername={{clamp.config.dcae.deployment.userName}}&authPassword={{clamp.config.dcae.deployment.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=300000&authenticationPreemptive=true&connectionClose=true" /> - <convertBodyTo type="java.lang.String" /> - <setProperty propertyName="dcaeResponse"> - <method ref="org.onap.clamp.loop.components.external.DcaeComponent" - method="convertDcaeResponse(${body})" /> - </setProperty> - <setProperty propertyName="dcaeStatusUrl"> - <method ref="org.onap.clamp.loop.components.external.DcaeComponent" - method="getStatusUrl(${exchangeProperty[dcaeResponse]})" /> - </setProperty> - <to - uri="bean:org.onap.clamp.loop.LoopService?method=updateDcaeDeploymentFields(${exchangeProperty[loopObject]},${exchangeProperty[microServicePolicy].getName(),${exchangeProperty[dcaeDeploymentId]},${exchangeProperty[dcaeStatusUrl]})" /> - <doFinally> - <to uri="direct:reset-raise-http-exception-flag" /> - <setProperty propertyName="logMessage"> - <simple>DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, - StatusUrl:${exchangeProperty[dcaeStatusUrl]}) - </simple> - </setProperty> - <setProperty propertyName="logComponent"> - <simple>DCAE</simple> - </setProperty> - <to uri="direct:dump-loop-log-http-response" /> - </doFinally> - </doTry> - - </split> - <doFinally> - <to uri="direct:reset-raise-http-exception-flag" /> - <to - uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" /> - </doFinally> - </doTry> - </route>--> <route id="deploy-loop-single-blueprint"> <from uri="direct:deploy-loop-single-blueprint" /> <doTry> @@ -249,6 +168,109 @@ </route> <route id="undeploy-loop"> <from uri="direct:undeploy-loop" /> + <choice> + <when> + <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + </simple> + <to uri="direct:undeploy-loop-single-blueprint" /> + </when> + <when> + <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + </simple> + <to uri="direct:undeploy-loop-multi-blueprint" /> + </when> + </choice> + </route> + <route id="undeploy-loop-multi-blueprint"> + <from uri="direct:undeploy-loop-multi-blueprint" /> + <doTry> + <log loggingLevel="INFO" + message="Undeploying the blueprints for loop: ${exchangeProperty[loopObject].getName()}" /> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Undeploying the loop with multiple blueprints')" /> + <split> + <simple>${exchangeProperty[loopObject].getMicroServicePolicies()} + </simple> + <setProperty propertyName="microServicePolicy"> + <simple>${body}</simple> + </setProperty> + <log + loggingLevel="INFO" + message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" /> + <choice> + <when> + <simple>${exchangeProperty[microServicePolicy].getDcaeDeploymentId()} != null + </simple> + <setBody> + <method ref="org.onap.clamp.loop.components.external.DcaeComponent" + method="getUndeployPayload(${exchangeProperty[microServicePolicy]})" /> + </setBody> + <setHeader headerName="CamelHttpMethod"> + <constant>DELETE</constant> + </setHeader> + <setHeader headerName="Content-Type"> + <constant>application/json</constant> + </setHeader> + <setHeader headerName="X-ONAP-RequestID"> + <simple>${exchangeProperty[X-ONAP-RequestID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-InvocationID"> + <simple>${exchangeProperty[X-ONAP-InvocationID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-PartnerName"> + <simple>${exchangeProperty[X-ONAP-PartnerName]} + </simple> + </setHeader> + <log loggingLevel="INFO" + message="Endpoint to undeploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[microServicePolicy].getDcaeDeploymentId()}"></log> + <toD + uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[microServicePolicy].getDcaeDeploymentId()}?bridgeEndpoint=true&useSystemProperties=true&mapHttpMessageHeaders=false&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authUsername={{clamp.config.dcae.deployment.userName}}&authPassword={{clamp.config.dcae.deployment.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=300000&authenticationPreemptive=true&connectionClose=true" /> + <convertBodyTo type="java.lang.String" /> + <setProperty propertyName="dcaeResponse"> + <method ref="org.onap.clamp.loop.components.external.DcaeComponent" + method="convertDcaeResponse(${body})" /> + </setProperty> + <setProperty propertyName="dcaeStatusUrl"> + <method ref="org.onap.clamp.loop.components.external.DcaeComponent" + method="getStatusUrl(${exchangeProperty[dcaeResponse]})" /> + </setProperty> + <to + uri="bean:org.onap.clamp.policy.microservice.MicroServicePolicyService?method=updateDcaeDeploymentFields(${exchangeProperty[microServicePolicy]},${exchangeProperty[microServicePolicy].getDcaeDeploymentId()},${exchangeProperty[dcaeStatusUrl]})" /> + </when> + <otherwise> + <log loggingLevel="WARNING" + message="Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !','WARNING',${exchangeProperty[loopObject]})" /> + </otherwise> + </choice> + </split> + <doCatch> + <exception>java.lang.Exception</exception> + <handled> + <constant>false</constant> + </handled> + <setProperty propertyName="logMessage"> + <simple>UNDEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}) + </simple> + </setProperty> + <setProperty propertyName="logComponent"> + <simple>DCAE</simple> + </setProperty> + <to uri="direct:dump-loop-log-http-response" /> + </doCatch> + <doFinally> + <to uri="direct:reset-raise-http-exception-flag" /> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" /> + </doFinally> + </doTry> + </route> + <route id="undeploy-loop-single-blueprint"> + <from uri="direct:undeploy-loop-single-blueprint" /> <log loggingLevel="INFO" message="Undeploying the loop: ${exchangeProperty[loopObject].getName()} : ${exchangeProperty[loopObject].getDcaeDeploymentId()}" /> <to @@ -316,7 +338,6 @@ message="Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !','WARNING',${exchangeProperty[loopObject]})" /> - </otherwise> </choice> </route> |