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"};
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",
.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 {
--- /dev/null
+{\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
--- /dev/null
+{\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