Update Holmes related feature 11/17411/3
authorxg353y <xg353y@intl.att.com>
Thu, 5 Oct 2017 16:04:24 +0000 (18:04 +0200)
committerxg353y <xg353y@intl.att.com>
Fri, 6 Oct 2017 09:14:26 +0000 (11:14 +0200)
No blueprint need to be send to SDC; Add configuration policy name in
holmes UI; Update the config body sent to Policy.

Change-Id: I4bf5b0c32d64f4acf28ac6f24128e463e28e5779
Signed-off-by: xg353y <xg353y@intl.att.com>
Issue-ID: CLAMP-27

src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
src/main/java/org/onap/clamp/clds/client/PolicyClient.java
src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
src/main/java/org/onap/clamp/clds/model/prop/Holmes.java
src/main/resources/META-INF/resources/designer/partials/portfolios/holmes_properties.html
src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
src/test/resources/example/model-properties/modelBpmnProp.json

index c42a22c..5e0d470 100644 (file)
@@ -61,7 +61,7 @@ public class HolmesPolicyDelegate implements JavaDelegate {
         ModelProperties prop = ModelProperties.create(execution);
         Holmes holmes = prop.getType(Holmes.class);
         if (holmes.isFound()) {
-            String responseMessage = policyClient.sendBasePolicyInOther(holmes.getCorrelationLogic(), prop,
+            String responseMessage = policyClient.sendBasePolicyInOther(formatHolmesConfigBody(prop, holmes), holmes.getConfigPolicyName(), prop,
                     holmesPolicyRequestUuid);
             if (responseMessage != null) {
                 execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes());
@@ -69,4 +69,7 @@ public class HolmesPolicyDelegate implements JavaDelegate {
         }
     }
 
+    public static String formatHolmesConfigBody (ModelProperties prop, Holmes holmes) {
+        return prop.getControlName() + "$$$" + holmes.getCorrelationLogic();
+    }
 }
index 7aa1330..d4f9014 100644 (file)
@@ -162,16 +162,18 @@ public class PolicyClient {
 
     /**
      * Perform send of base policy in OTHER type.
-     * 
+     *
      * @param configBody
      *            The config policy string body
+     * @param configPolicyName
+     *            The config policy name of the component that has been pre-deployed in DCAE
      * @param prop
      *            The ModelProperties
      * @param policyRequestUuid
      *            The policy request UUID
      * @return The answer from policy call
      */
-    public String sendBasePolicyInOther(String configBody, ModelProperties prop, String policyRequestUuid) {
+    public String sendBasePolicyInOther(String configBody, String configPolicyName, ModelProperties prop, String policyRequestUuid) {
 
         PolicyParameters policyParameters = new PolicyParameters();
 
@@ -183,6 +185,7 @@ public class PolicyClient {
         policyParameters.setConfigBody(configBody);
         policyParameters.setConfigBodyType(PolicyType.OTHER);
         policyParameters.setConfigName("HolmesPolicy");
+        policyParameters.setPolicyName(configPolicyName);
 
         policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
 
index 0ffde93..2d327f5 100644 (file)
@@ -70,21 +70,24 @@ public class SdcSendReqDelegate implements JavaDelegate {
         getSdcAttributes((String) execution.getVariable("controlName"));
         ModelProperties prop = ModelProperties.create(execution);
         String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText);
-        String formattedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
-        if (formattedSdcReq != null) {
-            execution.setVariable("formattedArtifactReq", formattedSdcReq.getBytes());
-        }
-        List<String> sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution);
+        // no need to upload blueprint for Holmes, thus blueprintPayload for Holmes is empty
+        if (!bluprintPayload.isEmpty()) {
+            String formattedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
+            if (formattedSdcReq != null) {
+                execution.setVariable("formattedArtifactReq", formattedSdcReq.getBytes());
+            }
+            List<String> sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution);
 
-        String sdcLocationsPayload = SdcReq.formatSdcLocationsReq(prop, artifactName);
-        String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json";
-        String formattedSdcLocationReq = SdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
+            String sdcLocationsPayload = SdcReq.formatSdcLocationsReq(prop, artifactName);
+            String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json";
+            String formattedSdcLocationReq = SdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
                 locationArtifactLabel, locationArtifactType);
-        if (formattedSdcLocationReq != null) {
-            execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes());
-        }
-        sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq,
+            if (formattedSdcLocationReq != null) {
+                execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes());
+            }
+            sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq,
                 artifactName, locationArtifactName);
+        }
     }
 
     /**
index 32846ed..9c3f261 100644 (file)
@@ -88,8 +88,8 @@ public class SdcReq {
         String updatedBlueprint = "";
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
-               updatedBlueprint = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlvalue);
-        } 
+            updatedBlueprint = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlvalue);
+        }
         logger.info("value of blueprint:" + updatedBlueprint);
         return updatedBlueprint;
     }
index 4fa0407..bd47e8d 100644 (file)
@@ -29,7 +29,7 @@ import com.fasterxml.jackson.databind.JsonNode;
  * Parse Holmes bpmn parameters json properties.
  * <p>
  * Example json:
- * [{"name":"correlationalLogic","value":"vcwx"},{"name":"operationalPolicy","value":"cccc"}]
+ * [{"name":"correlationalLogic","value":"vcwx"},{"name":"configPolicyName","value":"cccc"}]
  *
  */
 public class Holmes extends AbstractModelElement {
@@ -38,11 +38,11 @@ public class Holmes extends AbstractModelElement {
 
     private String              correlationLogic;
 
-    private String              operationalPolicy;
+    private String              configPolicyName;
 
     /**
      * Default constructor for Holmes Element
-     * 
+     *
      * @param modelProp
      *            The ModelProperties containing the all the info, like bpmn,
      *            bpmn params, etc ...
@@ -53,7 +53,7 @@ public class Holmes extends AbstractModelElement {
         super(TYPE_HOLMES, modelProp, modelBpmn, modelJson);
 
         correlationLogic = this.getValueByName("correlationalLogic");
-        operationalPolicy = this.getValueByName("operationalPolicy");
+        configPolicyName = this.getValueByName("configPolicyName");
     }
 
     public static final String getType() {
@@ -64,8 +64,8 @@ public class Holmes extends AbstractModelElement {
         return correlationLogic;
     }
 
-    public String getOperationalPolicy() {
-        return operationalPolicy;
+    public String getConfigPolicyName() {
+        return configPolicyName;
     }
 
 }
index 3c7607b..71ca631 100644 (file)
           <textarea class="form-control" focus="true" name="correlationalLogic"  id="correlationalLogic" />
         </div>
         <div>
-          <label for="operationalPolicy" class="col-sm-4 control-label">Operational policy</label>
+          <label for="configPolicyName" class="col-sm-4 control-label">Configuration Policy Name</label>
         </div>
-    <div class="col-sm-8">
-    <select class="form-control" id="operationalPolicy" name="operationalPolicy" autofocus="autofocus" required ng-trim="true" enableFilter="true">
-                 <option ng-repeat="x in operationalPolicies" value="{{x}}">{{x}}</option>
-               </select>
+        <div class="col-sm-8">
+          <textarea class="form-control" focus="true" name="configPolicyName"  id="configPolicyName" />
         </div>
       </div>
     </form>
diff --git a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java
new file mode 100644 (file)
index 0000000..b45c297
--- /dev/null
@@ -0,0 +1,63 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.AbstractItCase;
+import org.onap.clamp.clds.client.HolmesPolicyDelegate;
+import org.onap.clamp.clds.model.prop.Holmes;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test Onap HolmesPolicyDelegate features.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:application-no-camunda.properties")
+public class HolmesPolicyDelegateItCase extends AbstractItCase {
+
+    @Test
+    public void testCreatePolicyJson() throws IOException {
+        String modelBpmnProp = ResourceFileUtil
+                .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json");
+        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json");
+
+        ModelProperties prop = new ModelProperties("example-model-name", "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf", null, true, modelBpmn,
+                modelBpmnProp);
+
+        Holmes holmes =  prop.getType(Holmes.class);
+        String result = HolmesPolicyDelegate.formatHolmesConfigBody(prop, holmes);
+        assertTrue("ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf$$$blabla".equals(result));
+    }
+}
index 45f39a4..9daa97c 100644 (file)
@@ -113,7 +113,7 @@ public class ModelPropertiesTest {
         Holmes holmes = prop.getType(Holmes.class);
         assertNotNull(holmes);
         assertTrue(holmes.isFound());
-        assertEquals("policy1", holmes.getOperationalPolicy());
+        assertEquals("configPolicy1", holmes.getConfigPolicyName());
         assertEquals("blabla", holmes.getCorrelationLogic());
     }
 
index 14b3a8c..cd76a12 100644 (file)
@@ -5,8 +5,8 @@
       "value": "blabla"
     },
     {
-      "name": "operationalPolicy",
-      "value": "policy1"
+      "name": "configPolicyName",
+      "value": "configPolicy1"
     }
   ],
   "Policy_0honxgv": {
index a521ba7..eacb124 100644 (file)
       "value": "blabla"
     },
     {
-      "name": "operationalPolicy",
+      "name": "configPolicyName",
       "value": "policy1"
     }
   ]