Allow semantic versioning in all templates in api 95/136695/1
authorFrancescoFioraEst <francesco.fiora@est.tech>
Fri, 24 Nov 2023 15:06:31 +0000 (15:06 +0000)
committerFrancesco Fiora <francesco.fiora@est.tech>
Mon, 27 Nov 2023 11:06:55 +0000 (11:06 +0000)
Issue-ID: POLICY-4888
Change-Id: I824618039f49581cf82ea2ca570960b41cead6bd
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
main/src/test/java/org/onap/policy/api/main/rest/TestApiRestServer.java
main/src/test/resources/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.snapshot.yaml [new file with mode: 0755]
main/src/test/resources/policytypes/onap.restart.tca.snapshot.yaml [new file with mode: 0755]

index 4bcd86c..5896b35 100644 (file)
@@ -107,7 +107,10 @@ class TestApiRestServer extends CommonTestRestController {
 
     private static final String POLICIES = "policies";
 
+    private static final String TOSCA_POLICY_VER_RESOURCE =
+        "policytypes/onap.restart.tca.snapshot.yaml";
     // @formatter:off
+
     private static final String[] TOSCA_POLICY_RESOURCE_NAMES = {"policies/vCPE.policy.monitoring.input.tosca.json",
         "policies/vCPE.policy.monitoring.input.tosca.yaml", "policies/vDNS.policy.monitoring.input.tosca.json",
         "policies/vDNS.policy.monitoring.input.tosca.v2.yaml"};
@@ -118,6 +121,9 @@ class TestApiRestServer extends CommonTestRestController {
     private static final String TOSCA_POLICYTYPE_OP_RESOURCE =
         "policytypes/onap.policies.controlloop.operational.Common.yaml";
 
+    private static final String TOSCA_POLICYTYPE_VER_RESOURCE =
+        "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.snapshot.yaml";
+
     private static final String[] TOSCA_POLICYTYPE_RESOURCE_NAMES = {
         "policytypes/onap.policies.monitoring.tcagen2.yaml",
         "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
@@ -250,6 +256,15 @@ class TestApiRestServer extends CommonTestRestController {
                 .contains("item \"policy type\" value \"IDontExist:1.0.0\" INVALID, not found");
     }
 
+    @Test
+    void testPoliciesVersioning() throws Exception {
+        var rawResponse = createResource(POLICYTYPES, TOSCA_POLICYTYPE_VER_RESOURCE, apiPort);
+        assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
+
+        rawResponse = createResource(POLICIES, TOSCA_POLICY_VER_RESOURCE, apiPort);
+        assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
+    }
+
     @SuppressWarnings("unchecked")
     @Test
     void testToscaCompliantOpDroolsPolicies() throws Exception {
diff --git a/main/src/test/resources/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.snapshot.yaml b/main/src/test/resources/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.snapshot.yaml
new file mode 100755 (executable)
index 0000000..184f877
--- /dev/null
@@ -0,0 +1,212 @@
+{\r
+  "tosca_definitions_version": "tosca_simple_yaml_1_1_0",\r
+  "policy_types": {\r
+    "onap.policies.Monitoring": {\r
+      "derived_from": "tosca.policies.Root",\r
+      "version": "6.0.0",\r
+      "description": "a base policy type for all policies that govern monitoring provisioning"\r
+    },\r
+    "onap.policies.monitoring.cdap.tca.hi.lo.app": {\r
+      "derived_from": "onap.policies.Monitoring",\r
+      "version": "6.0.1-snapshot",\r
+      "properties": {\r
+        "tca_policy": {\r
+          "type": "onap.datatypes.monitoring.tca_policy",\r
+          "description": "TCA Policy JSON",\r
+          "required": true\r
+        }\r
+      }\r
+    }\r
+  },\r
+  "data_types": {\r
+    "onap.datatypes.monitoring.metricsPerEventName": {\r
+      "derived_from": "tosca.datatypes.Root",\r
+      "properties": {\r
+        "controlLoopSchemaType": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",\r
+          "constraints": [\r
+            {\r
+              "valid_values": [\r
+                "VM",\r
+                "VNF"\r
+              ]\r
+            }\r
+          ]\r
+        },\r
+        "eventName": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Event name to which thresholds need to be applied"\r
+        },\r
+        "policyName": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "TCA Policy Scope Name"\r
+        },\r
+        "policyScope": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "TCA Policy Scope"\r
+        },\r
+        "policyVersion": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "TCA Policy Scope Version"\r
+        },\r
+        "thresholds": {\r
+          "type": "list",\r
+          "required": true,\r
+          "description": "Thresholds associated with eventName",\r
+          "entry_schema": {\r
+            "type": "onap.datatypes.monitoring.thresholds"\r
+          }\r
+        }\r
+      }\r
+    },\r
+    "onap.datatypes.monitoring.tca_policy": {\r
+      "derived_from": "tosca.datatypes.Root",\r
+      "properties": {\r
+        "domain": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Domain name to which TCA needs to be applied",\r
+          "default": "measurementsForVfScaling",\r
+          "constraints": [\r
+            {\r
+              "equal": "measurementsForVfScaling"\r
+            }\r
+          ]\r
+        },\r
+        "metricsPerEventName": {\r
+          "type": "list",\r
+          "required": true,\r
+          "description": "Contains eventName and threshold details that need to be applied to given eventName",\r
+          "entry_schema": {\r
+            "type": "onap.datatypes.monitoring.metricsPerEventName"\r
+          }\r
+        }\r
+      }\r
+    },\r
+    "onap.datatypes.monitoring.thresholds": {\r
+      "derived_from": "tosca.datatypes.Root",\r
+      "properties": {\r
+        "closedLoopControlName": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Closed Loop Control Name associated with the threshold"\r
+        },\r
+        "closedLoopEventStatus": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Closed Loop Event Status of the threshold",\r
+          "constraints": [\r
+            {\r
+              "valid_values": [\r
+                "ONSET",\r
+                "ABATED"\r
+              ]\r
+            }\r
+          ]\r
+        },\r
+        "direction": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Direction of the threshold",\r
+          "constraints": [\r
+            {\r
+              "valid_values": [\r
+                "LESS",\r
+                "LESS_OR_EQUAL",\r
+                "GREATER",\r
+                "GREATER_OR_EQUAL",\r
+                "EQUAL"\r
+              ]\r
+            }\r
+          ]\r
+        },\r
+        "fieldPath": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Json field Path as per CEF message which needs to be analyzed for TCA",\r
+          "constraints": [\r
+            {\r
+              "valid_values": [\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",\r
+                "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",\r
+                "$.event.measurementsForVfScalingFields.meanRequestLatency",\r
+                "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",\r
+                "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",\r
+                "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",\r
+                "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",\r
+                "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",\r
+                "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"\r
+              ]\r
+            }\r
+          ]\r
+        },\r
+        "severity": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Threshold Event Severity",\r
+          "constraints": [\r
+            {\r
+              "valid_values": [\r
+                "CRITICAL",\r
+                "MAJOR",\r
+                "MINOR",\r
+                "WARNING",\r
+                "NORMAL"\r
+              ]\r
+            }\r
+          ]\r
+        },\r
+        "thresholdValue": {\r
+          "type": "integer",\r
+          "required": true,\r
+          "description": "Threshold value for the field Path inside CEF message"\r
+        },\r
+        "version": {\r
+          "type": "string",\r
+          "required": true,\r
+          "description": "Version number associated with the threshold"\r
+        }\r
+      }\r
+    }\r
+  }\r
+}\r
diff --git a/main/src/test/resources/policytypes/onap.restart.tca.snapshot.yaml b/main/src/test/resources/policytypes/onap.restart.tca.snapshot.yaml
new file mode 100755 (executable)
index 0000000..4d68df9
--- /dev/null
@@ -0,0 +1,51 @@
+{\r
+  "tosca_definitions_version": "tosca_simple_yaml_1_1_0",\r
+  "topology_template": {\r
+    "policies": [\r
+      {\r
+        "onap.restart.mytca": {\r
+          "type": "onap.policies.monitoring.cdap.tca.hi.lo.app",\r
+          "type_version": "6.0.1-snapshot",\r
+          "version": "6.0.1-snapshot",\r
+          "metadata": {\r
+            "policy-id": "onap.restart.mytca"\r
+          },\r
+          "properties": {\r
+            "tca_policy": {\r
+              "domain": "measurementsForVfScaling",\r
+              "metricsPerEventName": [\r
+                {\r
+                  "eventName": "Measurement_vGMUX",\r
+                  "controlLoopSchemaType": "VNF",\r
+                  "policyScope": "DCAE",\r
+                  "policyName": "DCAE.Config_tca-hi-lo",\r
+                  "policyVersion": "v0.0.1",\r
+                  "thresholds": [\r
+                    {\r
+                      "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",\r
+                      "version": "1.0.2",\r
+                      "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value",\r
+                      "thresholdValue": 0,\r
+                      "direction": "EQUAL",\r
+                      "severity": "MAJOR",\r
+                      "closedLoopEventStatus": "ABATED"\r
+                    },\r
+                    {\r
+                      "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",\r
+                      "version": "1.0.2",\r
+                      "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value",\r
+                      "thresholdValue": 0,\r
+                      "direction": "GREATER",\r
+                      "severity": "CRITICAL",\r
+                      "closedLoopEventStatus": "ONSET"\r
+                    }\r
+                  ]\r
+                }\r
+              ]\r
+            }\r
+          }\r
+        }\r
+      }\r
+    ]\r
+  }\r
+}
\ No newline at end of file