summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java16
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/SdcReq.java18
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java121
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java166
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/Tca.java31
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java98
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java (renamed from src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java)70
-rw-r--r--src/main/resources/clds/clds-reference.properties28
-rw-r--r--src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java89
-rw-r--r--src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java57
-rw-r--r--src/test/resources/clds/clds-reference.properties8
-rw-r--r--src/test/resources/example/model-properties/holmes/modelBpmn.json20
-rw-r--r--src/test/resources/example/model-properties/holmes/modelBpmnProperties.json116
-rw-r--r--src/test/resources/example/model-properties/tca/modelBpmn.json20
-rw-r--r--src/test/resources/example/model-properties/tca/modelBpmnProperties.json150
-rw-r--r--src/test/resources/example/templatePropForTca.json10
-rw-r--r--src/test/resources/expected/tca.json93
17 files changed, 704 insertions, 407 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
index 9debcc2a..7de12683 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
@@ -23,19 +23,19 @@
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());
}
diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
index c5e26f30..32846ed0 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
@@ -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
index f3106289..00000000
--- a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java
+++ /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
index 00000000..3fbf8739
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
@@ -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/model/prop/Tca.java b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
index f7bbac0d..4fd6b595 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
@@ -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() {
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
index f104b091..79da2db0 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
@@ -23,45 +23,28 @@
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;
}
}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
index 39369f17..43bdb5c1 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
@@ -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;
+ }
}
diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties
index d404e4e3..9a56295b 100644
--- a/src/main/resources/clds/clds-reference.properties
+++ b/src/main/resources/clds/clds-reference.properties
@@ -38,17 +38,18 @@ sdc.decode.service_ids={}
#
# General Policy request properties
#
-policy.ecomp.name=DCAE
+policy.onap.name=DCAE
policy.pdp.group=default
policy.ms.type=MicroService
policy.ms.policyNamePrefix=Config_MS_
policy.op.type=BRMS_Param
policy.op.policyNamePrefix=Config_BRMS_Param_
-#
+
# TCA MicroService Policy request build properties
#
-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":[]}}
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}
+
#
#
# Operational Policy request build properties
@@ -73,9 +74,9 @@ op.eNodeB.limit=2
op.eNodeB.period=10s
#
# Sdc service properties
-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://sdcb-conexus.e73c65.rdm2.tci.att.com:8080/sdc/v1/catalog/
+sdc.hostUrl=http://sdcb-conexus.e73c65.rdm2.tci.att.com:8080
+sdc.serviceUrl=http://sdcb-conexus.e73c65.rdm2.tci.att.com:8080/sdc/v1/catalog/services
sdc.serviceUsername=test
sdc.servicePassword=123456
sdc.artifactLabel=blueprintclampcockpit
@@ -84,6 +85,17 @@ sdc.artifactType=DCAE_INVENTORY_BLUEPRINT
sdc.locationArtifactLabel=locationclampcockpit
sdc.locationArtifactType=DCAE_INVENTORY_JSON
sdc.InstanceID=X-ECOMP-InstanceID
+#sdc.catalog.url=http://135.205.226.136:8080/sdc/v1/catalog/
+#sdc.hostUrl=http://135.205.226.136:8080
+#sdc.serviceUrl=http://135.205.226.136:8080/sdc/v1/catalog/services
+#sdc.serviceUsername=clamp
+#sdc.servicePassword=clampdown
+##sdc.artifactLabel=blueprintclampcockpit
+#sdc.sdcX-InstanceID=CLAMP
+#sdc.artifactType=DCAE_INVENTORY_BLUEPRINT
+#sdc.locationArtifactLabel=locationclampcockpit
+#sdc.locationArtifactType=DCAE_INVENTORY_JSON
+#sdc.InstanceID=X-ECOMP-InstanceID
#
#
#
@@ -94,7 +106,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann
action.test.override=false
# if action.insert.test.event is true, then insert event even if the action is set to test
action.insert.test.event=false
-CLDS_SERVICE_CACHE_MAX_SECONDS=5
+CLDS_SERVICE_CACHE_MAX_SECONDS=300
#DCAE Inventory Url Properties
DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080
diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java
new file mode 100644
index 00000000..89ff5792
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java
@@ -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.AbstractIT;
+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 TcaPolicyReq features
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:application-no-camunda.properties")
+public class TcaRequestFormatterIT extends AbstractIT {
+
+ 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);
+ }
+}
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index 60056d42..45f39a42 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -24,11 +24,10 @@
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
diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties
index f2ec43b7..405b3ed6 100644
--- a/src/test/resources/clds/clds-reference.properties
+++ b/src/test/resources/clds/clds-reference.properties
@@ -28,9 +28,9 @@
#
# TCA MicroService Policy request build properties
#
-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":[]}}
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}
-
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}
+#
#
# DCAE request build properties
#
@@ -45,7 +45,7 @@ sdc.decode.service_ids={}
#
# General Policy request properties
#
-policy.ecomp.name=DCAE
+policy.onap.name=DCAE
policy.pdp.group=default
policy.ms.type=MicroService
policy.ms.policyNamePrefix=Config_MS_
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
index 00000000..db8e54dd
--- /dev/null
+++ b/src/test/resources/example/model-properties/holmes/modelBpmn.json
@@ -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
index 00000000..14b3a8c2
--- /dev/null
+++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
@@ -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
index 00000000..7358f9ad
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca/modelBpmn.json
@@ -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
index 00000000..0bfa78ce
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
@@ -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/templatePropForTca.json b/src/test/resources/example/templatePropForTca.json
deleted file mode 100644
index 9f1ce1da..00000000
--- a/src/test/resources/example/templatePropForTca.json
+++ /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
index 2fd16bde..00000000
--- a/src/test/resources/expected/tca.json
+++ /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