Merge "Fixed major sonar issues"
authorSébastien Determe <sd378r@intl.att.com>
Fri, 29 Sep 2017 07:00:41 +0000 (07:00 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 29 Sep 2017 07:00:41 +0000 (07:00 +0000)
38 files changed:
pom.xml
src/main/java/org/onap/clamp/clds/client/PolicyClient.java
src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java [deleted file]
src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
src/main/java/org/onap/clamp/clds/model/prop/Tca.java
src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java [moved from src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java with 57% similarity]
src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html
src/main/resources/clds/clds-reference.properties
src/main/resources/clds/globalClds.properties
src/test/java/org/onap/clamp/clds/AbstractItCase.java [moved from src/test/java/org/onap/clamp/clds/AbstractIT.java with 97% similarity]
src/test/java/org/onap/clamp/clds/client/req/OperationalPolicyReqTest.java
src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java
src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java [moved from src/test/java/org/onap/clamp/clds/it/CldsDaoIT.java with 95% similarity]
src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java [moved from src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java with 94% similarity]
src/test/java/org/onap/clamp/clds/it/HttpsItCase.java [moved from src/test/java/org/onap/clamp/clds/it/HttpsIT.java with 97% similarity]
src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java [moved from src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java with 97% similarity]
src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java [moved from src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java with 86% similarity]
src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java [deleted file]
src/test/java/org/onap/clamp/clds/it/RefPropItCase.java [moved from src/test/java/org/onap/clamp/clds/it/RefPropIT.java with 96% similarity]
src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java [moved from src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java with 82% similarity]
src/test/java/org/onap/clamp/clds/it/SdcIT.java [deleted file]
src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
src/test/resources/clds/clds-reference.properties
src/test/resources/example/model-properties/holmes/modelBpmn.json [new file with mode: 0644]
src/test/resources/example/model-properties/holmes/modelBpmnProperties.json [new file with mode: 0644]
src/test/resources/example/model-properties/tca/modelBpmn.json [new file with mode: 0644]
src/test/resources/example/model-properties/tca/modelBpmnProperties.json [new file with mode: 0644]
src/test/resources/example/tca-policy-req/blueprint-expected.yaml [new file with mode: 0644]
src/test/resources/example/tca-policy-req/blueprint-input.yaml [new file with mode: 0644]
src/test/resources/example/tca-policy-req/tca-policy-expected.json [new file with mode: 0644]
src/test/resources/example/templatePropForTca.json [deleted file]
src/test/resources/expected/tca.json [deleted file]

diff --git a/pom.xml b/pom.xml
index fb86ae8..c4c1a81 100644 (file)
--- a/pom.xml
+++ b/pom.xml
               <goal>verify</goal>
             </goals>
             <configuration>
+            <includes>
+              <include>**/*ItCase.java</include>
+            </includes>
               <forkCount>1</forkCount>
               <reuseForks>false</reuseForks>
             </configuration>
index 391e395..7aa1330 100644 (file)
@@ -140,7 +140,7 @@ public class PolicyClient {
 
         // Set Policy Type
         policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
-        policyParameters.setEcompName(refProp.getStringValue("policy.ecomp.name"));
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
         policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
 
         policyParameters.setConfigBody(policyJson);
@@ -177,7 +177,7 @@ public class PolicyClient {
 
         // Set Policy Type
         policyParameters.setPolicyConfigType(PolicyConfigType.Base);
-        policyParameters.setEcompName(refProp.getStringValue("policy.ecomp.name"));
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
         policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
 
         policyParameters.setConfigBody(configBody);
@@ -196,6 +196,43 @@ public class PolicyClient {
         return rtnMsg;
     }
 
+    /**
+     * Perform send of Microservice policy in OTHER type.
+     * 
+     * @param configBody
+     *            The config policy string body
+     * @param prop
+     *            The ModelProperties
+     * @param policyRequestUuid
+     *            The policy request UUID
+     * @return The answer from policy call
+     */
+    public String sendMicroServiceInOther(String configBody, ModelProperties prop, String policyRequestUuid) {
+
+        PolicyParameters policyParameters = new PolicyParameters();
+
+        // Set Policy Type
+        policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
+        policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
+
+        policyParameters.setConfigBody(configBody);
+        policyParameters.setConfigBodyType(PolicyType.OTHER);
+
+        policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
+        String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix");
+
+        // Adding this line to clear the policy id from policy name while
+        // pushing to policy engine
+        prop.setPolicyUniqueId("");
+
+        String rtnMsg = send(policyParameters, prop, policyNamePrefix);
+        String policyType = refProp.getStringValue("policy.ms.type");
+        push(policyType, prop);
+
+        return rtnMsg;
+    }
+
     /**
      * Perform send of policy.
      *
index 9debcc2..7de1268 100644 (file)
 
 package org.onap.clamp.clds.client;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.TcaMPolicyReq;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.prop.Tca;
 import org.onap.clamp.clds.model.refprop.RefProp;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
 /**
  * Send Tca info to policy api.
  *
@@ -46,10 +46,10 @@ public class TcaPolicyDelegate implements JavaDelegate {
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
 
     @Autowired
-    private RefProp                 refProp;
+    private RefProp                   refProp;
 
     @Autowired
-    PolicyClient                    policyClient;
+    PolicyClient                      policyClient;
 
     /**
      * Perform activity. Send Tca info to policy api.
@@ -64,8 +64,8 @@ public class TcaPolicyDelegate implements JavaDelegate {
         ModelProperties prop = ModelProperties.create(execution);
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
-            String policyJson = TcaMPolicyReq.formatTca(refProp, prop);
-            String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
+            String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
+            String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop, tcaPolicyRequestUuid);
             if (responseMessage != null) {
                 execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes());
             }
index c5e26f3..32846ed 100644 (file)
@@ -26,7 +26,6 @@ package org.onap.clamp.clds.client.req;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -89,25 +88,14 @@ public class SdcReq {
         String updatedBlueprint = "";
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
-            prop.setCurrentModelElementId(tca.getId());
-            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
-            ObjectNode content = rootNode.with("content");
-            TcaMPolicyReq.appendSignatures(refProp, service, content, tca, prop);
-            logger.info("Value of content:" + content);
-            // ObjectNode servConfNode =
-            // (ObjectNode)signatures.get("signatures");
-
-            // get updated blueprint by attaching service Conf from
-            // globalProperties
-            updatedBlueprint = getUpdatedBlueprintWithConfiguration(refProp, prop, yamlvalue, content);
-        }
-
+               updatedBlueprint = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlvalue);
+        } 
         logger.info("value of blueprint:" + updatedBlueprint);
         return updatedBlueprint;
     }
 
     private static String getUpdatedBlueprintWithConfiguration(RefProp refProp, ModelProperties prop, String yamlValue,
-            ObjectNode serviceConf) throws JsonProcessingException, IOException {
+            ObjectNode serviceConf) throws IOException {
         String blueprint = "";
         Yaml yaml = new Yaml();
         // Serialiaze Yaml file
diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java
deleted file mode 100644 (file)
index f310628..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * ============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.client.req;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.onap.clamp.clds.model.prop.Global;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.Tca;
-import org.onap.clamp.clds.model.prop.TcaItem;
-import org.onap.clamp.clds.model.prop.TcaThreshhold;
-import org.onap.clamp.clds.model.refprop.RefProp;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Construct a Policy for Tca/MTca Service request given CLDS objects.
- *
- *
- */
-public class TcaMPolicyReq {
-    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(TcaMPolicyReq.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    /**
-     * Format Tca Policy request
-     *
-     * @param refProp
-     * @param prop
-     * @return
-     * @throws JsonParseException
-     * @throws JsonMappingException
-     * @throws IOException
-     */
-    public static String formatTca(RefProp refProp, ModelProperties prop)
-            throws JsonParseException, JsonMappingException, IOException {
-        Global global = prop.getGlobal();
-        String service = global.getService();
-
-        Tca tca = prop.getType(Tca.class);
-        prop.setCurrentModelElementId(tca.getId());
-        ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
-        rootNode.put("policyName", prop.getCurrentPolicyScopeAndPolicyName());
-        ObjectNode content = rootNode.with("content");
-        appendSignatures(refProp, service, content, tca, prop);
-
-        String tcaPolicyReq = rootNode.toString();
-        logger.info("tcaPolicyReq=" + tcaPolicyReq);
-        return tcaPolicyReq;
-    }
-
-    /**
-     * Add appendSignatures to json
-     *
-     * @param refProp
-     * @param service
-     * @param appendToNode
-     * @param tca
-     * @param prop
-     * @throws JsonParseException
-     * @throws JsonMappingException
-     * @throws IOException
-     */
-    public static void appendSignatures(RefProp refProp, String service, ObjectNode appendToNode, Tca tca,
-            ModelProperties prop) throws JsonParseException, JsonMappingException, IOException {
-        // "signatures":{
-        ArrayNode tcaNodes = appendToNode.withArray("signatures");
-        for (TcaItem tcaItem : tca.getTcaItems()) {
-            ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.signature.template", service);
-            tcaNode.put("useCaseName", tcaItem.getTcaName());
-            tcaNode.put("signatureName", tcaItem.getTcaName() + "_" + tcaItem.getTcaUuId());
-            tcaNode.put("signatureUuid", tcaItem.getTcaUuId());
-            prop.setPolicyUniqueId(tcaItem.getPolicyId());
-            tcaNode.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId());
-            tcaNode.put("severity", tcaItem.getSeverity());
-            tcaNode.put("maxInterval", tcaItem.getInterval());
-            tcaNode.put("minMessageViolations", tcaItem.getViolations());
-
-            tcaNodes.add(tcaNode);
-            Iterator<TcaThreshhold> scItr = tcaItem.getTcaThreshholds().iterator();
-            while (scItr.hasNext()) {
-                TcaThreshhold tcaThreshhold = scItr.next();
-                // "thresholds": [
-                ArrayNode thNodes = tcaNode.withArray("thresholds");
-                ObjectNode thNode = thNodes.addObject();
-                thNode.put("fieldPath", tcaThreshhold.getFieldPath());
-                thNode.put("thresholdName", tcaThreshhold.getMetric());
-                thNode.put("thresholdValue", tcaThreshhold.getThreshhold());
-                thNode.put("direction", tcaThreshhold.getOperator());
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
new file mode 100644 (file)
index 0000000..3fbf873
--- /dev/null
@@ -0,0 +1,166 @@
+/*-
+ * ============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.client.req;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml;
+
+import java.util.Map;
+
+import org.onap.clamp.clds.exception.TcaRequestFormatterException;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.model.prop.Tca;
+import org.onap.clamp.clds.model.prop.TcaItem;
+import org.onap.clamp.clds.model.prop.TcaThreshold;
+import org.onap.clamp.clds.model.refprop.RefProp;
+
+/**
+ * Construct the requests for TCA policy and SDC.
+ *
+ */
+public class TcaRequestFormatter {
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(TcaRequestFormatter.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    /**
+     * Hide the default constructor.
+     */
+    private TcaRequestFormatter() {
+
+    }
+
+    /**
+     * Format Tca Policy JSON request.
+     *
+     * @param refProp
+     *            The refProp generally created by Spring, it's an access on the
+     *            clds-references.properties file
+     * @param modelProperties
+     *            The Model Prop created from BPMN JSON and BPMN properties JSON
+     * @return The Json string containing that should be sent to policy
+     */
+    public static String createPolicyJson(RefProp refProp, ModelProperties modelProperties) {
+        try {
+            String service = modelProperties.getGlobal().getService();
+
+            Tca tca = modelProperties.getType(Tca.class);
+            modelProperties.setCurrentModelElementId(tca.getId());
+            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
+            ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("policyName",
+                    modelProperties.getCurrentPolicyScopeAndPolicyName());
+            ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("eventName",
+                    tca.getTcaItem().getEventName());
+
+            ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName")
+                    .get(0));
+
+            addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties);
+
+            String tcaPolicyReq = rootNode.toString();
+            logger.info("tcaPolicyReq=" + tcaPolicyReq);
+            return tcaPolicyReq;
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to create the policy JSON", e);
+        }
+    }
+
+    /**
+     * Add threshold values to the existing policy JSON.
+     *
+     * @param refProp
+     *            The refProp generally created by Spring, it's an access on the
+     *            clds-references.properties file
+     * @param service
+     *            The Service value extracted from Global section of the Bpmn
+     *            Properties JSON
+     * @param appendToNode
+     *            The JSON structure from where the thresholds section must be
+     *            added
+     * @param tcaItem
+     *            The TCA item contained in the Tca object
+     * @param modelProperties
+     *            The Model Properties created from BPMN JSON and BPMN
+     *            properties JSON
+     */
+    private static void addThresholds(RefProp refProp, String service, ObjectNode appendToNode, TcaItem tcaItem,
+            ModelProperties modelProperties) {
+        try {
+            ArrayNode tcaNodes = appendToNode.withArray("thresholds");
+            ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service);
+
+            for (TcaThreshold tcaThreshold : tcaItem.getTcaThresholds()) {
+                tcaNode.put("controlLoopSchema", tcaThreshold.getControlLoopSchema());
+                tcaNode.put("closedLoopControlName", modelProperties.getControlNameAndPolicyUniqueId());
+                tcaNode.put("fieldPath", tcaThreshold.getFieldPath());
+                tcaNode.put("thresholdValue", tcaThreshold.getThreshold());
+                tcaNode.put("direction", tcaThreshold.getOperator());
+                tcaNode.put("closedLoopEventStatus", tcaThreshold.getClosedLoopEventStatus());
+                tcaNodes.add(tcaNode);
+            }
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to create the thresholds JSON", e);
+        }
+    }
+
+    /**
+     * This method updates the blueprint that is received in the UI with the TCA
+     * Json.
+     * 
+     * @param refProp
+     *            * The refProp generally created by Spring, it's an access on
+     *            the clds-references.properties file
+     * @param modelProperties
+     *            The Model Prop created from BPMN JSON and BPMN properties JSON
+     * @param yamlValue
+     *            The yaml string received from the UI
+     * @return The updated YAML as a string
+     */
+    public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties,
+            String yamlValue) {
+        try {
+            String jsonPolicy = createPolicyJson(refProp, modelProperties);
+
+            logger.info("Yaml that will be updated:" + yamlValue);
+            Yaml yaml = new Yaml();
+
+            Map<String, Object> loadedYaml = (Map<String, Object>) yaml.load(yamlValue);
+
+            Map<String, Object> nodeTemplates = (Map<String, Object>) loadedYaml.get("node_templates");
+            Map<String, Object> tcaObject = (Map<String, Object>) nodeTemplates.get("tca_tca");
+            Map<String, Object> propsObject = (Map<String, Object>) tcaObject.get("properties");
+            Map<String, Object> appPreferences = (Map<String, Object>) propsObject.get("app_preferences");
+            appPreferences.put("tca_policy", jsonPolicy);
+
+            String blueprint = yaml.dump(loadedYaml);
+            logger.info("Yaml updated:" + blueprint);
+
+            return blueprint;
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to update the blueprint", e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java b/src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java
new file mode 100644 (file)
index 0000000..055b47f
--- /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.exception;
+
+/**
+ * New exception to capture TcaRequestFormatterException errors.
+ *
+ */
+public class TcaRequestFormatterException extends RuntimeException {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 169875373143236667L;
+
+    /**
+     * This constructor can be used to create a new
+     * TcaRequestFormatterException.
+     * 
+     * @param message
+     *            A string message detailing the problem
+     * @param e
+     *            The exception sent by the code
+     */
+    public TcaRequestFormatterException(String message, Throwable e) {
+        super(message, e);
+    }
+
+    /**
+     * This constructor can be used to create a new
+     * TcaRequestFormatterException. Use this constructor only if you are
+     * creating a new exception stack, not if an exception was already raised by
+     * another code.
+     *
+     * @param message
+     *            A string message detailing the problem
+     */
+    public TcaRequestFormatterException(String message) {
+        super(message);
+    }
+
+}
index b9effc5..7111f1d 100644 (file)
@@ -135,7 +135,7 @@ public class ModelProperties {
                                             .newInstance(this, modelBpmn, modelJson)));
                         } catch (InstantiationException | NoSuchMethodException | IllegalAccessException
                                 | InvocationTargetException e) {
-                            logger.warn("Unable to instantiate a ModelElement, exception follows: " + e);
+                            logger.warn("Unable to instantiate a ModelElement, exception follows: ", e);
                         }
                     });
         }
index f7bbac0..4fd6b59 100644 (file)
@@ -27,25 +27,8 @@ import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
- * Parse Tca json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
+ * Parse ONAP Tca json properties.
  *
  */
 public class Tca extends AbstractModelElement {
@@ -53,7 +36,7 @@ public class Tca extends AbstractModelElement {
     protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(Tca.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private List<TcaItem>             tcaItems;
+    private TcaItem                   tcaItem;
 
     private static final String       TYPE_TCA    = "tca";
 
@@ -69,16 +52,12 @@ public class Tca extends AbstractModelElement {
 
         // process Server_Configurations
         if (modelElementJsonNode != null) {
-            Iterator<JsonNode> itr = modelElementJsonNode.elements();
-            tcaItems = new ArrayList<>();
-            while (itr.hasNext()) {
-                tcaItems.add(new TcaItem(itr.next()));
-            }
+            tcaItem = new TcaItem(modelElementJsonNode.elements().next());
         }
     }
 
-    public List<TcaItem> getTcaItems() {
-        return tcaItems;
+    public TcaItem getTcaItem() {
+        return tcaItem;
     }
 
     public static final String getType() {
index f104b09..79da2db 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
- * Parse Tca Item json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
+ * Parse ONAP Tca Item json properties.
  *
  */
 public class TcaItem {
 
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(TcaItem.class);
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(TcaItem.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private String                  tcaName;
-    private String                  tcaUuId;
-    private String                  nfNamingCode;
-    private String                  tcaEnable;
-    private String                  policyId;
-    private Integer                 interval;
-    private String                  severity;
-    private Integer                 violations;
-    private List<TcaThreshhold>     tcaThreshholds;
+    private String                    tcaName;
+    private String                    tcaUuId;
+    private String                    policyId;
+    private String                    eventName;
+    private List<TcaThreshold>        tcaThresholds;
 
     /**
      * Parse Tca Item given json node
@@ -72,23 +55,14 @@ public class TcaItem {
 
         tcaName = AbstractModelElement.getValueByName(node, "tname");
         tcaUuId = AbstractModelElement.getValueByName(node, "tuuid");
-        nfNamingCode = AbstractModelElement.getValueByName(node, "tnfc");
-        tcaEnable = AbstractModelElement.getValueByName(node, "tcaEnab");
         policyId = AbstractModelElement.getValueByName(node, "tcaPolId");
-        if (AbstractModelElement.getValueByName(node, "tcaInt") != null) {
-            interval = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaInt"));
-        }
-        severity = AbstractModelElement.getValueByName(node, "tcaSev");
-        if (AbstractModelElement.getValueByName(node, "tcaVio") != null) {
-            violations = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaVio"));
-        }
-
+        eventName = AbstractModelElement.getValueByName(node, "eventName");
         // process service Configurations
         JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations");
         Iterator<JsonNode> itr = serviceConfigurationsNode.elements();
-        tcaThreshholds = new ArrayList<TcaThreshhold>();
+        tcaThresholds = new ArrayList<>();
         while (itr.hasNext()) {
-            tcaThreshholds.add(new TcaThreshhold(itr.next()));
+            tcaThresholds.add(new TcaThreshold(itr.next()));
         }
     }
 
@@ -108,22 +82,6 @@ public class TcaItem {
         this.tcaUuId = tcaUuId;
     }
 
-    public String getNfNamingCode() {
-        return nfNamingCode;
-    }
-
-    public void setNfNamingCode(String nfNamingCode) {
-        this.nfNamingCode = nfNamingCode;
-    }
-
-    public String getTcaEnable() {
-        return tcaEnable;
-    }
-
-    public void setTcaEnable(String tcaEnable) {
-        this.tcaEnable = tcaEnable;
-    }
-
     public String getPolicyId() {
         return policyId;
     }
@@ -132,32 +90,16 @@ public class TcaItem {
         this.policyId = policyId;
     }
 
-    public Integer getInterval() {
-        return interval;
-    }
-
-    public void setInterval(Integer interval) {
-        this.interval = interval;
-    }
-
-    public String getSeverity() {
-        return severity;
-    }
-
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    public Integer getViolations() {
-        return violations;
+    public List<TcaThreshold> getTcaThresholds() {
+        return tcaThresholds;
     }
 
-    public void setViolations(Integer violations) {
-        this.violations = violations;
+    public String getEventName() {
+        return eventName;
     }
 
-    public List<TcaThreshhold> getTcaThreshholds() {
-        return tcaThreshholds;
+    public void setEventName(String eventName) {
+        this.eventName = eventName;
     }
 
 }
@@ -28,59 +28,42 @@ import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
 /**
- * Parse Tca Threshhold json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
+ * Parse ONAP Tca Threshold json properties.
  *
  */
-public class TcaThreshhold {
+public class TcaThreshold {
 
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(TcaThreshhold.class);
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(TcaThreshold.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private String                  metric;
-    private String                  fieldPath;
-    private String                  operator;
-    private Integer                 threshhold;
+    private String                    fieldPath;
+    private String                    operator;
+    private Integer                   threshold;
+    private String                    closedLoopEventStatus;
+    private String                    controlLoopSchema;
 
     /**
      * Parse Tca Threshhold given json node
      *
      * @param node
      */
-    public TcaThreshhold(JsonNode node) {
+    public TcaThreshold(JsonNode node) {
 
         if (node.get(0) != null) {
-            metric = node.get(0).asText();
+            fieldPath = node.get(0).asText();
         }
         if (node.get(1) != null) {
             operator = node.get(1).asText();
         }
         if (node.get(2) != null) {
-            threshhold = Integer.valueOf(node.get(2).asText());
+            threshold = Integer.valueOf(node.get(2).asText());
         }
         if (node.get(3) != null) {
-            fieldPath = node.get(3).asText();
+            controlLoopSchema = node.get(3).asText();
+        }
+        if (node.get(4) != null) {
+            closedLoopEventStatus = node.get(4).asText();
         }
-    }
-
-    public String getMetric() {
-        return metric;
-    }
-
-    public void setMetric(String metric) {
-        this.metric = metric;
     }
 
     public String getFieldPath() {
@@ -99,12 +82,27 @@ public class TcaThreshhold {
         this.operator = operator;
     }
 
-    public Integer getThreshhold() {
-        return threshhold;
+    public Integer getThreshold() {
+        return threshold;
     }
 
-    public void setThreshhold(Integer threshhold) {
-        this.threshhold = threshhold;
+    public void setThreshold(Integer threshold) {
+        this.threshold = threshold;
     }
 
+    public String getClosedLoopEventStatus() {
+        return closedLoopEventStatus;
+    }
+
+    public void setClosedLoopEventStatus(String closedLoopEventStatus) {
+        this.closedLoopEventStatus = closedLoopEventStatus;
+    }
+
+    public String getControlLoopSchema() {
+        return controlLoopSchema;
+    }
+
+    public void setControlLoopSchema(String controlLoopSchema) {
+        this.controlLoopSchema = controlLoopSchema;
+    }
 }
index 7305fd9..546909a 100644 (file)
 }
 
 #tcaEditHolder{
-       height:260px; 
        background-color: #f5f5f5; 
-       padding:10px 0px; 
+       padding:10px 10px; 
        margin: 15px 15px 0 0; 
        float: right;
 }
+
+
+#tcaEditHolder #properties_tab>div+div {
+  margin-top: 10px;
+}
+
 .tcaErr{
        display:none; 
        text-align:center; 
        margin-bottom:20px; 
-       color:red;"
+       color:red;
 }
 
 .tcaParentItems {
                <div style="height: 10px"></div>
                <div class="panel panel-default" id="panelHolder">
                        
-                       <div class="panel-heading">
-                               <ul id="nav_Tabs" class="nav nav-tabs">
-                                       <li class><a id="add_one_more" href="#desc_tab"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></li>
-                               </ul>
-                       </div>
-                       
                        <span id="formSpan" style="display:none;">
                        <div class="panel-body">
                        
                                                                <input class="form-control" onkeydown="return false;" type="text" id="tuuid" name="tuuid"></input>
                                                        </div>
                                                </div>
-                                               
-                                               <div class="col-sm-8 form-group" style="display:none;">
-                                                       <label class="col-sm-3"> NF Code </label>
-                                                       <div class="col-sm-9" style="padding:0px;">
-                                                               <input class="form-control" onkeydown="return false;" type="text" id="tnfc" name="tnfc"></input>
-                                                       </div>
-                                               </div>
-                                               
-                                               <div class="col-sm-3 form-group"> 
-                                                       <label class="col-sm-8"> Enable </label>
-                                                       <input class="col-sm-4" type="checkbox" style="height:21px; 
-                                                               width:21px; margin:6px;" checked="checked" id="tcaEnab" name="tcaEnab"></input>
-                                               </div>
                                        </div>
                                        <div class="row">
                                                <div class="col-sm-8 form-group">
                                                                <select name="tcaPol" id="tcaPol" enableFilter="true"></select>
                                                        </div>
                                                </div>
+                                               <div class="col-sm-8 form-group">
+                                                       <label class="col-sm-3">EventName</label>
+                                                       <div class="col-sm-9" style="padding:0px;">
+                                                               <select name="eventName" id="eventName" enableFilter="true"></select>
+                                                       </div>
+                                               </div>            
                                                
                                                <div class="col-sm-8 form-group" style="display:none;">
                                                        <label class="col-sm-3"> Policy ID </label>
                                                                <input class="form-control" onkeydown="return false;" type="text" id="tcaPolId" name="tcaPolId"></input>
                                                        </div>
                                                </div>
-                                               
-                                               <div class="col-sm-3 form-group"> 
-                                                       <label class="col-sm-8">Max Intervals</label>
-                                                       <input class="col-sm-4 form-control" style="width:80%" type="text" maxlength="3" 
-                                                       id="tcaInt" onkeypress="return isNumberKey(event)" name="tcaInt"></input>
-                                               </div>
-                                       </div>
-                                       <div class="row">
-                                               <div class="col-sm-8 form-group">
-                                                       <label class="col-sm-3"> Severity </label>
-                                                       <div class="col-sm-9" style="padding:0px;">
-                                                               <select name="tcaSev" id="tcaSev" enableFilter="false">
-                                                               </select>
-                                                       </div>
-                                               </div>
-                                               
-                                               <div class="col-sm-3 form-group"> 
-                                                       <label class="col-sm-8">Min Violations</label>
-                                                       <input class="col-sm-4 form-control" style="width:80%" type="text" maxlength="3" 
-                                                       id="tcaVio" onkeypress="return isNumberKey(event)" name="tcaVio"></input>
-                                               </div>
+
                                        </div>
                                </form>
                                
                                        
                                        <div id="tcaEditHolder" class="panel panel-default col-sm-6">
                                                <div class="tab-content">
-                                                       <div id="properties_tab" style="padding:10px;" class="form-horizontal">
-                                                               <div style="margin-bottom:20px;">
+                                                       <div id="properties_tab" class="form-vertical">
+                                                               <div>
                                                                        <label class="control-label">Metric</label>
                                                                        <div>
                                                                                <select id="fieldPathM" name="fieldPathM"></select>
                                                                        </div>
                                                                </div>
-                                                               <div style="margin-bottom:20px;">
+                                                               <div>
                                                                        <label class="control-label">Operator</label>
                                                                        <div>
                                                                                <select id="operator" name="operator"></select>
                                                                        </div>
                                                                </div>
-                                                               <div style="margin-bottom:20px;">
+                                                               <div>
                                                                        <label class="control-label">Threshold</label>
                                                                        <div>
                                                                                <input type="text" maxlength="10" class="form-control" name="threshold" 
                                                                                onkeypress="return isNumberKey(event)" id="threshold"></input>
                                                                        </div>
                                                                </div>
+                                                               <div>
+                                                                       <label class="control-label">Control Loop Schema</label>
+                                                                       <div>
+                                                                               <select id="controlLoopSchema" name="controlLoopSchema"></select>
+                                                                       </div>
+                                                               </div>
+                                                               <div>
+                                                                       <label class="control-label">Closed Loop Event Status</label>
+                                                                       <div>
+                                                                               <select id="closedLoopEventStatus" name="closedLoopEventStatus"></select>
+                                                                       </div>
+                                                               </div>                
                                                        </div>
                                                </div>
                                        </div>
                        class="btn btn-primary">Cancel</button>
        </div>
        
-       <script>
+       <script language="javascript">
+    // helper that make jquery objects visibles or invisible
+    // to use instead of show to keep placeholder size correct
+    jQuery.fn.visible = function() {
+        return this.css('visibility', 'visible');
+    };
+    jQuery.fn.invisible = function() {
+        return this.css('visibility', 'hidden');
+    };
+
                var generateTUUID = function(count){
                        var d = new Date().getTime();
                        var tuuid = 'xxxxxxxx-xxxx-txxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function(c){
                                return (c == 'x' ? r : (r*0x3|0*8)).toString(16);
                        });
                        $("#formId" + count + " #tuuid").val(tuuid);
-               }
-               
-               $("#add_one_more").click(function(event) {
-                       event.preventDefault();
-                       if ($("#nav_Tabs li.active").length>0){
-                               var oldCount = $("#nav_Tabs li.active").find("a").attr("id").slice(-1);
-                               if (($('#formId'+oldCount+' #tcaTable .highlight').length > 0 ) &&
-                                               (!($('#formId'+oldCount+' #threshold').val()) || !($('#formId'+oldCount+' #fieldPathM').val())) ) {
-                                       $('#formId'+oldCount+' #tcaError').show();
-                                       return;
-                               } else {
-                                       $('#formId'+oldCount+' .tcaErr').hide();
-                                       if ($('#formId'+oldCount+' #tcaTable .highlight').length > 0){
-                                               $('#formId'+oldCount+' #tcaTable .highlight td').text(
-                                                               $('#formId'+oldCount+' #fieldPathM').val() + ' ' +
-                                                               $('#formId'+oldCount+' #operator').val() + ' ' +
-                                                               $('#formId'+oldCount+' #threshold').val());
-                                       }
-                                       $("#formId"+oldCount+" #tcaTable .highlight").removeClass("highlight")
-                               }
-                       }
-                       var count = add_one_more();     
-                       generateTUUID(count);
-               })
+               };
+
+
+    var propertiesToString = function(formIdNum) {
+      return $('#formId'+formIdNum+' #fieldPathM').find(':selected').text() + ' ' +
+                               $('#formId'+formIdNum+' #operator').val() + ' ' +
+                               $('#formId'+formIdNum+' #threshold').val() + ' ' +
+        $('#formId'+formIdNum+' #controlLoopSchema').val() + ' ' +
+        $('#formId'+formIdNum+' #closedLoopEventStatus').val();
+    };
+
                loadPropertyWindow("tca");
                
                //load dropdown with policy options
                                }
                        }
                }
-               
+
+               var fieldPathMLabel2Value = function(label) {
+                       return Object.keys(defaults_props['tca']['fieldPathM']).find(key => defaults_props['tca']['fieldPathM'][key] == label)
+               }
+               var fieldPathMValue2Label = function(value) {
+                       return defaults_props['tca']['fieldPathM'][value];
+               }
+
                setASDCFields();
-               
-               //load metrics dropdown
-               if (elementMap["global"]){
-                       for (var i = 0; i < (elementMap["global"].length); i++){
-                               if ((elementMap["global"][i]["name"]) == "vf"){
-                                       var vfSel = elementMap["global"][i]["value"];   
-                                       if (vf_Services["shared"]["byVf"][vfSel]["kpi"]){
-                                               $.each((vf_Services["shared"]["byVf"][vfSel]["kpi"]), function(val, text) {
-                                       $('#fieldPathM').append(
-                                           $('<option></option>').val(val).html(text)
-                                       );
-                                   });
-                                       }
-                                       break;
-                               };
-                       };
-               };
-               
+
                var arr = elementMap[lastElementSelected];
-               
+
                if (arr !== undefined) {
                        for (var x in arr){
                                var num = add_one_more();
-                               var setCheck = true;
                                for (var i=0; i< arr[x].length; i++){
-                                       if (arr[x][i].name=='tcaEnab'){
-                                               $("#formId" + num + " #tcaEnab").prop("checked","true");
-                                               setCheck = false;
-                                       }
                                        
                                        if (arr[x][i].hasOwnProperty('serviceConfigurations')){
                                                for (var j=0; j<arr[x][i]["serviceConfigurations"].length; j++){
                                                        $("#formId" + num + " #tcaTable").prepend("<tr><td>"
-                                                                       +arr[x][i]["serviceConfigurations"][j][0]+" "
-                                                                       //+(defaults_props['tca']['operator']).getKey(arr[x][i]["serviceConfigurations"][j][1])+" "
-                                                                       +(Object.keys(defaults_props['tca']['operator']).find(key => defaults_props['tca']['operator'][key] == (arr[x][i]["serviceConfigurations"][j][1])))+ " " 
-                                                                       +arr[x][i]["serviceConfigurations"][j][2]+"</td></tr>");
+                                                                       +fieldPathMValue2Label(arr[x][i]["serviceConfigurations"][j][0])+ " "
+                                                                       +(Object.keys(defaults_props['tca']['operator']).find(key => defaults_props['tca']['operator'][key] == (arr[x][i]["serviceConfigurations"][j][1])))+ " "
+                                                                       +arr[x][i]["serviceConfigurations"][j][2]+" "
+                                                                       +arr[x][i]["serviceConfigurations"][j][3]+" "
+                                                                       +arr[x][i]["serviceConfigurations"][j][4]+"</td></tr>");
                                                }
                                        } else {
                                                $("#formId" + num + " #"+arr[x][i].name).val(arr[x][i].value);
                                        }
                                }
-                               if (setCheck){
-                                       $("#formId" + num + " #tcaEnab").prop("checked",false);
-                               }
                                $('#go_properties_tab'+num).text($('#formId' +num+ ' #tname').val());
-                               $("#formId"+num + " #properties_tab").hide();
+                               $("#formId"+num + " #properties_tab").invisible();
                        }
-               } 
+               } else {
+      var count = add_one_more();
+      generateTUUID(count);
+    }
        
                $("#savePropsBtn").click(function(event) {
-                       var num = $('#nav_Tabs .active a').attr('id').slice(-1);
-                       var tabs = [];
-                       $('#nav_Tabs li:not(:last)').each(function(){
-                               tabs.push($(this).text());
-                       });
-                       var nonunique = uniquet(tabs);
+                       var num = 1
                        if (($('#formId'+num+' #tcaTable .highlight').length > 0 ) &&
                                        (!($('#formId'+num+' #threshold').val()) || !($('#formId'+num+' #fieldPathM').val())) ) {
                                $('#formId'+num+' #tcaError').show();
                                return;
-                       } else if (nonunique){
-                               $('#formId'+num+' #tcaUnique').show();
-                               return;
                        } else {
                                $('#formId'+num+' .tcaErr').hide();
                                if ($('#formId'+num+' #tcaTable .highlight').length > 0){
-                                       $('#formId'+num+' #tcaTable .highlight td').text(
-                                                       $('#formId'+num+' #fieldPathM').val() + ' ' +
-                                                       $('#formId'+num+' #operator').val() + ' ' +
-                                                       $('#formId'+num+' #threshold').val());
+                                       $('#formId'+num+' #tcaTable .highlight td').text(propertiesToString(num));
                                }
                                var saveP = {};
                                $('.formId').each(function(){
                                        var header = $(this).find('.tcaParentItems').serializeArray();
                                        var sconf = {};
                                        var sconfa = [];
-                                       var checkNF = true;
                                        $('#formId' +count+' #tcaTable tr').each(function(){
                                                $('td', this).each(function(){
                                                        var splitTd = $(this).text().split(' ');
+              splitTd[0]=fieldPathMLabel2Value(splitTd[0]);
                                                        splitTd[1]=defaults_props['tca']['operator'][splitTd[1]];
-                                                       var checkByKpi = vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")];
-                                                       if (checkByKpi["fieldPath"]){
-                                                               splitTd.push(Object.keys(vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")]["fieldPath"])[0]);
-                                                       };
-                                                       if ((checkByKpi["nfNamingCode"]) && (checkNF)){
-                                                               $.grep(header, function(e,i){ 
-                                                                       if (e.name == "tnfc"){
-                                                                               header[i]["value"] = (Object.keys(checkByKpi["nfNamingCode"])[0]);
-                                                                       }
-                                                               });
-                                                               checkNF = false;
-                                                       }
                                                        sconfa.push(splitTd);
                                                });
                                                
                        
                        $("#add_one_more").parent().before(' <li class="active"><a id="go_properties_tab'+count+'">New_Set</a><button id="tab_close'+count+'" type="button" class="close tab-close-popup" aria-hidden="true" style="margin-top: -30px;margin-right: 5px">&times;</button></li>');
                        $("#formId"+count).append(form);
-                       $('#formId'+count+ ' #properties_tab').hide();
+                       $('#formId'+count+ ' #properties_tab').invisible();
                        $(".formId").not($("#formId"+count)).css("display","none");
                        addCustListen(count);
                        setMultiSelect();
                                        } else {
                                                $('#formId'+oldCount+' .tcaErr').hide();
                                                if ($('#formId'+oldCount+' #tcaTable .highlight').length > 0){
-                                                       $('#formId'+oldCount+' #tcaTable .highlight td').text(
-                                                                       $('#formId'+oldCount+' #fieldPathM').val() + ' ' +
-                                                                       $('#formId'+oldCount+' #operator').val() + ' ' +
-                                                                       $('#formId'+oldCount+' #threshold').val());
+                                                       $('#formId'+oldCount+' #tcaTable .highlight td').text(propertiesToString(oldCount));
                                                }
                                                $("#formId"+oldCount+" #tcaTable .highlight").removeClass("highlight")
                                        }
                                } else {
                                        $('#formId'+count+' .tcaErr').hide();
                                        if ($('#formId'+count+' #tcaTable .highlight').length > 0){
-                                               $('#formId'+count+' #tcaTable .highlight td').text(
-                                                               $('#formId'+count+' #fieldPathM').val() + ' ' +
-                                                               $('#formId'+count+' #operator').val() + ' ' +
-                                                               $('#formId'+count+' #threshold').val());
+                                               $('#formId'+count+' #tcaTable .highlight td').text(propertiesToString(num));
                                        }
                                        //$('#formId'+count+' #tcaTable .highlight').text();
                                        $(this).addClass('highlight').siblings().removeClass('highlight');
                                        var str = $(this).text().split(' ');
-                                       $('#formId'+count + ' #properties_tab').show();
-                                       if (str.length == 3){
-                                               $('#formId'+count+' #fieldPathM').val(str[0]).multiselect('refresh');
+                                       $('#formId'+count + ' #properties_tab').visible();
+                                       if (str.length == 5){
+                                               $('#formId'+count+' #fieldPathM').val(fieldPathMLabel2Value(str[0])).multiselect('refresh');
                                                $('#formId'+count+' #operator').val(str[1]).multiselect('refresh');
                                                $('#formId'+count+' #threshold').val(str[2]);
+            $('#formId'+count+' #controlLoopSchema').val(str[3]).multiselect('refresh');
+            $('#formId'+count+' #closedLoopEventStatus').val(str[4]).multiselect('refresh');
                                        }
                                        
                                        if ((!(readOnly||readMOnly)) && ($('#formId'+count + ' #deleteThresh').prop('disabled'))) {
                        
                        $('#formId'+count+' #deleteThresh').on('click', function(){
                                $('#formId'+num+' .tcaErr').hide();
-                               $('#formId'+count+ ' #properties_tab').hide();
+                               $('#formId'+count+ ' #properties_tab').invisible();
                                $('#formId'+count+ ' #tcaTable .highlight').remove();
                                $('#formId'+count+ ' #deleteThresh').prop('disabled', true);
                        });
                                } else {
                                        $('#formId'+count+' .tcaErr').hide();
                                        if ($('#formId'+count+' #tcaTable .highlight').length > 0){
-                                               $('#formId'+count+' #tcaTable .highlight td').text(
-                                                               $('#formId'+count+' #fieldPathM').val() + ' ' +
-                                                               $('#formId'+count+' #operator').val() + ' ' +
-                                                               $('#formId'+count+' #threshold').val());
+                                               $('#formId'+count+' #tcaTable .highlight td').text(propertiesToString(count));
                                        }
-                                       $('#formId'+count+ ' #properties_tab').show();
+                                       $('#formId'+count+ ' #properties_tab').visible();
                                        if (('#formId'+count+' #tcaTable .highlight').length > 0 ){
                                                $('#formId'+count+' #tcaTable tr.highlight').removeClass('highlight');
                                        }
                                        $('#formId'+count+' #fieldPathM').prop("selectedIndex", 0).multiselect('refresh');
                                        $('#formId'+count+' #operator').prop("selectedIndex", 0).multiselect('refresh');
                                        $('#formId'+count+' #threshold').val("");
-                                       
+                                       $('#formId'+count+' #controlLoopSchema').prop("selectedIndex", 0).multiselect('refresh');
+                                       $('#formId'+count+' #closedLoopEventStatus').prop("selectedIndex", 0).multiselect('refresh');
+
                                        if ($('#formId'+count + ' #deleteThresh').prop('disabled')) {
                                                $('#formId'+count + ' #deleteThresh').prop('disabled', false);
                                        }
index d404e4e..00d2f61 100644 (file)
@@ -38,17 +38,18 @@ sdc.decode.service_ids={}
 #\r
 # General Policy request properties\r
 #\r
-policy.ecomp.name=DCAE\r
+policy.onap.name=DCAE\r
 policy.pdp.group=default\r
 policy.ms.type=MicroService\r
 policy.ms.policyNamePrefix=Config_MS_\r
 policy.op.type=BRMS_Param\r
 policy.op.policyNamePrefix=Config_BRMS_Param_\r
-#\r
+\r
 # TCA MicroService Policy request build properties\r
 #\r
-tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}}\r
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}\r
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}\r
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}\r
+\r
 #\r
 #\r
 # Operational Policy request build properties\r
@@ -73,9 +74,9 @@ op.eNodeB.limit=2
 op.eNodeB.period=10s\r
 #\r
 # Sdc service properties\r
-sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/
-sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080
-sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services
+sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/\r
+sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080\r
+sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services\r
 sdc.serviceUsername=test\r
 sdc.servicePassword=123456\r
 sdc.artifactLabel=blueprintclampcockpit\r
@@ -94,7 +95,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann
 action.test.override=false\r
 # if action.insert.test.event is true, then insert event even if the action is set to test\r
 action.insert.test.event=false\r
-CLDS_SERVICE_CACHE_MAX_SECONDS=5\r
+CLDS_SERVICE_CACHE_MAX_SECONDS=300\r
 \r
 #DCAE Inventory Url Properties\r
 DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080
index ac4f0cf..d21afbc 100644 (file)
@@ -21,4 +21,4 @@
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ###
 
-globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","tcaSev":{"NORMAL":"NORMAL","CRITICAL":"CRITICAL","MAJOR":"MAJOR","MINOR":"MINOR","WARNING":"WARNING"},"fieldPath":{"FIELDPATH_test_1":"FIELDPATH_test_1","FIELDPATH_test_2":"FIELDPATH_test_2"},"operator":{">":"GREATER","=":"EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}}
\ No newline at end of file
+globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchema":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}}
@@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ActiveProfiles;
 
 @ActiveProfiles("clamp-default")
-public abstract class AbstractIT {
+public abstract class AbstractItCase {
 
     @Autowired
     protected RefProp      refProp;
index d458443..734b605 100644 (file)
@@ -31,9 +31,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.junit.Test;
+import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.sdc.Resource;
 import org.onap.policy.sdc.ResourceType;
-import org.onap.policy.controlloop.policy.PolicyResult;
 
 public class OperationalPolicyReqTest {
 
@@ -49,7 +49,7 @@ public class OperationalPolicyReqTest {
         stringList.add("test2");
         stringList.add("test3");
         stringList.add("test4");
-        Resource resources[] = (Resource[]) method.invoke(null, stringList, ResourceType.VF);
+        Resource[] resources = (Resource[]) method.invoke(null, stringList, ResourceType.VF);
 
         assertTrue(resources.length == 4);
         assertTrue("test1".equals(resources[0].getResourceName()));
@@ -69,7 +69,7 @@ public class OperationalPolicyReqTest {
         stringList.add("SUCCESS");
         stringList.add("FAILURE_GUARD");
         stringList.add("FAILURE_TIMEOUT");
-        PolicyResult policyResult[] = (PolicyResult[]) method.invoke(null, stringList);
+        PolicyResult[] policyResult = (PolicyResult[]) method.invoke(null, stringList);
 
         assertTrue(policyResult.length == 4);
         assertTrue(policyResult[0].equals(PolicyResult.FAILURE));
index a283f43..497abe0 100644 (file)
@@ -41,7 +41,7 @@ import org.onap.clamp.clds.model.prop.ModelProperties;
 public class SdcReqTest {
 
     String baseUrl              = "AYBABTU";
-    String serviceInvariantUUID = "serviceInvariantUUID";
+    String serviceInvariantUuid = "serviceInvariantUUID";
 
     @Test
     public void getSdcReqUrlsListNoGlobalPropTest() {
@@ -52,7 +52,7 @@ public class SdcReqTest {
         List<CldsSdcResource> cldsSdcResources = new ArrayList<>();
         cldsSdcResources.add(cldsSdcResource);
         List<String> resourceVf = new ArrayList<>();
-        resourceVf.add(serviceInvariantUUID);
+        resourceVf.add(serviceInvariantUuid);
 
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
@@ -60,7 +60,7 @@ public class SdcReqTest {
         when(prop.getGlobal()).thenReturn(global);
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
-        when(global.getService()).thenReturn(serviceInvariantUUID);
+        when(global.getService()).thenReturn(serviceInvariantUuid);
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         CldsSdcServiceDetail cldsSdcServiceDetail = mock(CldsSdcServiceDetail.class);
@@ -75,7 +75,7 @@ public class SdcReqTest {
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         when(global.getResourceVf()).thenReturn(resourceVf);
-        when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID);
+        when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUuid);
         when(cldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name");
         List<String> expected = new ArrayList<>();
         expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts");
@@ -32,7 +32,7 @@ import javax.ws.rs.NotFoundException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.CldsModel;
@@ -50,7 +50,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class CldsDaoIT extends AbstractIT {
+public class CldsDaoItCase extends AbstractItCase {
 
     @Autowired
     public CldsDao cldsDao;
@@ -59,6 +59,12 @@ public class CldsDaoIT extends AbstractIT {
     private String imageText;
     private String bpmnPropText;
 
+    /**
+     * Setup the variable before the tests execution.
+     * 
+     * @throws IOException
+     *             In case of issues when opening the files
+     */
     @Before
     public void setupBefore() throws IOException {
         bpmnText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-template.xml");
@@ -36,7 +36,7 @@ import javax.ws.rs.core.SecurityContext;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.model.CldsInfo;
 import org.onap.clamp.clds.service.CldsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,7 +51,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 @RunWith(SpringJUnit4ClassRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class CldsServiceIT extends AbstractIT {
+public class CldsServiceItCase extends AbstractItCase {
 
     @Autowired
     CldsService cldsService;
@@ -59,10 +59,10 @@ public class CldsServiceIT extends AbstractIT {
     @Test
     public void testCldsInfoNotAuthorized() throws Exception {
         SecurityContext securityContext = Mockito.mock(SecurityContext.class);
-        Principal p = Mockito.mock(Principal.class);
-        Mockito.when(p.getName()).thenReturn("admin");
+        Principal principal = Mockito.mock(Principal.class);
+        Mockito.when(principal.getName()).thenReturn("admin");
 
-        Mockito.when(securityContext.getUserPrincipal()).thenReturn(p);
+        Mockito.when(securityContext.getUserPrincipal()).thenReturn(principal);
         cldsService.setSecurityContext(securityContext);
 
         CldsInfo cldsInfo = cldsService.getCldsInfo();
@@ -38,7 +38,7 @@ import javax.net.ssl.X509TrustManager;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -55,7 +55,7 @@ import org.springframework.web.client.RestTemplate;
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
 @TestPropertySource(locations = "classpath:https/https-test.properties")
-public class HttpsIT extends AbstractIT {
+public class HttpsItCase extends AbstractItCase {
 
     @Value("${server.port}")
     private String httpsPort;
@@ -63,6 +63,9 @@ public class HttpsIT extends AbstractIT {
     @Value("${server.http-to-https-redirection.port}")
     private String httpPort;
 
+    /**
+     * Setup the variable before tests execution.
+     */
     @BeforeClass
     public static void setUp() {
 
@@ -35,7 +35,7 @@ import java.util.Map;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.OperationalPolicyReq;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.prop.ModelProperties;
@@ -51,7 +51,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class OperationPolicyReqIT extends AbstractIT {
+public class OperationPolicyReqItCase extends AbstractItCase {
 
     @Test
     public void formatAttributesTest() throws IOException, BuilderException {
@@ -33,9 +33,9 @@ import java.util.concurrent.TimeUnit;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.OperationalPolicyReq;
-import org.onap.clamp.clds.client.req.TcaMPolicyReq;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.prop.Policy;
@@ -43,7 +43,6 @@ import org.onap.clamp.clds.model.prop.PolicyChain;
 import org.onap.clamp.clds.model.prop.Tca;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.onap.policy.api.AttributeType;
-import org.skyscreamer.jsonassert.JSONAssert;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -55,7 +54,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class PolicyClientIT extends AbstractIT {
+public class PolicyClientItCase extends AbstractItCase {
     String modelProp;
     String modelBpmnProp;
     String modelName;
@@ -81,7 +80,7 @@ public class PolicyClientIT extends AbstractIT {
 
                 Map<AttributeType, Map<String, String>> attributes = OperationalPolicyReq.formatAttributes(refProp,
                         prop, policy.getId(), policyChain);
-                String responseMessage = policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
+                policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
             }
         }
     }
@@ -91,12 +90,10 @@ public class PolicyClientIT extends AbstractIT {
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
             String tcaPolicyRequestUuid = UUID.randomUUID().toString();
-            String policyJson = TcaMPolicyReq.formatTca(refProp, prop);
-            String correctValue = ResourceFileUtil.getResourceAsString("expected/tca.json");
-            JSONAssert.assertEquals(policyJson, correctValue, true);
-            String responseMessage = "";
+            String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
+
             try {
-                responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
+                policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
             } catch (Exception e) {
                 assertTrue(e.getMessage().contains("Exception while communicating with Policy"));
             }
@@ -111,7 +108,7 @@ public class PolicyClientIT extends AbstractIT {
             prop.setCurrentModelElementId(policy.getId());
             for (PolicyChain policyChain : policy.getPolicyChains()) {
                 prop.setPolicyUniqueId(policyChain.getPolicyId());
-                String responseMessage = policyClient.deleteBrms(prop);
+                policyClient.deleteBrms(prop);
             }
         }
     }
@@ -122,9 +119,9 @@ public class PolicyClientIT extends AbstractIT {
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
             prop.setCurrentModelElementId(tca.getId());
-            String responseMessage = "";
+
             try {
-                responseMessage = policyClient.deleteMicrosService(prop);
+                policyClient.deleteMicrosService(prop);
             } catch (Exception e) {
                 assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
             }
diff --git a/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java b/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java
deleted file mode 100644 (file)
index cd626dd..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-/*-
- * ============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 com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import java.io.IOException;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsSdcServiceDetail;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test SDC API - stand alone (except for some config). Replicates
- * getSdcServices and getSdcServicesByUUID in the CldsService Adds test of
- * putting putting an artifact to VF. TODO Also needs update and perhaps delete
- * tests.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class PropJsonBuilderIT extends AbstractIT {
-
-    private String       globalPropsPartial;
-    private ObjectMapper mapper;
-
-    /**
-     * Initial test setup.
-     */
-    @Before
-    public void setUp() throws IOException {
-        String url = refProp.getStringValue("sdc.serviceUrl");
-        String basicAuth = SdcReq.getSdcBasicAuth(refProp);
-        System.out.println("value of string and basicAuth:" + url + basicAuth);
-        // cldsservicedetail.set
-        globalPropsPartial = refProp.getStringValue("globalPropsPartialTest");
-        mapper = new ObjectMapper();
-    }
-
-    /**
-     * List services from SDC. List meta data for a particular service from SDC.
-     * Test uploading artifact to a VF in SDC.
-     */
-    @Test
-    public void testSdc() throws Exception {
-        // String createEmptySharedObject = createEmptySharedObject();
-        // System.out.println("value of emptySharedObject:" +
-        // createEmptySharedObject);
-        sampleJsonObject();
-        System.out.println(createTestEmptySharedObject());
-    }
-
-    private void sampleJsonObject() throws JsonProcessingException {
-
-        /**
-         * Create three JSON Objects objectNode1, objectNode2, objectNode3. Add
-         * all these three objects in the array
-         */
-        ObjectNode objectNode1 = mapper.createObjectNode();
-        objectNode1.put("bookName", "Java");
-        objectNode1.put("price", "100");
-
-        ObjectNode objectNode2 = mapper.createObjectNode();
-        objectNode2.put("bookName", "Spring");
-        objectNode2.put("price", "200");
-
-        ObjectNode objectNode3 = mapper.createObjectNode();
-        objectNode3.put("bookName", "Liferay");
-        objectNode3.put("price", "500");
-
-        /**
-         * Array contains JSON Objects.
-         */
-        ArrayNode arrayNode = mapper.createArrayNode();
-        arrayNode.add(objectNode1);
-        arrayNode.add(objectNode2);
-        arrayNode.add(objectNode3);
-
-        /**
-         * We can directly write the JSON in the console. But it wont be pretty
-         * JSON String
-         */
-        System.out.println(arrayNode.toString());
-
-        /**
-         * To make the JSON String pretty use the below code.
-         */
-        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode));
-    }
-
-    private String createEmptySharedObject() throws JsonProcessingException {
-
-        /**
-         * Empty Object initialization. "": { "vf": { "": "" }, "location": {
-         * "": "" }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        ObjectNode locationObjectNode = mapper.createObjectNode();
-        locationObjectNode.putPOJO("location", emptyObjectNode);
-        ObjectNode alarmConditionObjectNode = mapper.createObjectNode();
-        alarmConditionObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ArrayNode samArrayNode = mapper.createArrayNode();
-        samArrayNode.add(vfObjectNode);
-        samArrayNode.add(locationObjectNode);
-        samArrayNode.add(alarmConditionObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", samArrayNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        ArrayNode vfArrayNode = mapper.createArrayNode();
-        vfArrayNode.add(emptyObjectNode);
-        vfArrayNode.add(dcaeClampDemo3Node);
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        vfObjectNode2.putPOJO("vf", vfArrayNode);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        sandiegoLocationNode.put("SNDGCA64", "San Diego SAN3");
-        ObjectNode alpharettaNode = mapper.createObjectNode();
-        alpharettaNode.put("ALPRGAED", "Alpharetta PDK1");
-        ArrayNode locationArrayNode = mapper.createArrayNode();
-        locationArrayNode.add(emptyObjectNode);
-        locationArrayNode.add(sandiegoLocationNode);
-        locationArrayNode.add(alpharettaNode);
-        ObjectNode locationObjectNode2 = mapper.createObjectNode();
-        locationObjectNode2.putPOJO("location", locationArrayNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        ObjectNode alamrCondition1 = mapper.createObjectNode();
-        alamrCondition1.put("A+Fallback+Operation+will+soon+be+started", "A Fallback Operation will soon be started");
-        ObjectNode alarmConditon2 = mapper.createObjectNode();
-        alarmConditon2.put("BRM%2C+Scheduled+Backup+Failed", "BRM, Scheduled Backup Failed");
-        ArrayNode alarmArrayNode = mapper.createArrayNode();
-        alarmArrayNode.add(emptyObjectNode);
-        alarmArrayNode.add(alamrCondition1);
-        alarmArrayNode.add(alarmConditon2);
-        ObjectNode alarmConditionObjectNode2 = mapper.createObjectNode();
-        alarmConditionObjectNode2.putPOJO("alarmCondition", alarmArrayNode);
-
-        ArrayNode byServiceIdArrayNode = mapper.createArrayNode();
-        byServiceIdArrayNode.add(vfObjectNode2);
-        byServiceIdArrayNode.add(locationObjectNode2);
-        byServiceIdArrayNode.add(alarmConditionObjectNode2);
-
-        ObjectNode byServiceIdNode = mapper.createObjectNode();
-        byServiceIdNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", byServiceIdArrayNode);
-
-        ArrayNode byServiceBasicArrayNode = mapper.createArrayNode();
-        byServiceBasicArrayNode.add(emptyServiceObjectNode);
-        byServiceBasicArrayNode.add(byServiceIdNode);
-
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-
-        byServiceBasicObjetNode.putPOJO("byService", byServiceBasicArrayNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode vfcIdObjectNode = mapper.createObjectNode();
-        vfcIdObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", vfCObjectNode);
-        ArrayNode emptyvfcArrayNode = mapper.createArrayNode();
-        emptyvfcArrayNode.add(vfCObjectNode);
-        emptyvfcArrayNode.add(vfcIdObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", emptyvfcArrayNode);
-
-        ObjectNode byVfCBasicNode = mapper.createObjectNode();
-        byVfCBasicNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ArrayNode finalSharedArrayObject = mapper.createArrayNode();
-
-        finalSharedArrayObject.add(byServiceBasicObjetNode);
-        finalSharedArrayObject.add(byVfCBasicNode);
-
-        ObjectNode finalSharedObjectNode = mapper.createObjectNode();
-        finalSharedObjectNode.putPOJO("shared", finalSharedArrayObject);
-
-        System.out.println("value :" + finalSharedObjectNode.toString());
-        String testFinal = finalSharedObjectNode.toString();
-        testFinal = testFinal.replaceFirst("\\{", ",");
-        return globalPropsPartial + testFinal;
-    }
-
-    private String createTestEmptySharedObject() throws IOException {
-
-        /**
-         * Object initialization. "": { "vf": { "": "" }, "location": { "": ""
-         * }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        vfObjectNode.putPOJO("location", emptyObjectNode);
-        vfObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", vfObjectNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("", "");
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        // ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        // sandiegoLocationNode.put("SNDGCA64","San Diego SAN3");
-        // sandiegoLocationNode.put("ALPRGAED","Alpharetta PDK1");
-        String locationStringValue = refProp.getStringValue("ui.location.default");
-        ObjectNode locationJsonNode = (ObjectNode) mapper.readValue(locationStringValue, JsonNode.class);
-        vfObjectNode2.putPOJO("location", locationJsonNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        // ObjectNode alamrCondition1 = mapper.createObjectNode();
-        // alamrCondition1.put("A+Fallback+Operation+will+soon+be+started","A
-        // Fallback Operation will soon be started");
-        // alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed","BRM, Scheduled
-        // Backup Failed");
-        String alarmStringValue = refProp.getStringValue("ui.alarm.default");
-        ObjectNode alarmStringJsonNode = (ObjectNode) mapper.readValue(alarmStringValue, JsonNode.class);
-        vfObjectNode2.putPOJO("alarmCondition", alarmStringJsonNode);
-        emptyServiceObjectNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", vfObjectNode2);
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-        byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode subVfCObjectNode = mapper.createObjectNode();
-        subVfCObjectNode.putPOJO("vfc", emptyObjectNode);
-        vfCObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", subVfCObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", vfCObjectNode);
-        byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ObjectNode readTree = (ObjectNode) mapper.readValue(globalPropsPartial, JsonNode.class);
-        readTree.putPOJO("shared", byServiceBasicObjetNode);
-        System.out.println("valuie of objNode:" + readTree);
-        return readTree.toString();
-    }
-
-    private String createCldsSharedObject(CldsSdcServiceDetail CldsSdcServiceDetail) throws IOException {
-        /**
-         * Object initialization. "": { "vf": { "": "" }, "location": { "": ""
-         * }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        vfObjectNode.putPOJO("location", emptyObjectNode);
-        vfObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", vfObjectNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("", "");
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        sandiegoLocationNode.put("SNDGCA64", "San Diego SAN3");
-        sandiegoLocationNode.put("ALPRGAED", "Alpharetta PDK1");
-        vfObjectNode2.putPOJO("location", sandiegoLocationNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        ObjectNode alamrCondition1 = mapper.createObjectNode();
-        alamrCondition1.put("A+Fallback+Operation+will+soon+be+started", "A Fallback Operation will soon be started");
-        alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed", "BRM, Scheduled Backup Failed");
-        vfObjectNode2.putPOJO("alarmCondition", alamrCondition1);
-        emptyServiceObjectNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", vfObjectNode2);
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-        byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode subVfCObjectNode = mapper.createObjectNode();
-        subVfCObjectNode.putPOJO("vfc", emptyObjectNode);
-        vfCObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", subVfCObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", vfCObjectNode);
-        byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ObjectNode readTree = (ObjectNode) mapper.readValue(globalPropsPartial, JsonNode.class);
-
-        readTree.putPOJO("shared", byServiceBasicObjetNode);
-        System.out.println("valuie of objNode:" + readTree);
-        return readTree.toString();
-    }
-}
@@ -30,7 +30,7 @@ import java.io.IOException;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -41,7 +41,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class RefPropIT extends AbstractIT {
+public class RefPropItCase extends AbstractItCase {
 
     /**
      * Test getting prop value as a JSON Node / template.
@@ -32,7 +32,7 @@ import org.apache.commons.io.IOUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.SdcCatalogServices;
 import org.onap.clamp.clds.model.CldsAlarmCondition;
 import org.onap.clamp.clds.model.CldsSdcResource;
@@ -50,7 +50,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class SdcCatalogServicesIT extends AbstractIT {
+public class SdcCatalogServicesItCase extends AbstractItCase {
     @Autowired
     private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices();
 
@@ -205,8 +205,8 @@ public class SdcCatalogServicesIT extends AbstractIT {
         SdcCatalogServices spy = Mockito.spy(sdcCatalogWired);
 
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"))
-                .when(spy).getSdcServicesInformation(null);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"),
+                "UTF-8")).when(spy).getSdcServicesInformation(null);
         // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it
         // should not exist, returning empty string
         String resUuidVcts4Null = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b");
@@ -232,82 +232,82 @@ public class SdcCatalogServicesIT extends AbstractIT {
         SdcCatalogServices spy = Mockito.spy(sdcCatalogWired);
 
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"))
-                .when(spy).getSdcServicesInformation(null);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"),
+                "UTF-8")).when(spy).getSdcServicesInformation(null);
 
         // This invariant uuid is the one from vcts4 v1.1
         String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl")
                 + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false);
 
         String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false);
 
         String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl, false);
 
         String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl, false);
 
         String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false);
 
         String csvAlarmsDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl, false);
 
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl, true);
 
         String csvAlarmsDetailUrl2 = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl2, true);
 
         String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl, false);
 
-        String cVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url")
+        String vfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/a0475018-1e7e-4ddd-8bee-33cbf958c2e6/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(cVfcResourcesDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourcesDetailUrl, false);
 
         String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl, false);
 
         String allVfAlarms = refProp.getStringValue("sdc.catalog.url")
                 + "resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfAlarms, true);
 
         String vfcResourceExample = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourceExample, false);
 
         CldsServiceData cldsServiceData = spy
diff --git a/src/test/java/org/onap/clamp/clds/it/SdcIT.java b/src/test/java/org/onap/clamp/clds/it/SdcIT.java
deleted file mode 100644 (file)
index 46ac408..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * ============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 org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.onap.clamp.clds.AbstractIT;
-import org.onap.clamp.clds.client.SdcCatalogServices;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsEvent;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.refprop.RefProp;
-import org.onap.clamp.clds.util.ResourceFileUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test SDC Blueprint formater.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest
-@TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class SdcIT extends AbstractIT {
-    @Autowired
-    private RefProp refProp;
-
-    @Autowired
-    private SdcCatalogServices sdcCatalogServices;
-
-    @BeforeClass
-    public static void oneTimeSetUp() {
-        System.setProperty("AJSC_CONF_HOME", System.getProperty("user.dir") + "/src/test/resources/");
-    }
-
-    @Test
-    public void testTcaBlueprint() throws Exception {
-        String modelProp = ResourceFileUtil.getResourceAsString("example/modelPropForPolicy.json");
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnPropForPolicy.json");
-        String modelName = "example-model06";
-        String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756";
-        String docText = ResourceFileUtil.getResourceAsString("example/templatePropForTca.json");
-        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT,
-                true, modelBpmnProp, modelProp);
-        String blueprint = SdcReq.formatBlueprint(refProp, prop, docText);
-        System.out.println("blueprint=" + blueprint);
-        //assertEquals(blueprint, "");
-    }
-}
diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java
new file mode 100644 (file)
index 0000000..a32743a
--- /dev/null
@@ -0,0 +1,89 @@
+/*-
+ * ============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.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.AbstractItCase;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
+import org.onap.clamp.clds.model.CldsEvent;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test Onap TcaRequestFormatter features.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:application-no-camunda.properties")
+public class TcaRequestFormatterItCase extends AbstractItCase {
+
+    String modelProp;
+    String modelBpmn;
+    String modelName;
+    String controlName;
+    String yamlInput;
+
+    /**
+     * Initialize Test.
+     */
+    @Before
+    public void setUp() throws IOException {
+        modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json");
+        modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json");
+        yamlInput = ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-input.yaml");
+        modelName = "example-model01";
+        controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
+    }
+
+    @Test
+    public void testCreatePolicyJson() throws IOException {
+        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn,
+                modelProp);
+        String result = TcaRequestFormatter.createPolicyJson(refProp, prop);
+        assertNotNull(result);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/tca-policy-expected.json"),
+                result, true);
+    }
+
+    @Test
+    public void testUpdatedBlueprintWithConfiguration() throws IOException {
+        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn,
+                modelProp);
+        String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlInput);
+
+        assertNotNull(result);
+        assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), result);
+    }
+}
index 60056d4..45f39a4 100644 (file)
 package org.onap.clamp.clds.model.prop;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -46,10 +45,11 @@ public class ModelPropertiesTest {
     }
 
     @Test
-    public void testHolmes() throws IOException {
+    public void testTcaModelDecoding() throws IOException {
 
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnProp.json");
-        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmn.json");
+        String modelBpmnProp = ResourceFileUtil
+                .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json");
+        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json");
 
         ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn,
                 modelBpmnProp);
@@ -66,11 +66,52 @@ public class ModelPropertiesTest {
         assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions());
 
         Tca tca = prop.getType(Tca.class);
+        assertNotNull(tca);
         assertTrue(tca.isFound());
-        assertEquals(1, tca.getTcaItems().size());
-        assertEquals(0, tca.getTcaItems().get(0).getTcaThreshholds().size());
+        assertEquals("vFirewallBroadcastPackets", tca.getTcaItem().getEventName());
+        assertEquals("policy1", tca.getTcaItem().getPolicyId());
+        assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId());
+        assertEquals(2, tca.getTcaItem().getTcaThresholds().size());
+
+        assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus());
+        assertEquals("VM", tca.getTcaItem().getTcaThresholds().get(0).getControlLoopSchema());
+        assertEquals(
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                tca.getTcaItem().getTcaThresholds().get(0).getFieldPath());
+        assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator());
+        assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold());
+
+        assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus());
+        assertEquals("VNF", tca.getTcaItem().getTcaThresholds().get(1).getControlLoopSchema());
+        assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+                tca.getTcaItem().getTcaThresholds().get(1).getFieldPath());
+        assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator());
+        assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold());
+    }
+
+    @Test
+    public void testHolmesModelDecoding() 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", "example-control-name", null, true, modelBpmn,
+                modelBpmnProp);
+
+        Policy policy = prop.getType(Policy.class);
+        assertTrue(policy.isFound());
+        assertEquals(1, policy.getPolicyChains().size());
+        assertEquals("0", policy.getPolicyChains().get(0).getPolicyId());
+        assertEquals(1, policy.getPolicyChains().get(0).getPolicyItems().size());
+        assertEquals("resourceid", policy.getPolicyChains().get(0).getPolicyItems().get(0).getTargetResourceId());
+        assertEquals(180, policy.getPolicyChains().get(0).getPolicyItems().get(0).getRetryTimeLimit());
+        assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries());
+        assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy());
+        assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions());
 
         Holmes holmes = prop.getType(Holmes.class);
+        assertNotNull(holmes);
         assertTrue(holmes.isFound());
         assertEquals("policy1", holmes.getOperationalPolicy());
         assertEquals("blabla", holmes.getCorrelationLogic());
@@ -80,7 +121,7 @@ public class ModelPropertiesTest {
     public void testGetVf() throws IOException {
         CldsModel cldsModel = new CldsModel();
         cldsModel.setPropText(
-                ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnPropWithGlobal.json"));
+                ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"));
         assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel));
     }
 }
\ No newline at end of file
index f2ec43b..405b3ed 100644 (file)
@@ -28,9 +28,9 @@
 #\r
 # TCA MicroService Policy request build properties\r
 #\r
-tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}}\r
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}\r
-\r
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}\r
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}\r
+#\r
 #\r
 # DCAE request build properties\r
 #\r
@@ -45,7 +45,7 @@ sdc.decode.service_ids={}
 #\r
 # General Policy request properties\r
 #\r
-policy.ecomp.name=DCAE\r
+policy.onap.name=DCAE\r
 policy.pdp.group=default\r
 policy.ms.type=MicroService\r
 policy.ms.policyNamePrefix=Config_MS_\r
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmn.json b/src/test/resources/example/model-properties/holmes/modelBpmn.json
new file mode 100644 (file)
index 0000000..db8e54d
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "vesCollector": [
+    {
+      "id": "VesCollector_0orydnh",
+      "from": "StartEvent_1"
+    }
+  ],
+   "holmes": [
+    {
+      "id": "Holmes_0i4n2mm",
+      "from": "VesCollector_0orydnh"
+    }
+  ],
+  "policy": [
+    {
+      "id": "Policy_0honxgv",
+      "from": "Holmes_0i4n2mm"
+    }
+  ]
+}
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
new file mode 100644 (file)
index 0000000..14b3a8c
--- /dev/null
@@ -0,0 +1,116 @@
+{
+  "Holmes_0i4n2mm": [
+    {
+      "name": "correlationalLogic",
+      "value": "blabla"
+    },
+    {
+      "name": "operationalPolicy",
+      "value": "policy1"
+    }
+  ],
+  "Policy_0honxgv": {
+    "policy1": [
+      {
+        "name": "pname",
+        "value": "policy1"
+      },
+      {
+        "name": "pid",
+        "value": "0"
+      },
+      {
+        "name": "timeout",
+        "value": "345"
+      },
+      {
+        "policyConfigurations": [
+          [
+            {
+              "name": "maxRetries",
+              "value": [
+                "3"
+              ]
+            },
+            {
+              "name": "retryTimeLimit",
+              "value": [
+                "180"
+              ]
+            },
+            {
+              "name": "_id",
+              "value": [
+                "dGLuNqg"
+              ]
+            },
+            {
+              "name": "parentPolicy",
+              "value": [
+                ""
+              ]
+            },
+            {
+              "name": "targetResourceId",
+              "value": [
+                "resourceid"
+              ]
+            }
+          ]
+        ]
+      }
+    ]
+  },
+  "global": [
+    {
+      "name": "actionSet",
+      "value": [
+        "vnfRecipe"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED"
+      ]
+    },
+    {
+      "name": "vf",
+      "value": [
+        "f5213e3a-9191-4362-93b5-b67f8d770e44"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED",
+        "LSLEILAA",
+        "MDTWNJC1"
+      ]
+    }
+  ],
+  "shared": {
+    "byService": {
+      "": {
+        "vf": {
+          "": ""
+        },
+        "location": {
+          "": ""
+        },
+        "alarmCondition": {
+          "": ""
+        }
+      }
+    },
+    "byVf": {
+      "": {
+        "vfc": {
+          "": ""
+        }
+      }
+    }
+  }
+}
diff --git a/src/test/resources/example/model-properties/tca/modelBpmn.json b/src/test/resources/example/model-properties/tca/modelBpmn.json
new file mode 100644 (file)
index 0000000..7358f9a
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "vesCollector": [
+    {
+      "id": "VesCollector_0orydnh",
+      "from": "StartEvent_1"
+    }
+  ],
+   "tca": [
+    {
+      "id": "TCA_1jy9to4",
+      "from": "VesCollector_0orydnh"
+    }
+  ],
+  "policy": [
+    {
+      "id": "Policy_0honxgv",
+      "from": "TCA_1jy9to4"
+    }
+  ]
+}
diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
new file mode 100644 (file)
index 0000000..0bfa78c
--- /dev/null
@@ -0,0 +1,150 @@
+{
+  "TCA_1jy9to4": {
+    "group1": [
+      {
+        "name": "tname",
+        "value": "group1"
+      },
+      {
+        "name": "tuuid",
+        "value": "f734f031-10aa-t8fb-330f-04dde2886325"
+      },
+      {
+        "name": "tcaPolId",
+        "value": "policy1"
+      },
+      {
+        "name": "eventName",
+        "value": "vFirewallBroadcastPackets"
+      },
+      {
+        "serviceConfigurations": [
+          [
+            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+            "LESS_OR_EQUAL",
+            "123",
+            "VM",
+            "ABATED"
+          ],
+          [
+            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "GREATER_OR_EQUAL",
+            "123",
+            "VNF",
+            "ONSET"
+          ]
+        ]
+      }
+    ]
+  },
+  "Policy_0honxgv": {
+    "policy1": [
+      {
+        "name": "pname",
+        "value": "policy1"
+      },
+      {
+        "name": "pid",
+        "value": "0"
+      },
+      {
+        "name": "timeout",
+        "value": "345"
+      },
+      {
+        "policyConfigurations": [
+          [
+            {
+              "name": "maxRetries",
+              "value": [
+                "3"
+              ]
+            },
+            {
+              "name": "retryTimeLimit",
+              "value": [
+                "180"
+              ]
+            },
+            {
+              "name": "_id",
+              "value": [
+                "dGLuNqg"
+              ]
+            },
+            {
+              "name": "parentPolicy",
+              "value": [
+                ""
+              ]
+            },
+            {
+              "name": "targetResourceId",
+              "value": [
+                "resourceid"
+              ]
+            }
+          ]
+        ]
+      }
+    ]
+  },
+  "global": [
+    {
+      "name": "actionSet",
+      "value": [
+        "vnfRecipe"
+      ]
+    },
+    {
+      "name": "service",
+      "value": [
+        "serviceUUID"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED"
+      ]
+    },
+    {
+      "name": "vf",
+      "value": [
+        "f5213e3a-9191-4362-93b5-b67f8d770e44"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED",
+        "LSLEILAA",
+        "MDTWNJC1"
+      ]
+    }
+  ],
+  "shared": {
+    "byService": {
+      "": {
+        "vf": {
+          "": ""
+        },
+        "location": {
+          "": ""
+        },
+        "alarmCondition": {
+          "": ""
+        }
+      }
+    },
+    "byVf": {
+      "": {
+        "vfc": {
+          "": ""
+        }
+      }
+    }
+  }
+}
diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml
new file mode 100644 (file)
index 0000000..cd8ebd8
--- /dev/null
@@ -0,0 +1,50 @@
+tosca_definitions_version: cloudify_dsl_1_3
+imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml',
+  'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml',
+  'http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml']
+inputs:
+  location_id: {type: string}
+  service_id: {type: string}
+node_templates:
+  cdap_host_host:
+    type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure
+    properties:
+      location_id: {get_input: location_id}
+      scn_override: cdap_broker.solutioning-central.dcae.att.com
+    interfaces:
+      cloudify.interfaces.lifecycle: {}
+  tca_tca:
+    type: dcae.nodes.MicroService.cdap
+    properties:
+      app_config: {appDescription: DCAE Analytics Threshold Crossing Alert Application,
+        appName: dcae-tca, tcaSubscriberOutputStreamName: TCASubscriberOutputStream,
+        tcaVESAlertsTableName: TCAVESAlertsTable, tcaVESAlertsTableTTLSeconds: '1728000',
+        tcaVESMessageStatusTableName: TCAVESMessageStatusTable, tcaVESMessageStatusTableTTLSeconds: '86400',
+        thresholdCalculatorFlowletInstances: '2'}
+      app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.homer.att.com,
+        publisherHostPort: '3905', publisherMaxBatchSize: '10', publisherMaxRecoveryQueueSize: '100000',
+        publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub,
+        publisherUserName: m00502@tca.af.dcae.att.com, publisherUserPassword: Te5021abc,
+        subscriberConsumerGroup: OpenDCAE-c12, subscriberConsumerId: c12, subscriberContentType: application/json,
+        subscriberHostName: mrlocal-mtnjftle01.homer.att.com, subscriberHostPort: '3905',
+        subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https,
+        subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub,
+        subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc,
+        tca_policy: '{"cdap-tca-hi-lo_policy":{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}}'}
+      artifact_name: dcae-analytics-tca
+      artifact_version: 1.0.0
+      connections:
+        streams_publishes: []
+        streams_subscribes: []
+      jar_url: http://somejar
+      location_id: {get_input: location_id}
+      namespace: cdap_tca_hi_lo
+      programs:
+      - {program_id: TCAVESCollectorFlow, program_type: flows}
+      - {program_id: TCADMaaPMRSubscriberWorker, program_type: workers}
+      - {program_id: TCADMaaPMRPublisherWorker, program_type: workers}
+      service_component_type: cdap_app_tca
+      service_id: {get_input: service_id}
+      streamname: TCASubscriberOutputStream
+    relationships:
+    - {target: cdap_host_host, type: dcae.relationships.component_contained_in}
diff --git a/src/test/resources/example/tca-policy-req/blueprint-input.yaml b/src/test/resources/example/tca-policy-req/blueprint-input.yaml
new file mode 100644 (file)
index 0000000..9532225
--- /dev/null
@@ -0,0 +1,79 @@
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
+- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml
+- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml
+- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml
+inputs:
+  location_id:
+    type: string
+  service_id:
+    type: string
+node_templates:
+  cdap_host_host:
+    type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure
+    properties:
+      location_id:
+        get_input: location_id
+      scn_override: cdap_broker.solutioning-central.dcae.att.com
+    interfaces:
+      cloudify.interfaces.lifecycle: {}
+  tca_tca:
+    type: dcae.nodes.MicroService.cdap
+    properties:
+      app_config:
+        appDescription: DCAE Analytics Threshold Crossing Alert Application
+        appName: dcae-tca
+        tcaSubscriberOutputStreamName: TCASubscriberOutputStream
+        tcaVESAlertsTableName: TCAVESAlertsTable
+        tcaVESAlertsTableTTLSeconds: '1728000'
+        tcaVESMessageStatusTableName: TCAVESMessageStatusTable
+        tcaVESMessageStatusTableTTLSeconds: '86400'
+        thresholdCalculatorFlowletInstances: '2'
+      app_preferences:
+        publisherContentType: application/json
+        publisherHostName: mrlocal-mtnjftle01.homer.att.com
+        publisherHostPort: '3905'
+        publisherMaxBatchSize: '10'
+        publisherMaxRecoveryQueueSize: '100000'
+        publisherPollingInterval: '20000'
+        publisherProtocol: https
+        publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub
+        publisherUserName: m00502@tca.af.dcae.att.com
+        publisherUserPassword: Te5021abc
+        subscriberConsumerGroup: OpenDCAE-c12
+        subscriberConsumerId: c12
+        subscriberContentType: application/json
+        subscriberHostName: mrlocal-mtnjftle01.homer.att.com
+        subscriberHostPort: '3905'
+        subscriberMessageLimit: '-1'
+        subscriberPollingInterval: '20000'
+        subscriberProtocol: https
+        subscriberTimeoutMS: '-1'
+        subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub
+        subscriberUserName: m00502@tca.af.dcae.att.com
+        subscriberUserPassword: Te5021abc
+        tca_policy: 
+      artifact_name: dcae-analytics-tca
+      artifact_version: 1.0.0
+      connections:
+        streams_publishes: []
+        streams_subscribes: []
+      jar_url: http://somejar
+      location_id:
+        get_input: location_id
+      namespace: cdap_tca_hi_lo
+      programs:
+      - program_id: TCAVESCollectorFlow
+        program_type: flows
+      - program_id: TCADMaaPMRSubscriberWorker
+        program_type: workers
+      - program_id: TCADMaaPMRPublisherWorker
+        program_type: workers
+      service_component_type: cdap_app_tca
+      service_id:
+        get_input: service_id
+      streamname: TCASubscriberOutputStream
+    relationships:
+    - target: cdap_host_host
+      type: dcae.relationships.component_contained_in
diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json
new file mode 100644 (file)
index 0000000..ce23091
--- /dev/null
@@ -0,0 +1,35 @@
+{
+  "cdap-tca-hi-lo_policy": {
+    "domain": "measurementsForVfScaling",
+    "metricsPerEventName": [
+      {
+        "eventName": "vFirewallBroadcastPackets",
+        "policyScope": "DCAE",
+        "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4",
+        "policyVersion": "v0.0.1",
+        "thresholds": [
+          {
+            "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null",
+            "controlLoopSchema": "VNF",
+            "version": "1.0.2",
+            "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "thresholdValue": 123,
+            "direction": "GREATER_OR_EQUAL",
+            "severity": "MAJOR",
+            "closedLoopEventStatus": "ONSET"
+          },
+          {
+            "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null",
+            "controlLoopSchema": "VNF",
+            "version": "1.0.2",
+            "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "thresholdValue": 123,
+            "direction": "GREATER_OR_EQUAL",
+            "severity": "MAJOR",
+            "closedLoopEventStatus": "ONSET"
+          }
+        ]
+      }
+    ]
+  }
+}
diff --git a/src/test/resources/example/templatePropForTca.json b/src/test/resources/example/templatePropForTca.json
deleted file mode 100644 (file)
index 9f1ce1d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "global": [
-    {
-      "name": "service",
-      "value": [
-        "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.3.1/types.yaml\r\n- http://135.207.127.211/1607_prod/type_files/cdap_app.yaml\r\n\r\nnode_templates:\r\n  MTCA:\r\n    type: dcae.nodes.cdap_app\r\n    properties:\r\n      service_name: \"cdap-mtca-central\"\r\n      deployment_JSON: |-\r\n          {\r\n            \"clusterService\": {\"$ref\": \"/services/vm-cdap-cluster-central/instances/rdm2c\"},\r\n            \"namespace\": \"MTCA\",\r\n            \"appNames\": [ \"cdap-mtca\" ],\r\n            \"flowNames\": [ \"cdap-mtca.TCAVESCollectorFlow\" ],\r\n            \"workerNames\": [\"cdap-mtca.TCADMaaPMRSubscriberWorker\", \"cdap-mtca.TCADMaaPMRPublisherWorker\"],\r\n            \"serviceNames\" : [],\r\n            \"apps\": {\r\n              \"cdap-mtca\": {\r\n                \"jarFile\": \"/opt/app/cdap-apps/dcae-analytics-mtca-1.0.0.jar\",\r\n                \"artifactName\": \"dcae-analytics-mtca\",\r\n                \"version\": \"1.0.0\",\r\n                \"appConfigFileContent\": \"{config:{ \\\"appName\\\":\\\"cdap-mtca\\\", \\\"appDescription\\\":\\\"DCAE Analytics Threshold Crossing Alert Application\\\", \\\"tcaSubscriberOutputStreamName\\\":\\\"TCASubscriberOutputStream\\\", \\\"thresholdCalculatorFlowletInstances\\\":2, \\\"tcaVESMessageStatusTableName\\\":\\\"TCAVESMessageStatusTable\\\", \\\"tcaVESMessageStatusTableTTLSeconds\\\":864000, \\\"tcaVESAlertsTableName\\\":\\\"TCAVESAlertsTable\\\", \\\"tcaVESAlertsTableTTLSeconds\\\":1728000 }}\"\r\n              }\r\n            },\r\n          \r\n            \"configuration\": {\r\n                \"$class\": \"com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration\",\r\n                \"subscriberContentType\": \"\",\r\n                \"subscriberConsumerId\": \"c12\",\r\n                \"subscriberConsumerGroup\": \"OpenDCAE-c12\",\r\n                \"subscriberTimeoutMS\": \"-1\",\r\n                \"subscriberMessageLimit\": \"-1\",\r\n                \"subscriberPollingInterval\": \"20000\",\r\n                \"publisherContentType\": \"application/json\",\r\n                \"publisherMaxBatchSize\": \"10\",\r\n                \"publisherMaxRecoveryQueueSize\": \"100000\",\r\n                \"publisherPollingInterval\": \"20000\",\r\n                \"publisherAlertWindowingTime\": \"86400\",\r\n                \"policyName\": \"policy.dcae.configuration\",\r\n                \"policyScope\": \"pnf=eNodeB;type=configuration\",\r\n                \"policyVersion\": \"1.0.0\",\r\n                \"domain\" : \"measurementsForVfScaling\",\r\n                \r\n                \"signatures\" : {\r\n             \t }\r\n\r\n             }\r\n          }\r\n"
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/src/test/resources/expected/tca.json b/src/test/resources/expected/tca.json
deleted file mode 100644 (file)
index 2fd16bd..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-    "service": "MThresholdCrossingConfiguration",
-    "location": "Edge",
-    "uuid": "TestUUID",
-    "policyName": "example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_",
-    "description": "from clds",
-    "configName": "MThresholdCrossingConfiguration",
-    "templateVersion": "5.2.0.1",
-    "priority": "4",
-    "version": "5.2.0.1",
-    "policyScope": "resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8",
-    "content": 
-    {
-        "$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration",
-        "domain": "measurementsForVfScaling",
-        "policyScope": "pnf=eNodeB;type=configuration",
-        "policyName": "policy.dcae.configuration",
-        "policyVersion": "1.0.0",
-        "subscriberContentType": "application/json",
-        "subscriberConsumerId": "c13",
-        "subscriberConsumerGroup": "OpenDCAE-c13",
-        "subscriberTimeoutMS": "-1",
-        "subscriberMessageLimit": "-1",
-        "subscriberPollingInterval": "20000",
-        "publisherContentType": "application/json",
-        "publisherMaxBatchSize": "10",
-        "publisherMaxRecoveryQueueSize": "100000",
-        "publisherPollingInterval": "20000",
-        "publisherAlertWindowingTime": "86400",
-        "signatures": 
-        [
-            {
-                "nfNamingCode": "ENBE",
-                "target": "common_id",
-                "targetType": "eNodeB",
-                "useCaseName": "Narra",
-                "signatureName": "Narra_886be8da-14fe-tca1-d04b-d13b55d58df9",
-                "signatureUuid": "886be8da-14fe-tca1-d04b-d13b55d58df9",
-                "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1",
-                "severity": "Warning",
-                "version": "1.0.2",
-                "maxInterval": 2,
-                "minMessageViolations": 3,
-                "thresholds": 
-                [
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value",
-                        "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY",
-                        "thresholdValue": 4,
-                        "direction": "LESS"
-                    },
-
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value",
-                        "thresholdName": "PMRAATTCBRA",
-                        "thresholdValue": 30,
-                        "direction": "GREATER"
-                    }
-                ]
-            },
-
-            {
-                "nfNamingCode": "ENBE",
-                "target": "common_id",
-                "targetType": "eNodeB",
-                "useCaseName": "Srini",
-                "signatureName": "Srini_8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d",
-                "signatureUuid": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d",
-                "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2",
-                "severity": "Critical",
-                "version": "1.0.2",
-                "maxInterval": 10,
-                "minMessageViolations": 5,
-                "thresholds": 
-                [
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value",
-                        "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY",
-                        "thresholdValue": 3,
-                        "direction": "EQUAL"
-                    },
-
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value",
-                        "thresholdName": "PMRAATTCBRA",
-                        "thresholdValue": 30,
-                        "direction": "GREATER"
-                    }
-                ]
-            }
-        ]
-    }
-}
\ No newline at end of file