From aa7fd8ddced2e3218fa85e131e1eff59ff33e22f Mon Sep 17 00:00:00 2001 From: sebdet <sebastien.determe@intl.att.com> Date: Thu, 9 May 2019 16:50:17 +0200 Subject: Generate Random UUID for DCAE Generate random UUI for DCAE deployment during deploy action Issue-ID: CLAMP-376 Change-Id: Idfc1959891738f0142d2c20e1f43f1ad45d8eaa7 Signed-off-by: sebdet <sebastien.determe@intl.att.com> --- .../java/org/onap/clamp/loop/LoopOperation.java | 74 ++++++++++++++-------- .../resources/clds/camel/rest/clamp-api-v2.xml | 4 +- .../resources/clds/camel/routes/flexible-flow.xml | 12 ++-- .../onap/clamp/loop/LoopOperationTestItCase.java | 23 +++---- 4 files changed, 66 insertions(+), 47 deletions(-) (limited to 'src') diff --git a/src/main/java/org/onap/clamp/loop/LoopOperation.java b/src/main/java/org/onap/clamp/loop/LoopOperation.java index 518830aa0..172b77c28 100644 --- a/src/main/java/org/onap/clamp/loop/LoopOperation.java +++ b/src/main/java/org/onap/clamp/loop/LoopOperation.java @@ -30,6 +30,7 @@ import com.google.gson.JsonObject; import java.io.IOException; import java.util.Iterator; import java.util.Set; +import java.util.UUID; import org.apache.camel.Exchange; import org.apache.camel.Message; @@ -52,8 +53,7 @@ public class LoopOperation { private static final String DCAE_STATUS_FIELD = "status"; private static final String DCAE_SERVICETYPE_ID = "serviceTypeId"; private static final String DCAE_INPUTS = "inputs"; - private static final String DCAE_DEPLOYMENT_PREFIX = "closedLoop_"; - private static final String DCAE_DEPLOYMENT_SUFIX = "_deploymentId"; + private static final String DCAE_DEPLOYMENT_PREFIX = "CLAMP_"; private static final String DEPLOYMENT_PARA = "dcaeDeployParameters"; private final LoopService loopService; @@ -63,8 +63,11 @@ public class LoopOperation { /** * The constructor. - * @param loopService The loop service - * @param refProp The clamp properties + * + * @param loopService + * The loop service + * @param refProp + * The clamp properties */ @Autowired public LoopOperation(LoopService loopService) { @@ -74,9 +77,11 @@ public class LoopOperation { /** * Get the payload used to send the deploy closed loop request. * - * @param loop The loop + * @param loop + * The loop * @return The payload used to send deploy closed loop request - * @throws IOException IOException + * @throws IOException + * IOException */ public String getDeployPayload(Loop loop) throws IOException { JsonObject globalProp = loop.getGlobalPropertiesJson(); @@ -98,9 +103,11 @@ public class LoopOperation { /** * Get the deployment id. * - * @param loop The loop + * @param loop + * The loop * @return The deployment id - * @throws IOException IOException + * @throws IOException + * IOException */ public String getDeploymentId(Loop loop) { // Set the deploymentId if not present yet @@ -109,7 +116,7 @@ public class LoopOperation { if (loop.getDcaeDeploymentId() != null && !loop.getDcaeDeploymentId().isEmpty()) { deploymentId = loop.getDcaeDeploymentId(); } else { - deploymentId = DCAE_DEPLOYMENT_PREFIX + loop.getName() + DCAE_DEPLOYMENT_SUFIX; + deploymentId = DCAE_DEPLOYMENT_PREFIX + UUID.randomUUID(); } return deploymentId; } @@ -117,10 +124,14 @@ public class LoopOperation { /** * Update the loop info. * - * @param camelExchange The camel exchange - * @param loop The loop - * @param deploymentId The deployment id - * @throws ParseException The parse exception + * @param camelExchange + * The camel exchange + * @param loop + * The loop + * @param deploymentId + * The deployment id + * @throws ParseException + * The parse exception */ public void updateLoopInfo(Exchange camelExchange, Loop loop, String deploymentId) throws ParseException { Message in = camelExchange.getIn(); @@ -133,8 +144,9 @@ public class LoopOperation { JSONObject linksObj = (JSONObject) jsonObj.get(DCAE_LINK_FIELD); String statusUrl = (String) linksObj.get(DCAE_STATUS_FIELD); - // use http4 instead of http, because camel http4 component is used to do the http call - String newStatusUrl = statusUrl.replaceAll("http:", "http4:"); + // use http4 instead of http, because camel http4 component is used to do the + // http call + String newStatusUrl = statusUrl.replaceAll("http:", "http4:").replaceAll("https:", "https4:"); loop.setDcaeDeploymentId(deploymentId); loop.setDcaeDeploymentStatusUrl(newStatusUrl); @@ -144,9 +156,11 @@ public class LoopOperation { /** * Get the Closed Loop status based on the reply from Policy. * - * @param statusCode The status code + * @param statusCode + * The status code * @return The state based on policy response - * @throws ParseException The parse exception + * @throws ParseException + * The parse exception */ public String analysePolicyResponse(int statusCode) { if (statusCode == 200) { @@ -160,11 +174,12 @@ public class LoopOperation { /** * Get the name of the first Operational policy. * - * @param loop The closed loop + * @param loop + * The closed loop * @return The name of the first operational policy */ public String getOperationalPolicyName(Loop loop) { - Set<OperationalPolicy> opSet = (Set<OperationalPolicy>)loop.getOperationalPolicies(); + Set<OperationalPolicy> opSet = loop.getOperationalPolicies(); Iterator<OperationalPolicy> iterator = opSet.iterator(); while (iterator.hasNext()) { OperationalPolicy policy = iterator.next(); @@ -176,9 +191,11 @@ public class LoopOperation { /** * Get the Closed Loop status based on the reply from DCAE. * - * @param camelExchange The camel exchange + * @param camelExchange + * The camel exchange * @return The state based on DCAE response - * @throws ParseException The parse exception + * @throws ParseException + * The parse exception */ public String analyseDcaeResponse(Exchange camelExchange, Integer statusCode) throws ParseException { if (statusCode == null) { @@ -212,12 +229,17 @@ public class LoopOperation { } /** - * Update the status of the closed loop based on the response from Policy and DCAE. + * Update the status of the closed loop based on the response from Policy and + * DCAE. * - * @param loop The closed loop - * @param policyState The state get from Policy - * @param dcaeState The state get from DCAE - * @throws ParseException The parse exception + * @param loop + * The closed loop + * @param policyState + * The state get from Policy + * @param dcaeState + * The state get from DCAE + * @throws ParseException + * The parse exception */ public LoopState updateLoopStatus(Loop loop, TempLoopState policyState, TempLoopState dcaeState) { LoopState clState = LoopState.IN_ERROR; diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index 7e0c891ee..692e342d7 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -216,7 +216,7 @@ <simple> ${exchangeProperty[policyStatus]} == 'SUBMITTED' and ${exchangeProperty[dcaeStatus]} == 'NOT_DEPLOYED' </simple> - <to uri="direct:deploy-closedloop" /> + <to uri="direct:deploy-loop" /> </when> <otherwise> <log @@ -268,7 +268,7 @@ <when> <simple> ${exchangeProperty[dcaeStatus]} == 'DEPLOYED' </simple> - <to uri="direct:undeploy-closedloop" /> + <to uri="direct:undeploy-loop" /> </when> <otherwise> <log diff --git a/src/main/resources/clds/camel/routes/flexible-flow.xml b/src/main/resources/clds/camel/routes/flexible-flow.xml index 920e1e549..790a1679b 100644 --- a/src/main/resources/clds/camel/routes/flexible-flow.xml +++ b/src/main/resources/clds/camel/routes/flexible-flow.xml @@ -489,8 +489,8 @@ </doFinally> </doTry> </route> - <route id="deploy-closedloop"> - <from uri="direct:deploy-closedloop" /> + <route id="deploy-loop"> + <from uri="direct:deploy-loop" /> <doTry> <log loggingLevel="INFO" @@ -535,19 +535,19 @@ <to uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" /> <setProperty propertyName="logMessage"> - <simple>Deploy closed loop status</simple> + <simple>Deploy closed loop status (id:${exchangeProperty[deploymentId]})</simple> </setProperty> <to uri="direct:dump-loop-log-http-response" /> </doFinally> </doTry> </route> - <route id="undeploy-closedloop"> - <from uri="direct:undeploy-closedloop" /> + <route id="undeploy-loop"> + <from uri="direct:undeploy-loop" /> <doTry> <log loggingLevel="INFO" - message="UNdeploy the closed loop: ${exchangeProperty[loopObject].getName()} : ${exchangeProperty[loopObject].getDcaeDeploymentId()}" /> + message="Undeploy the closed loop: ${exchangeProperty[loopObject].getName()} : ${exchangeProperty[loopObject].getDcaeDeploymentId()}" /> <to uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Undeploy closed loop')" /> diff --git a/src/test/java/org/onap/clamp/loop/LoopOperationTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopOperationTestItCase.java index 93274788d..a2c97e0c0 100644 --- a/src/test/java/org/onap/clamp/loop/LoopOperationTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopOperationTestItCase.java @@ -55,15 +55,12 @@ public class LoopOperationTestItCase { LoopService loopService; private Loop createTestLoop() { - String yaml = "imports:\n" - + " - \"http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\"\n" - + "node_templates:\n" - + " docker_service_host:\n" - + " type: dcae.nodes.SelectedDockerHost"; + String yaml = "imports:\n" + " - \"http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\"\n" + + "node_templates:\n" + " docker_service_host:\n" + " type: dcae.nodes.SelectedDockerHost"; Loop loopTest = new Loop("ControlLoopTest", yaml, "<xml></xml>"); - loopTest.setGlobalPropertiesJson(new Gson().fromJson("{\"dcaeDeployParameters\":" - + "{\"policy_id\": \"name\"}}", JsonObject.class)); + loopTest.setGlobalPropertiesJson( + new Gson().fromJson("{\"dcaeDeployParameters\":" + "{\"policy_id\": \"name\"}}", JsonObject.class)); loopTest.setLastComputedState(LoopState.DESIGN); loopTest.setDcaeDeploymentId("123456789"); loopTest.setDcaeDeploymentStatusUrl("http4://localhost:8085"); @@ -71,14 +68,13 @@ public class LoopOperationTestItCase { MicroServicePolicy microServicePolicy = new MicroServicePolicy("configPolicyTest", "", "tosca_definitions_version: tosca_simple_yaml_1_0_0", true, - gson.fromJson("{\"configtype\":\"json\"}", JsonObject.class), new HashSet<>()); + gson.fromJson("{\"configtype\":\"json\"}", JsonObject.class), new HashSet<>()); microServicePolicy.setProperties(new Gson().fromJson("{\"param1\":\"value1\"}", JsonObject.class)); loopTest.addMicroServicePolicy(microServicePolicy); return loopTest; } - @Test public void testAnalysePolicyResponse() { LoopOperation loopOp = new LoopOperation(loopService); @@ -102,7 +98,7 @@ public class LoopOperationTestItCase { assertThat(opName1).isNull(); OperationalPolicy opPolicy1 = new OperationalPolicy("OperationalPolicyTest1", null, - gson.fromJson("{\"type\":\"Operational\"}", JsonObject.class)); + gson.fromJson("{\"type\":\"Operational\"}", JsonObject.class)); loop.addOperationalPolicy(opPolicy1); String opName2 = loopOp.getOperationalPolicyName(loop); assertThat(opName2).isEqualTo("OperationalPolicyTest1"); @@ -212,7 +208,7 @@ public class LoopOperationTestItCase { loopOp.updateLoopInfo(camelExchange, loop, "testNewId"); Loop newLoop = loopService.getLoop(loop.getName()); - String newDeployId = newLoop.getDcaeDeploymentId(); + String newDeployId = newLoop.getDcaeDeploymentId(); String newDeploymentStatusUrl = newLoop.getDcaeDeploymentStatusUrl(); assertThat(newDeployId).isEqualTo("testNewId"); @@ -228,11 +224,12 @@ public class LoopOperationTestItCase { loop.setDcaeDeploymentId(null); String deploymentId2 = loopOp.getDeploymentId(loop); - assertThat(deploymentId2).isEqualTo("closedLoop_ControlLoopTest_deploymentId"); + assertThat(deploymentId2).startsWith("CLAMP_"); loop.setDcaeDeploymentId(""); String deploymentId3 = loopOp.getDeploymentId(loop); - assertThat(deploymentId3).isEqualTo("closedLoop_ControlLoopTest_deploymentId"); + assertThat(deploymentId3).startsWith("CLAMP_"); + assertThat(deploymentId3).isNotEqualTo(deploymentId2); } @Test -- cgit 1.2.3-korg