Added onap.policies.monitoring.tcagen2 version 2.0.0 42/130342/2
authorjhh <jorge.hernandez-herrero@att.com>
Wed, 17 Aug 2022 23:47:56 +0000 (18:47 -0500)
committerjhh <jorge.hernandez-herrero@att.com>
Wed, 17 Aug 2022 23:56:32 +0000 (18:56 -0500)
Issue-ID: POLICY-4317
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Change-Id: I34158cd21777b6127fd4a306b73fa3446e302c99
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.json [new file with mode: 0644]
models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.yaml [new file with mode: 0644]
models-examples/src/main/resources/policytypes/onap.policies.monitoring.tcagen2.v2.yaml [new file with mode: 0644]
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java

diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.json b/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.json
new file mode 100644 (file)
index 0000000..790fa33
--- /dev/null
@@ -0,0 +1,186 @@
+{
+  "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+  "topology_template": {
+    "policies": [
+      {
+        "onap.vfirewall.tca": {
+          "type": "onap.policies.monitoring.tcagen2",
+          "type_version": "2.0.0",
+          "version": "2.0.0",
+          "name": "onap.vfirewall.tca",
+          "metadata": {
+            "policy-id": "onap.vfirewall.tca"
+          },
+          "properties": {
+            "tca.policy": [
+              {
+                "domain": "measurementsForVfScaling",
+                "metricsPerEventName": [
+                  {
+                    "eventName": "Mfvs_eNodeB_RANKPI",
+                    "controlLoopSchemaType": "VNF",
+                    "policyScope": "resource=vFirewall;type=configuration",
+                    "policyName": "configuration.dcae.microservice.tca.xml",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8",
+                        "closedLoopEventStatus": "ONSET",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 4000,
+                        "direction": "LESS_OR_EQUAL",
+                        "severity": "MAJOR"
+                      },
+                      {
+                        "closedLoopControlName": "CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09",
+                        "closedLoopEventStatus": "ONSET",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 20000,
+                        "direction": "GREATER_OR_EQUAL",
+                        "severity": "CRITICAL"
+                      },
+                      {
+                        "closedLoopControlName": "CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09",
+                        "closedLoopEventStatus": "ABATED",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 0,
+                        "direction": "EQUAL",
+                        "severity": "CRITICAL"
+                      }
+                    ]
+                  },
+                  {
+                    "eventName": "vLoadBalancer",
+                    "controlLoopSchemaType": "VNF",
+                    "policyScope": "resource=vLoadBalancer;type=configuration",
+                    "policyName": "configuration.dcae.microservice.tca.xml",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",
+                        "closedLoopEventStatus": "ONSET",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 500,
+                        "direction": "LESS_OR_EQUAL",
+                        "severity": "MAJOR"
+                      },
+                      {
+                        "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B",
+                        "closedLoopEventStatus": "ONSET",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 5000,
+                        "direction": "GREATER_OR_EQUAL",
+                        "severity": "CRITICAL"
+                      }
+                    ]
+                  },
+                  {
+                    "eventName": "virtualVMEventName",
+                    "controlLoopSchemaType": "VM",
+                    "policyScope": "resource=virtualVM;type=configuration",
+                    "policyName": "configuration.dcae.microservice.tca.xml",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",
+                        "closedLoopEventStatus": "ONSET",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                        "thresholdValue": 500,
+                        "direction": "LESS_OR_EQUAL",
+                        "severity": "MAJOR"
+                      }
+                    ]
+                  }
+                ]
+              },
+              {
+                "domain": "measurement",
+                "metricsPerEventName": [
+                  {
+                    "eventName": "vFirewallBroadcastPackets",
+                    "controlLoopSchemaType": "VM",
+                    "policyScope": "DCAE",
+                    "policyName": "DCAE.Config_tca-hi-lo",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta",
+                        "thresholdValue": 300,
+                        "direction": "LESS_OR_EQUAL",
+                        "severity": "MAJOR",
+                        "closedLoopEventStatus": "ABATED"
+                      },
+                      {
+                        "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta",
+                        "thresholdValue": 700,
+                        "direction": "GREATER_OR_EQUAL",
+                        "severity": "CRITICAL",
+                        "closedLoopEventStatus": "ONSET"
+                      }
+                    ]
+                  },
+                  {
+                    "eventName": "vLoadBalancer",
+                    "controlLoopSchemaType": "VM",
+                    "policyScope": "DCAE",
+                    "policyName": "DCAE.Config_tca-hi-lo",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta",
+                        "thresholdValue": 300,
+                        "direction": "GREATER_OR_EQUAL",
+                        "severity": "CRITICAL",
+                        "closedLoopEventStatus": "ONSET"
+                      }
+                    ]
+                  },
+                  {
+                    "eventName": "Measurement_vGMUX",
+                    "controlLoopSchemaType": "VNF",
+                    "policyScope": "DCAE",
+                    "policyName": "DCAE.Config_tca-hi-lo",
+                    "policyVersion": "v0.0.1",
+                    "thresholds": [
+                      {
+                        "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementFields.additionalMeasurements[*].arrayOfFields[0].value",
+                        "thresholdValue": 0,
+                        "direction": "EQUAL",
+                        "severity": "MAJOR",
+                        "closedLoopEventStatus": "ABATED"
+                      },
+                      {
+                        "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                        "version": "1.0.2",
+                        "fieldPath": "$.event.measurementFields.additionalMeasurements[*].arrayOfFields[0].value",
+                        "thresholdValue": 0,
+                        "direction": "GREATER",
+                        "severity": "CRITICAL",
+                        "closedLoopEventStatus": "ONSET"
+                      }
+                    ]
+                  }
+                ]
+              }
+            ]
+          }
+        }
+      }
+    ]
+  }
+}
+
diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.yaml b/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.yaml
new file mode 100644 (file)
index 0000000..3a2aef1
--- /dev/null
@@ -0,0 +1,149 @@
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+  policies:
+    - onap.vfirewall.tca:
+        type: onap.policies.monitoring.tcagen2
+        type_version: 2.0.0
+        version: 2.0.0
+        name: onap.vfirewall.tca
+        metadata:
+          policy-id: onap.vfirewall.tca
+        properties:
+          tca.policy:
+            - domain: measurementsForVfScaling
+              metricsPerEventName:
+                - eventName: Mfvs_eNodeB_RANKPI
+                  controlLoopSchemaType: VNF
+                  policyScope: resource=vFirewall;type=configuration
+                  policyName: configuration.dcae.microservice.tca.xml
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: >-
+                        CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8
+                      closedLoopEventStatus: ONSET
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 4000
+                      direction: LESS_OR_EQUAL
+                      severity: MAJOR
+                    - closedLoopControlName: >-
+                        CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09
+                      closedLoopEventStatus: ONSET
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 20000
+                      direction: GREATER_OR_EQUAL
+                      severity: CRITICAL
+                    - closedLoopControlName: >-
+                        CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09
+                      closedLoopEventStatus: ABATED
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 0
+                      direction: EQUAL
+                      severity: CRITICAL
+                - eventName: vLoadBalancer
+                  controlLoopSchemaType: VNF
+                  policyScope: resource=vLoadBalancer;type=configuration
+                  policyName: configuration.dcae.microservice.tca.xml
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: >-
+                        CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A
+                      closedLoopEventStatus: ONSET
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 500
+                      direction: LESS_OR_EQUAL
+                      severity: MAJOR
+                    - closedLoopControlName: >-
+                        CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B
+                      closedLoopEventStatus: ONSET
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 5000
+                      direction: GREATER_OR_EQUAL
+                      severity: CRITICAL
+                - eventName: virtualVMEventName
+                  controlLoopSchemaType: VM
+                  policyScope: resource=virtualVM;type=configuration
+                  policyName: configuration.dcae.microservice.tca.xml
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: >-
+                        CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A
+                      closedLoopEventStatus: ONSET
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated
+                      thresholdValue: 500
+                      direction: LESS_OR_EQUAL
+                      severity: MAJOR
+            - domain: measurement
+              metricsPerEventName:
+                - eventName: vFirewallBroadcastPackets
+                  controlLoopSchemaType: VM
+                  policyScope: DCAE
+                  policyName: DCAE.Config_tca-hi-lo
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: >-
+                        ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta
+                      thresholdValue: 300
+                      direction: LESS_OR_EQUAL
+                      severity: MAJOR
+                      closedLoopEventStatus: ABATED
+                    - closedLoopControlName: >-
+                        ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta
+                      thresholdValue: 700
+                      direction: GREATER_OR_EQUAL
+                      severity: CRITICAL
+                      closedLoopEventStatus: ONSET
+                - eventName: vLoadBalancer
+                  controlLoopSchemaType: VM
+                  policyScope: DCAE
+                  policyName: DCAE.Config_tca-hi-lo
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementFields.nicPerformanceArray[*].receivedTotalPacketsDelta
+                      thresholdValue: 300
+                      direction: GREATER_OR_EQUAL
+                      severity: CRITICAL
+                      closedLoopEventStatus: ONSET
+                - eventName: Measurement_vGMUX
+                  controlLoopSchemaType: VNF
+                  policyScope: DCAE
+                  policyName: DCAE.Config_tca-hi-lo
+                  policyVersion: v0.0.1
+                  thresholds:
+                    - closedLoopControlName: ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementFields.additionalMeasurements[*].arrayOfFields[0].value
+                      thresholdValue: 0
+                      direction: EQUAL
+                      severity: MAJOR
+                      closedLoopEventStatus: ABATED
+                    - closedLoopControlName: ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+                      version: 1.0.2
+                      fieldPath: >-
+                        $.event.measurementFields.additionalMeasurements[*].arrayOfFields[0].value
+                      thresholdValue: 0
+                      direction: GREATER
+                      severity: CRITICAL
+                      closedLoopEventStatus: ONSET
+
diff --git a/models-examples/src/main/resources/policytypes/onap.policies.monitoring.tcagen2.v2.yaml b/models-examples/src/main/resources/policytypes/onap.policies.monitoring.tcagen2.v2.yaml
new file mode 100644 (file)
index 0000000..34f31f7
--- /dev/null
@@ -0,0 +1,162 @@
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+policy_types:
+   onap.policies.Monitoring:
+      derived_from: tosca.policies.Root
+      version: 1.0.0
+      name: onap.policies.Monitoring
+      description: a base policy type for all policies that govern monitoring provisioning
+   onap.policies.monitoring.tcagen2:
+      derived_from: onap.policies.Monitoring
+      version: 2.0.0
+      name: onap.policies.monitoring.tcagen2
+      properties:
+         tca.policy:
+            type: list
+            description: TCA Policy JSON
+            required: true
+            entry_schema:
+                type: onap.datatypes.monitoring.tca_policy
+data_types:
+   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
index 98ced3b..4e491fd 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019-2020 Nordix Foundation.
- *  Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ *  Copyright (C) 2019-2020,2022 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.
@@ -79,6 +79,7 @@ public class MonitoringPolicySerializationTest {
     private static final String METADATA = "metadata";
 
     private static final String VERSION_100 = "1.0.0";
+    private static final String VERSION_200 = "2.0.0";
 
     private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicySerializationTest.class);
 
@@ -88,9 +89,11 @@ public class MonitoringPolicySerializationTest {
     private static final String VDNS_MON_INPUT_YAML = "policies/vDNS.policy.monitoring.input.tosca.yaml";
     private static final String VFW_MON_INPUT_JSON = "policies/vFirewall.policy.monitoring.input.tosca.json";
     private static final String VFW_MON_INPUT_YAML = "policies/vFirewall.policy.monitoring.input.tosca.yaml";
+    private static final String VFW_MON_INPUT_V2_JSON = "policies/vFirewall.policy.monitoring.input.tosca.v2.json";
+    private static final String VFW_MON_INPUT_V2_YAML = "policies/vFirewall.policy.monitoring.input.tosca.v2.yaml";
 
-    private StandardCoder standardCoder = new StandardCoder();
-    private YamlJsonTranslator yamlJsonTranslator = new YamlJsonTranslator();
+    private final StandardCoder standardCoder = new StandardCoder();
+    private final YamlJsonTranslator yamlJsonTranslator = new YamlJsonTranslator();
 
     @Test
     public void testDeserialization() throws Exception {
@@ -122,9 +125,11 @@ public class MonitoringPolicySerializationTest {
         serviceTemplateFromJson = deserializeMonitoringInputJson(VFW_MON_INPUT_JSON);
         mergedServiceTemplate =
                 ToscaServiceTemplateUtils.addFragment(policyTypeServiceTemplate, serviceTemplateFromJson);
-        verifyVfwMonitoringInputDeserialization(mergedServiceTemplate);
+        verifyVfwMonitoringInputDeserialization(mergedServiceTemplate, VERSION_100);
         serviceTemplateFromYaml = deserializeMonitoringInputYaml(VFW_MON_INPUT_YAML);
         assertEquals(0, serviceTemplateFromJson.compareTo(serviceTemplateFromYaml));
+
+        testDeserializationMonitoringV2();
     }
 
     @Test
@@ -143,13 +148,34 @@ public class MonitoringPolicySerializationTest {
             // vFirewall
             serviceTemplate = deserializeMonitoringInputJson(VFW_MON_INPUT_JSON);
             serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate);
-            verifyVfwMonitoringOutputserialization(serializedServiceTemplate);
+            verifyVfwMonitoringOutputserialization(serializedServiceTemplate, VERSION_100);
 
+            // vFirewall v2
+            serviceTemplate = deserializeMonitoringInputJson(VFW_MON_INPUT_V2_JSON);
+            serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate);
+            verifyVfwMonitoringOutputserialization(serializedServiceTemplate, VERSION_200);
         }).as("No exception should be thrown").doesNotThrowAnyException();
     }
 
-    private JpaToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath) throws Exception {
+    private void testDeserializationMonitoringV2() throws Exception {
+        String policyTypeInputJson =
+            ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.v2.yaml");
+        ToscaServiceTemplate plainPolicyTypes =
+            yamlJsonTranslator.fromYaml(policyTypeInputJson, ToscaServiceTemplate.class);
+
+        JpaToscaServiceTemplate policyTypeServiceTemplate = new JpaToscaServiceTemplate();
+        policyTypeServiceTemplate.fromAuthorative(plainPolicyTypes);
 
+        JpaToscaServiceTemplate serviceTemplateFromJson = deserializeMonitoringInputJson(VFW_MON_INPUT_V2_JSON);
+        JpaToscaServiceTemplate mergedServiceTemplate =
+            ToscaServiceTemplateUtils.addFragment(policyTypeServiceTemplate, serviceTemplateFromJson);
+        verifyVfwMonitoringInputDeserialization(mergedServiceTemplate, VERSION_200);
+
+        JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(VFW_MON_INPUT_V2_YAML);
+        assertEquals(0, serviceTemplateFromJson.compareTo(serviceTemplateFromYaml));
+    }
+
+    private JpaToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath) throws Exception {
         String policyJson = ResourceUtils.getResourceAsString(resourcePath);
         ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyJson, ToscaServiceTemplate.class);
         JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
@@ -238,7 +264,7 @@ public class MonitoringPolicySerializationTest {
         assertNotNull(policyVal.getProperties().values().iterator().next());
     }
 
-    private void verifyVfwMonitoringInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
+    private void verifyVfwMonitoringInputDeserialization(JpaToscaServiceTemplate serviceTemplate, String version) {
 
         // Sanity check the entire structure
         assertNotNull(serviceTemplate);
@@ -254,7 +280,7 @@ public class MonitoringPolicySerializationTest {
         // Check policies
         assertEquals(1, policiesConceptMap.size());
         assertEquals(POLICY3, policiesConceptMap.keySet().iterator().next().getName());
-        assertEquals("onap.vfirewall.tca:1.0.0",
+        assertEquals("onap.vfirewall.tca:" + version,
                 serviceTemplate.getTopologyTemplate().getPolicies().get(POLICY3).getId());
 
         JpaToscaPolicy policyVal = policiesConceptMap.values().iterator().next();
@@ -304,7 +330,7 @@ public class MonitoringPolicySerializationTest {
         assertNotNull(properties.get(TCA_POLICY));
     }
 
-    private void verifyVfwMonitoringOutputserialization(String serializedServiceTemplate) {
+    private void verifyVfwMonitoringOutputserialization(String serializedServiceTemplate, String version) {
 
         JsonObject serviceTemplateJsonObject = JsonParser.parseString(serializedServiceTemplate).getAsJsonObject();
         assertEquals(YAML_VERSION, serviceTemplateJsonObject.get(DEFINITION_VERSION).getAsString());
@@ -315,7 +341,7 @@ public class MonitoringPolicySerializationTest {
         assertNotNull(policy.get(POLICY3));
         JsonObject policyVal = policy.get(POLICY3).getAsJsonObject();
         assertEquals(TYPE1, policyVal.get("type").getAsString());
-        assertEquals(VERSION_100, policyVal.get(VERSION).getAsString());
+        assertEquals(version, policyVal.get(VERSION).getAsString());
         assertEquals(POLICY3, policyVal.get(METADATA).getAsJsonObject().get(POLICY_ID).getAsString());
         JsonObject properties = policyVal.get(PROPERTIES2).getAsJsonObject();
         assertNotNull(properties.get(TCA_POLICY));
index 7135da0..64027b9 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019-2020 Nordix Foundation.
- *  Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ *  Copyright (C) 2019-2020,2022 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.
@@ -62,17 +62,20 @@ public class MonitoringPolicyTypeSerializationTest {
 
     private static final String THRESHOLDS = "onap.datatypes.monitoring.thresholds";
 
-    private static final String TCA = "onap.datatypes.monitoring.tca_policy";
+    private static final String TCA_V1 = "onap.datatypes.monitoring.tca_policy";
+    private static final String TCA_V2 = "list";
 
     private static final String METRICS = "onap.datatypes.monitoring.metricsPerEventName";
 
-    private static final String VERSION_100 = "1.0.0";
-
     private static final String VERSION_000 = "0.0.0";
+    private static final String VERSION_100 = "1.0.0";
+    private static final String VERSION_200 = "2.0.0";
 
     private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicyTypeSerializationTest.class);
 
     private static final String MONITORING_TCA_YAML = "policytypes/onap.policies.monitoring.tcagen2.yaml";
+    private static final String MONITORING_TCA_V2_YAML = "policytypes/onap.policies.monitoring.tcagen2.v2.yaml";
+
     private static final String MONITORING_COLLECTORS_YAML =
             "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml";
 
@@ -85,9 +88,13 @@ public class MonitoringPolicyTypeSerializationTest {
 
     @Test
     public void testDeserialization() throws Exception {
-        // TCA
+        // TCA v1
         JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
-        verifyTcaInputDeserialization(serviceTemplateFromYaml);
+        verifyTcaInputDeserialization(serviceTemplateFromYaml, VERSION_100, TCA_V1);
+
+        // TCA v2
+        serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_V2_YAML);
+        verifyTcaInputDeserialization(serviceTemplateFromYaml, VERSION_200, TCA_V2);
 
         // Collector
         serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
@@ -96,7 +103,7 @@ public class MonitoringPolicyTypeSerializationTest {
 
     @Test
     public void testSerialization() throws Exception {
-        // TCA
+        // TCA v1
         JpaToscaServiceTemplate tcaServiceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
         String serializedServiceTemplateTca = serializeMonitoringServiceTemplate(tcaServiceTemplateFromYaml);
 
@@ -108,6 +115,18 @@ public class MonitoringPolicyTypeSerializationTest {
         String serializedServiceTemplateTcaOut = serializeMonitoringServiceTemplate(serviceTemplateFromJsonTca);
         assertEquals(serializedServiceTemplateTca, serializedServiceTemplateTcaOut);
 
+        // TCA v2
+        tcaServiceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_V2_YAML);
+        serializedServiceTemplateTca = serializeMonitoringServiceTemplate(tcaServiceTemplateFromYaml);
+
+        toscaServiceTemplateFromJsonTca =
+            coder.decode(serializedServiceTemplateTca, ToscaServiceTemplate.class);
+
+        serviceTemplateFromJsonTca = new JpaToscaServiceTemplate();
+        serviceTemplateFromJsonTca.fromAuthorative(toscaServiceTemplateFromJsonTca);
+        serializedServiceTemplateTcaOut = serializeMonitoringServiceTemplate(serviceTemplateFromJsonTca);
+        assertEquals(serializedServiceTemplateTca, serializedServiceTemplateTcaOut);
+
         // Collector
         JpaToscaServiceTemplate collectorServiceTemplateFromYaml =
                 deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
@@ -123,7 +142,6 @@ public class MonitoringPolicyTypeSerializationTest {
     }
 
     private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) throws Exception {
-
         Yaml yaml = new Yaml();
         String policyTypeYaml = ResourceUtils.getResourceAsString(resourcePath);
         Object yamlObject = yaml.load(policyTypeYaml);
@@ -135,7 +153,7 @@ public class MonitoringPolicyTypeSerializationTest {
         return jpaToscaServiceTemplate;
     }
 
-    private void verifyTcaInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
+    private void verifyTcaInputDeserialization(JpaToscaServiceTemplate serviceTemplate, String version, String tca) {
 
         // Sanity check the entire structure
         assertNotNull(serviceTemplate);
@@ -159,15 +177,15 @@ public class MonitoringPolicyTypeSerializationTest {
 
         Entry<PfConceptKey, JpaToscaPolicyType> secondPolicyType = policyTypesIter.next();
         assertEquals("onap.policies.monitoring.tcagen2", secondPolicyType.getKey().getName());
-        assertEquals(VERSION_100, secondPolicyType.getKey().getVersion());
+        assertEquals(version, secondPolicyType.getKey().getVersion());
         assertEquals(MONITORING, secondPolicyType.getValue().getDerivedFrom().getName());
         assertEquals(1, secondPolicyType.getValue().getProperties().size());
 
         JpaToscaProperty property = secondPolicyType.getValue().getProperties().values().iterator().next();
         assertEquals("onap.policies.monitoring.tcagen2", property.getKey().getParentKeyName());
-        assertEquals(VERSION_100, property.getKey().getParentKeyVersion());
+        assertEquals(version, property.getKey().getParentKeyVersion());
         assertEquals("tca.policy", property.getKey().getLocalName());
-        assertEquals(TCA, property.getType().getName());
+        assertEquals(tca, property.getType().getName());
         assertEquals("TCA Policy JSON", property.getDescription());
 
         // Check data_types
@@ -235,7 +253,7 @@ public class MonitoringPolicyTypeSerializationTest {
         assertEquals(THRESHOLDS, firstDataTypeSixthProperty.getEntrySchema().getType().getName());
 
         Entry<PfConceptKey, JpaToscaDataType> secondDataType = dataTypesIter.next();
-        assertEquals(TCA, secondDataType.getKey().getName());
+        assertEquals(TCA_V1, secondDataType.getKey().getName());
         JpaToscaDataType secondDataTypeVal = secondDataType.getValue();
         assertEquals(DATATYPE_ROOT, secondDataTypeVal.getDerivedFrom().getName());
         assertEquals(VERSION_000, secondDataTypeVal.getDerivedFrom().getVersion());
@@ -243,7 +261,7 @@ public class MonitoringPolicyTypeSerializationTest {
         Iterator<JpaToscaProperty> secondDataTypePropertiesIter = secondDataTypeVal.getProperties().values().iterator();
 
         JpaToscaProperty secondDataTypeFirstProperty = secondDataTypePropertiesIter.next();
-        assertEquals(TCA, secondDataTypeFirstProperty.getKey().getParentKeyName());
+        assertEquals(TCA_V1, secondDataTypeFirstProperty.getKey().getParentKeyName());
         assertEquals("domain", secondDataTypeFirstProperty.getKey().getLocalName());
         assertEquals(STRING_TEXT, secondDataTypeFirstProperty.getType().getName());
         assertTrue(secondDataTypeFirstProperty.isRequired());
@@ -256,7 +274,7 @@ public class MonitoringPolicyTypeSerializationTest {
                         .getCompareTo());
 
         JpaToscaProperty secondDataTypeSecondProperty = secondDataTypePropertiesIter.next();
-        assertEquals(TCA, secondDataTypeSecondProperty.getKey().getParentKeyName());
+        assertEquals(TCA_V1, secondDataTypeSecondProperty.getKey().getParentKeyName());
         assertEquals("metricsPerEventName", secondDataTypeSecondProperty.getKey().getLocalName());
         assertEquals("list", secondDataTypeSecondProperty.getType().getName());
         assertTrue(secondDataTypeSecondProperty.isRequired());
@@ -338,7 +356,6 @@ public class MonitoringPolicyTypeSerializationTest {
         assertEquals(5,
                 ((JpaToscaConstraintValidValues) (thirdDataTypeFifthProperty.getConstraints().iterator().next()))
                     .getValidValues().size());
-        ;
 
         JpaToscaProperty thirdDataTypeSixthProperty = thirdDataTypePropertiesIter.next();
         assertEquals(THRESHOLDS, thirdDataTypeSixthProperty.getKey().getParentKeyName());