Generate Random UUID for DCAE 65/87365/2
authorsebdet <sebastien.determe@intl.att.com>
Thu, 9 May 2019 14:50:17 +0000 (16:50 +0200)
committersebdet <sebastien.determe@intl.att.com>
Thu, 9 May 2019 15:05:36 +0000 (17:05 +0200)
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>
src/main/java/org/onap/clamp/loop/LoopOperation.java
src/main/resources/clds/camel/rest/clamp-api-v2.xml
src/main/resources/clds/camel/routes/flexible-flow.xml
src/test/java/org/onap/clamp/loop/LoopOperationTestItCase.java

index 518830a..172b77c 100644 (file)
@@ -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;
index 7e0c891..692e342 100644 (file)
                                                        <simple> ${exchangeProperty[policyStatus]} == 'SUBMITTED' and
                                                                ${exchangeProperty[dcaeStatus]} == 'NOT_DEPLOYED'
                                                        </simple>
-                                                       <to uri="direct:deploy-closedloop" />
+                                                       <to uri="direct:deploy-loop" />
                                                </when>
                                                <otherwise>
                                                        <log
                                                <when>
                                                        <simple> ${exchangeProperty[dcaeStatus]} == 'DEPLOYED'
                                                        </simple>
-                                                       <to uri="direct:undeploy-closedloop" />
+                                                       <to uri="direct:undeploy-loop" />
                                                </when>
                                                <otherwise>
                                                        <log
index 920e1e5..790a167 100644 (file)
                        </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"
                                <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')" />
 
index 9327478..a2c97e0 100644 (file)
@@ -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