From 6a75c3cd6b96a8ceef4ba02cf13832f88a15e352 Mon Sep 17 00:00:00 2001 From: jhh Date: Wed, 17 Aug 2022 18:47:56 -0500 Subject: [PATCH] Added onap.policies.monitoring.tcagen2 version 2.0.0 Issue-ID: POLICY-4317 Signed-off-by: jhh Change-Id: I34158cd21777b6127fd4a306b73fa3446e302c99 Signed-off-by: jhh --- ...vFirewall.policy.monitoring.input.tosca.v2.json | 186 +++++++++++++++++++++ ...vFirewall.policy.monitoring.input.tosca.v2.yaml | 149 +++++++++++++++++ .../onap.policies.monitoring.tcagen2.v2.yaml | 162 ++++++++++++++++++ .../MonitoringPolicySerializationTest.java | 46 +++-- .../MonitoringPolicyTypeSerializationTest.java | 49 ++++-- 5 files changed, 566 insertions(+), 26 deletions(-) create mode 100644 models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.json create mode 100644 models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.yaml create mode 100644 models-examples/src/main/resources/policytypes/onap.policies.monitoring.tcagen2.v2.yaml 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 index 000000000..790fa33ff --- /dev/null +++ b/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.json @@ -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 index 000000000..3a2aef164 --- /dev/null +++ b/models-examples/src/main/resources/policies/vFirewall.policy.monitoring.input.tosca.v2.yaml @@ -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 index 000000000..34f31f741 --- /dev/null +++ b/models-examples/src/main/resources/policytypes/onap.policies.monitoring.tcagen2.v2.yaml @@ -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 diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java index 98ced3b41..4e491fde3 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java @@ -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)); diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java index 7135da0bf..64027b976 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java @@ -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 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 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 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()); -- 2.16.6