Fix policy Tosca converter

Fix converter so that it can understand the new Policy Yaml model

Issue-ID: CLAMP-306
Change-Id: I4d2f8640b2344e7ceee2cfec2d7e3175777f591b
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
diff --git a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java
index f5b5a8d..f134472 100644
--- a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java
+++ b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java
@@ -18,59 +18,56 @@
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
- * 
+ *
  */
 
 package org.onap.clamp.clds.tosca;
 
 public class ToscaSchemaConstants {
 
-	//Data types in TOSCA Schema
-	public static final String TYPE_LIST = "list";
-	public static final String TYPE_MAP = "map";
-	public static final String TYPE_STRING = "string";
-	public static final String TYPE_INTEGER = "integer";
-	public static final String TYPE_FLOAT = "float";
-	public static final String TYPE_BOOLEAN = "boolean";
-	
-	//Key elements in Tosca
-	public static final String NODE_TYPES = "node_types";
-	public static final String DATA_TYPES = "data_types";
-	public static final String TYPE = "type";
-	public static final String DESCRIPTION = "description";
-	public static final String DEFAULT = "default";
-	public static final String PROPERTIES = "properties";
-	public static final String REQUIRED = "required";
-	public static final String ENTRY_SCHEMA = "entry_schema";
+    // Data types in TOSCA Schema
+    public static final String TYPE_LIST = "list";
+    public static final String TYPE_MAP = "map";
+    public static final String TYPE_STRING = "string";
+    public static final String TYPE_INTEGER = "integer";
+    public static final String TYPE_FLOAT = "float";
+    public static final String TYPE_BOOLEAN = "boolean";
 
-	//Constraints
-	public static final String CONSTRAINTS = "constraints";
-	public static final String VALID_VALUES = "valid_values";
-	public static final String EQUAL = "equal";
-	public static final String GREATER_THAN = "greater_than";
-	public static final String GREATER_OR_EQUAL = "greater_or_equal";
-	public static final String LESS_THAN = "less_than";
-	public static final String LESS_OR_EQUAL = "less_or_equal";
-	public static final String IN_RANGE = "in_range";
-	public static final String  LENGTH = "length";
-	public static final String MIN_LENGTH = "min_length";
-	public static final String MAX_LENGTH = "max_length";
-	public static final String PATTERN = "pattern";
-	
-	//Prefix for policy nodes
-	public static final String POLICY_NODE = "policy.nodes.";
-	
-	//Prefix for data nodes
-	public static final String POLICY_DATA = "policy.data.";
-	
-	//Prefix for dictionary elements
-	public static final String DICTIONARY = "Dictionary:";
-	
-	//Custom Elements that must exist in the Tosca models
-	public static final String NAME = "name";
-	public static final String CONTEXT = "context";
+    // Key elements in Tosca
+    public static final String NODE_TYPES = "policy_types";
+    public static final String DATA_TYPES = "data_types";
+    public static final String TYPE = "type";
+    public static final String DESCRIPTION = "description";
+    public static final String DEFAULT = "default";
+    public static final String PROPERTIES = "properties";
+    public static final String REQUIRED = "required";
+    public static final String ENTRY_SCHEMA = "entry_schema";
 
-	
-	
-	
+    // Constraints
+    public static final String CONSTRAINTS = "constraints";
+    public static final String VALID_VALUES = "valid_values";
+    public static final String EQUAL = "equal";
+    public static final String GREATER_THAN = "greater_than";
+    public static final String GREATER_OR_EQUAL = "greater_or_equal";
+    public static final String LESS_THAN = "less_than";
+    public static final String LESS_OR_EQUAL = "less_or_equal";
+    public static final String IN_RANGE = "in_range";
+    public static final String LENGTH = "length";
+    public static final String MIN_LENGTH = "min_length";
+    public static final String MAX_LENGTH = "max_length";
+    public static final String PATTERN = "pattern";
+
+    // Prefix for policy nodes
+    public static final String POLICY_NODE = "onap.policy.";
+
+    // Prefix for data nodes
+    public static final String POLICY_DATA = "onap.datatypes.";
+
+    // Prefix for dictionary elements
+    public static final String DICTIONARY = "Dictionary:";
+
+    // Custom Elements that must exist in the Tosca models
+    public static final String NAME = "name";
+    public static final String CONTEXT = "context";
+
 }
diff --git a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java
index d94ffab..199d053 100644
--- a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java
+++ b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java
@@ -47,8 +47,7 @@
 
         String parsedJsonSchema = convertor.parseToscaYaml(toscaModelYaml);
         assertNotNull(parsedJsonSchema);
-        JSONAssert.assertEquals(
-            ResourceFileUtil.getResourceAsString("example/json-editor-schema/tca-policy-json-editor-schema.json"),
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json.json"),
             parsedJsonSchema, true);
     }
 }
diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
index afa0723..fcef5b7 100644
--- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
+++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
@@ -135,7 +135,7 @@
 
         // Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper);
         Mockito.when(csarHandler.getPolicyModelYaml())
-            .thenReturn(Optional.ofNullable(ResourceFileUtil.getResourceAsString("tosca/tca-policy-test.yaml")));
+            .thenReturn(Optional.ofNullable(ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml")));
         return csarHandler;
     }
 
@@ -173,6 +173,7 @@
         assertThat(loop.getSvgRepresentation()).startsWith("<svg ");
         assertThat(loop.getGlobalPropertiesJson().get("dcaeDeployParameters")).isNotNull();
         assertThat(loop.getMicroServicePolicies()).hasSize(1);
+
         assertThat(loop.getOperationalPolicies()).hasSize(1);
         assertThat(loop.getModelPropertiesJson().get("serviceDetails")).isNotNull();
         assertThat(loop.getModelPropertiesJson().get("resourceDetails")).isNotNull();
diff --git a/src/test/resources/tosca/policy-yaml-to-json.json b/src/test/resources/tosca/policy-yaml-to-json.json
new file mode 100644
index 0000000..dd6a9ff
--- /dev/null
+++ b/src/test/resources/tosca/policy-yaml-to-json.json
@@ -0,0 +1,192 @@
+{
+	"schema": {
+		"uniqueItems": "true",
+		"format": "tabs-top",
+		"type": "array",
+		"title": "TCA Policy JSON",
+		"items": {
+			"type": "object",
+			"title": "TCA Policy JSON",
+			"required": [
+				"domain",
+				"metricsPerEventName"
+			],
+			"properties": {
+				"domain": {
+					"propertyOrder": 1001,
+					"default": "measurementsForVfScaling",
+					"title": "Domain name to which TCA needs to be applied",
+					"type": "string"
+				},
+				"metricsPerEventName": {
+					"propertyOrder": 1002,
+					"uniqueItems": "true",
+					"format": "tabs-top",
+					"title": "Contains eventName and threshold details that need to be applied to given eventName",
+					"type": "array",
+					"items": {
+						"type": "object",
+						"required": [
+							"controlLoopSchemaType",
+							"eventName",
+							"policyName",
+							"policyScope",
+							"policyVersion",
+							"thresholds"
+						],
+						"properties": {
+							"policyVersion": {
+								"propertyOrder": 1007,
+								"title": "TCA Policy Scope Version",
+								"type": "string"
+							},
+							"thresholds": {
+								"propertyOrder": 1008,
+								"uniqueItems": "true",
+								"format": "tabs-top",
+								"title": "Thresholds associated with eventName",
+								"type": "array",
+								"items": {
+									"type": "object",
+									"required": [
+										"closedLoopControlName",
+										"closedLoopEventStatus",
+										"direction",
+										"fieldPath",
+										"severity",
+										"thresholdValue",
+										"version"
+									],
+									"properties": {
+										"severity": {
+											"propertyOrder": 1013,
+											"title": "Threshold Event Severity",
+											"type": "string",
+											"enum": [
+												"CRITICAL",
+												"MAJOR",
+												"MINOR",
+												"WARNING",
+												"NORMAL"
+											]
+										},
+										"fieldPath": {
+											"propertyOrder": 1012,
+											"title": "Json field Path as per CEF message which needs to be analyzed for TCA",
+											"type": "string",
+											"enum": [
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",
+												"$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",
+												"$.event.measurementsForVfScalingFields.meanRequestLatency",
+												"$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",
+												"$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",
+												"$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",
+												"$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",
+												"$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",
+												"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"
+											]
+										},
+										"thresholdValue": {
+											"propertyOrder": 1014,
+											"title": "Threshold value for the field Path inside CEF message",
+											"type": "integer"
+										},
+										"closedLoopEventStatus": {
+											"propertyOrder": 1010,
+											"title": "Closed Loop Event Status of the threshold",
+											"type": "string",
+											"enum": [
+												"ONSET",
+												"ABATED"
+											]
+										},
+										"closedLoopControlName": {
+											"propertyOrder": 1009,
+											"title": "Closed Loop Control Name associated with the threshold",
+											"type": "string"
+										},
+										"version": {
+											"propertyOrder": 1015,
+											"title": "Version number associated with the threshold",
+											"type": "string"
+										},
+										"direction": {
+											"propertyOrder": 1011,
+											"title": "Direction of the threshold",
+											"type": "string",
+											"enum": [
+												"LESS",
+												"LESS_OR_EQUAL",
+												"GREATER",
+												"GREATER_OR_EQUAL",
+												"EQUAL"
+											]
+										}
+									}
+								}
+							},
+							"policyName": {
+								"propertyOrder": 1005,
+								"title": "TCA Policy Scope Name",
+								"type": "string"
+							},
+							"controlLoopSchemaType": {
+								"propertyOrder": 1003,
+								"title": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
+								"type": "string",
+								"enum": [
+									"VM",
+									"VNF"
+								]
+							},
+							"policyScope": {
+								"propertyOrder": 1006,
+								"title": "TCA Policy Scope",
+								"type": "string"
+							},
+							"eventName": {
+								"propertyOrder": 1004,
+								"title": "Event name to which thresholds need to be applied",
+								"type": "string"
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/tosca_example.yaml b/src/test/resources/tosca/tosca_example.yaml
index 3c5afb0..571986c 100644
--- a/src/test/resources/tosca/tosca_example.yaml
+++ b/src/test/resources/tosca/tosca_example.yaml
@@ -1,80 +1,158 @@
 tosca_definitions_version: tosca_simple_yaml_1_0_0
-node_types:
-  policy.nodes.cdap.tca.hi.lo.app:
-    derived_from: policy.nodes.Root
-    properties:
-      domain:
-        type: string
-        description: Domain
-        constraints:
-        - equal: measurementsForVfScaling
-      functionalRole:
-        type: string
-        description: Function of the event source e.g., vnf1, vnf2, vnf3
-      thresholds:
-        type: list
-        description: Thresholds
-        entry_schema:
-          type: policy.data.thresholds
+policy_types:
+    onap.policies.Monitoring:
+        derived_from: tosca.policies.Root
+        description: a base policy type for all policies that governs monitoring provisioning
+    onap.policy.monitoring.cdap.tca.hi.lo.app:
+        derived_from: onap.policies.Monitoring
+        version: 1.0.0
+        properties:
+            tca_policy:
+                type: list
+                description: TCA Policy JSON
+                entry_schema:
+                    type: onap.datatypes.monitoring.tca_policy
 data_types:
-  policy.data.thresholds:
-    properties:
-      closedLoopControlName:
-        type: string
-        description: A UNIQUE string identifying the Closed Loop ID this event is for.
-      direction:
-        type: string
-        constraints:
-        - valid_values: [ LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL]
-      fieldPath:
-        description: Field Path
-        type: string
-      severity:
-        type: string
-        description: event severity or priority
-        constraints:
-        - valid_values: [CRITICAL, MAJOR, MINOR, WARNING, NORMAL]
-      thresholdValue:
-        type: integer
-        description: ThresholdValue
-        default: 0
-        constraints:
-          - in_range: [ 0, 65535 ]
-      version:
-        type: string
-        description: Version for the closed loop message
-        constraints:
-          - min_length: 1
-      dummySignatures:
-        type: list
-        description: dummy Signatures
-        required: true
-        entry_schema:
-          type: policy.data.dummySignatureTraversal
-  policy.data.dummySignatureTraversal:
-    derived_from: tosca.nodes.Root
-    properties:
-      signature:
-        type: policy.data.DUMMY_Signature_FM
-        required: true
-      traversal:
-        type: policy.data.traverse
-        required: true
-  policy.data.traverse:
-    derived_from: tosca.nodes.Root
-    properties:
-      traversal:
-        type: string
-        description: Dummy Traverse
-        required: true
-        constraints:
-          - valid_values: [ ONE, TWO, THREE ]
-  policy.data.DUMMY_Signature_FM:
-    derived_from: tosca.nodes.Root
-    properties:
-      filter_clause:
-        type: string
-        description: Filter Clause
-        required: true
-        constraints:
-          - valid_values: [ OR, AND, NOT ]
+    onap.datatypes.monitoring.metricsPerEventName:
+        derived_from: tosca.datatypes.Root
+        properties:
+            controlLoopSchemaType:
+                type: string
+                required: true
+                description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM
+                constraints:
+                  - valid_values:
+                      - VM
+                      - VNF
+            eventName:
+                type: string
+                required: true
+                description: Event name to which thresholds need to be applied
+            policyName:
+                type: string
+                required: true
+                description: TCA Policy Scope Name
+            policyScope:
+                type: string
+                required: true
+                description: TCA Policy Scope
+            policyVersion:
+                type: string
+                required: true
+                description: TCA Policy Scope Version
+            thresholds:
+                type: list
+                required: true
+                description: Thresholds associated with eventName
+                entry_schema:
+                    type: onap.datatypes.monitoring.thresholds
+    onap.datatypes.monitoring.tca_policy:
+        derived_from: tosca.datatypes.Root
+        properties:
+            domain:
+                type: string
+                required: true
+                description: Domain name to which TCA needs to be applied
+                default: measurementsForVfScaling
+                constraints:
+                  - equal: measurementsForVfScaling
+            metricsPerEventName:
+                type: list
+                required: true
+                description: Contains eventName and threshold details that need to be applied to given eventName
+                entry_schema:
+                    type: onap.datatypes.monitoring.metricsPerEventName
+    onap.datatypes.monitoring.thresholds:
+        derived_from: tosca.datatypes.Root
+        properties:
+            closedLoopControlName:
+                type: string
+                required: true
+                description: Closed Loop Control Name associated with the threshold
+            closedLoopEventStatus:
+                type: string
+                required: true
+                description: Closed Loop Event Status of the threshold
+                constraints:
+                  - valid_values:
+                      - ONSET
+                      - ABATED
+            direction:
+                type: string
+                required: true
+                description: Direction of the threshold
+                constraints:
+                  - valid_values:
+                      - LESS
+                      - LESS_OR_EQUAL
+                      - GREATER
+                      - GREATER_OR_EQUAL
+                      - EQUAL
+            fieldPath:
+                type: string
+                required: true
+                description: Json field Path as per CEF message which needs to be analyzed for TCA
+                constraints:
+                  - valid_values:
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait
+                      - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage
+                      - $.event.measurementsForVfScalingFields.meanRequestLatency
+                      - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered
+                      - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached
+                      - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured
+                      - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree
+                      - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed
+                      - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value
+            severity:
+                type: string
+                required: true
+                description: Threshold Event Severity
+                constraints:
+                  - valid_values:
+                      - CRITICAL
+                      - MAJOR
+                      - MINOR
+                      - WARNING
+                      - NORMAL
+            thresholdValue:
+                type: integer
+                required: true
+                description: Threshold value for the field Path inside CEF message
+            version:
+                type: string
+                required: true
+                description: Version number associated with the threshold