From: Pamela Dragosh Date: Wed, 12 Feb 2020 16:35:07 +0000 (-0500) Subject: Add missing entry_schema for operational policy type X-Git-Tag: 2.2.1~80 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fmodels.git;a=commitdiff_plain;h=a807429423c70dbbd2a0967facdc426b4d1b853b Add missing entry_schema for operational policy type Also ensure the json for vFirewall matches the yaml. We will need to clean up some of the other legacy operational policies. Or at least rename them. Renamed legacy Operational policies to avoid confusion. Fixed wrong derived_from policy types. Operational Policy Types are now solely for new TOSCA compliant operational policy types. Issue-ID: POLICY-2146 Change-Id: Ia0bcabe6cca8e197f1bec8157a3004a420033969 Signed-off-by: Pamela Dragosh --- diff --git a/models-examples/src/main/resources/policies/vCPE.policy.operational.input.json b/models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.input.json similarity index 100% rename from models-examples/src/main/resources/policies/vCPE.policy.operational.input.json rename to models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.input.json diff --git a/models-examples/src/main/resources/policies/vCPE.policy.operational.output.json b/models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.output.json similarity index 100% rename from models-examples/src/main/resources/policies/vCPE.policy.operational.output.json rename to models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.output.json diff --git a/models-examples/src/main/resources/policies/vCPE.policy.operational.output.tosca.yaml b/models-examples/src/main/resources/policies/vCPE.policy.operational.output.tosca.yaml index e4a06947f..2c7981a29 100644 --- a/models-examples/src/main/resources/policies/vCPE.policy.operational.output.tosca.yaml +++ b/models-examples/src/main/resources/policies/vCPE.policy.operational.output.tosca.yaml @@ -23,7 +23,7 @@ topology_template: actor: APPC recipe: Restart target: - type: VM + targetType: VM retry: 3 timeout: 1200 success: final_success diff --git a/models-examples/src/main/resources/policies/vDNS.policy.operational.input.json b/models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.input.json similarity index 100% rename from models-examples/src/main/resources/policies/vDNS.policy.operational.input.json rename to models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.input.json diff --git a/models-examples/src/main/resources/policies/vDNS.policy.operational.output.json b/models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.output.json similarity index 100% rename from models-examples/src/main/resources/policies/vDNS.policy.operational.output.json rename to models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.output.json diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.json b/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.json index 63c0d8b85..f6f15fe50 100644 --- a/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.json +++ b/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.json @@ -4,32 +4,32 @@ "policies": [ { "operational.modifyconfig": { - "type": "onap.policies.controlloop.Operational", - "version": "1.0.0", + "type": "onap.policies.controlloop.operational.common.Drools", + "type_version": "1.0.0", "metadata": { "policy-id": "operational.modifyconfig" }, "properties": { - "controlLoop": { - "version": "2.0.0", - "controlLoopName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", - "trigger_policy": "unique-policy-id-1-modifyConfig", - "timeout": 1200, - "abatement": false - }, - "policies": [ + "id": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", + "timeout": 1200, + "abatement": false, + "trigger": "unique-policy-id-1-modifyConfig", + "operations": [ { "id": "unique-policy-id-1-modifyConfig", - "name": "modify packet gen config", - "description": null, - "actor": "APPC", - "recipe": "ModifyConfig", - "target": { - "resourceID": "Eace933104d443b496b8.nodes.heat.vpg", - "type": "VNF" + "description": "Modify the packet generator", + "operation": { + "actor": "APPC", + "operation": "ModifyConfig", + "target": { + "targetType": "VNF", + "entityId": { + "resourceID": "bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38" + } + } }, - "retry": 0, "timeout": 300, + "retries": 0, "success": "final_success", "failure": "final_failure", "failure_timeout": "final_failure_timeout", @@ -37,7 +37,8 @@ "failure_exception": "final_failure_exception", "failure_guard": "final_failure_guard" } - ] + ], + "controllerName": "usecases" } } } diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.json b/models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.input.json similarity index 100% rename from models-examples/src/main/resources/policies/vFirewall.policy.operational.input.json rename to models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.input.json diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.operational.output.json b/models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.output.json similarity index 100% rename from models-examples/src/main/resources/policies/vFirewall.policy.operational.output.json rename to models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.output.json diff --git a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.Operational.yaml b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.Operational.yaml index f21fd5afb..773e0c90b 100644 --- a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.Operational.yaml +++ b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.Operational.yaml @@ -3,4 +3,4 @@ policy_types: onap.policies.controlloop.Operational: derived_from: tosca.policies.Root version: 1.0.0 - description: Operational Policy for Control Loops \ No newline at end of file + description: Operational Policy for Control Loops Supporting Legacy YAML Policy Definition. \ No newline at end of file diff --git a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml index 0dbe7e41a..4a918bef1 100644 --- a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml +++ b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml @@ -3,7 +3,9 @@ policy_types: onap.policies.controlloop.operational.Common: derived_from: tosca.policies.Root version: 1.0.0 - description: Operational Policy for Control Loop execution + description: | + Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant + Policy Types. This does NOT support the legacy Policy YAML policy type. properties: id: type: string @@ -31,36 +33,7 @@ policy_types: entry_schema: type: onap.datatype.controlloop.Operation - onap.policies.controlloop.operational.common.Drools: - derived_from: onap.policies.controlloop.operational.Common - type_version: 1.0.0 - version: 1.0.0 - description: Operational policies for Drools PDP - properties: - controllerName: - type: string - description: Drools controller properties - required: false - data_types: - # TBD if this is needed - onap.datatype.controlloop.operation.Failure: - derived_from: tosca.datatypes.Root - description: Captures information of an operational failure performed for control loop - properties: - messages: - type: string - description: error message - required: true - category: - type: string - description: | - The category the error occurred in. Whether this is a general error from the actor, or the operation - timed out, retries were exhausted in trying to execute the operation, a guard policy prevented the - operation from occuring, or an exception in the system caused the failure. - constraints: - - valid_values: [error, timeout, retries, guard, exception] - onap.datatype.controlloop.Target: derived_from: tosca.datatypes.Root description: Definition for a entity in A&AI to perform a control loop operation on @@ -77,6 +50,8 @@ data_types: Map of values that identify the resource. If none are provided, it is assumed that the entity that generated the ONSET event will be the target. required: false + entry_schema: + type: string onap.datatype.controlloop.Actor: derived_from: tosca.datatypes.Root @@ -91,7 +66,7 @@ data_types: description: The operation the actor is performing. required: true target: - type: string + type: onap.datatype.controlloop.Target description: The resource the operation should be performed on. required: true metadata: diff --git a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Apex.yaml b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Apex.yaml index e1555e8ed..9c6c6120d 100644 --- a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Apex.yaml +++ b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Apex.yaml @@ -2,6 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: onap.policies.controlloop.operational.common.Apex: derived_from: onap.policies.controlloop.operational.Common + type_version: 1.0.0 version: 1.0.0 description: Operational policies for Apex PDP properties: diff --git a/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml new file mode 100644 index 000000000..2d793cc4b --- /dev/null +++ b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml @@ -0,0 +1,13 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policy_types: + onap.policies.controlloop.operational.common.Drools: + derived_from: onap.policies.controlloop.operational.Common + type_version: 1.0.0 + version: 1.0.0 + description: Operational policies for Drools PDP + properties: + controllerName: + type: string + description: Drools controller properties + required: false + diff --git a/models-examples/src/main/resources/policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml b/models-examples/src/main/resources/policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml index 4f124a2f1..8419b096f 100644 --- a/models-examples/src/main/resources/policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml +++ b/models-examples/src/main/resources/policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml @@ -5,7 +5,7 @@ policy_types: description: a base policy type for all policies that govern monitoring provisioning version: 1.0.0 onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server: - derived_from: policy.nodes.Root + derived_from: onap.policies.Monitoring version: 1.0.0 properties: buscontroller_feed_publishing_endpoint: diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java index 47855c4cd..30428b099 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. + * Modifications Copyright (C) 2020 AT&T. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,15 +56,15 @@ public class PolicyLegacyOperationalPersistenceTest { // @formatter:off private String[] policyInputResourceNames = { - "policies/vCPE.policy.operational.input.json", - "policies/vDNS.policy.operational.input.json", - "policies/vFirewall.policy.operational.input.json" + "policies/vCPE.policy.operational.legacy.input.json", + "policies/vDNS.policy.operational.legacy.input.json", + "policies/vFirewall.policy.operational.legacy.input.json" }; private String[] policyOutputResourceNames = { - "policies/vCPE.policy.operational.output.json", - "policies/vDNS.policy.operational.output.json", - "policies/vFirewall.policy.operational.output.json" + "policies/vCPE.policy.operational.legacy.output.json", + "policies/vDNS.policy.operational.legacy.output.json", + "policies/vFirewall.policy.operational.legacy.output.json" }; // @formatter:on diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java index 0bf371022..858ac09fe 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java @@ -87,6 +87,7 @@ public class ToscaPolicyFilterTest { for (String policyResourceName : policyResourceNames) { String policyString = ResourceUtils.getResourceAsString(policyResourceName); if (policyResourceName.endsWith("yaml")) { + LOGGER.info("loading {}", policyResourceName); Object yamlObject = new Yaml().load(policyString); policyString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); } @@ -150,7 +151,7 @@ public class ToscaPolicyFilterTest { assertEquals(VERSION_100, filteredList.get(7).getVersion()); assertEquals(VERSION_100, filteredList.get(12).getVersion()); - assertEquals(24, policyList.size()); + assertEquals(23, policyList.size()); assertEquals(22, filteredList.size()); policyList.get(10).setVersion("2.0.0"); @@ -172,7 +173,7 @@ public class ToscaPolicyFilterTest { public void testFilterNameVersion() { ToscaPolicyFilter filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").build(); List filteredList = filter.filter(policyList); - assertEquals(2, filteredList.size()); + assertEquals(1, filteredList.size()); filter = ToscaPolicyFilter.builder().name("guard.frequency.scaleout").build(); filteredList = filter.filter(policyList); @@ -184,7 +185,7 @@ public class ToscaPolicyFilterTest { filter = ToscaPolicyFilter.builder().version(VERSION_100).build(); filteredList = filter.filter(policyList); - assertEquals(22, filteredList.size()); + assertEquals(21, filteredList.size()); filter = ToscaPolicyFilter.builder().name("OSDF_CASABLANCA.SubscriberPolicy_v1").version(VERSION_100).build(); filteredList = filter.filter(policyList); @@ -192,7 +193,7 @@ public class ToscaPolicyFilterTest { filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").version(VERSION_100).build(); filteredList = filter.filter(policyList); - assertEquals(1, filteredList.size()); + assertEquals(0, filteredList.size()); } @Test @@ -200,11 +201,11 @@ public class ToscaPolicyFilterTest { // null pattern ToscaPolicyFilter filter = ToscaPolicyFilter.builder().versionPrefix(null).build(); List filteredList = filter.filter(policyList); - assertEquals(24, filteredList.size()); + assertEquals(23, filteredList.size()); filter = ToscaPolicyFilter.builder().versionPrefix("1.").build(); filteredList = filter.filter(policyList); - assertEquals(22, filteredList.size()); + assertEquals(21, filteredList.size()); filter = ToscaPolicyFilter.builder().versionPrefix("100.").build(); filteredList = filter.filter(policyList); @@ -215,7 +216,11 @@ public class ToscaPolicyFilterTest { public void testFilterTypeVersion() { ToscaPolicyFilter filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").build(); List filteredList = filter.filter(policyList); - assertEquals(1, filteredList.size()); + assertEquals(0, filteredList.size()); + + filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.operational.common.Apex").build(); + filteredList = filter.filter(policyList); + assertEquals(0, filteredList.size()); filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.operational.common.Drools").build(); filteredList = filter.filter(policyList); @@ -231,7 +236,7 @@ public class ToscaPolicyFilterTest { filter = ToscaPolicyFilter.builder().typeVersion(VERSION_000).build(); filteredList = filter.filter(policyList); - assertEquals(4, filteredList.size()); + assertEquals(3, filteredList.size()); filter = ToscaPolicyFilter.builder().type("onap.policies.optimization.resource.HpaPolicy") .typeVersion(VERSION_100).build(); @@ -241,6 +246,6 @@ public class ToscaPolicyFilterTest { filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").typeVersion(VERSION_000) .build(); filteredList = filter.filter(policyList); - assertEquals(1, filteredList.size()); + assertEquals(0, filteredList.size()); } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapperTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapperTest.java index 0aa1da0d7..4dcfeafc9 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapperTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapperTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020 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. @@ -71,7 +71,7 @@ public class LegacyOperationalPolicyMapperTest { JpaToscaServiceTemplate policyTypeServiceTemplate = new JpaToscaServiceTemplate(); policyTypeServiceTemplate.fromAuthorative(policyTypes); - String vcpePolicyJson = ResourceUtils.getResourceAsString("policies/vCPE.policy.operational.input.json"); + String vcpePolicyJson = ResourceUtils.getResourceAsString("policies/vCPE.policy.operational.legacy.input.json"); LegacyOperationalPolicy legacyOperationalPolicy = standardCoder.decode(vcpePolicyJson, LegacyOperationalPolicy.class); diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider4LegacyOperationalTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider4LegacyOperationalTest.java index ec03122a6..4d0fd6fd6 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider4LegacyOperationalTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider4LegacyOperationalTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020 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. @@ -51,8 +51,8 @@ import org.yaml.snakeyaml.Yaml; */ public class LegacyProvider4LegacyOperationalTest { private static final String POLICY_ID_IS_NULL = "^policyId is marked .*on.*ull but is null$"; - private static final String VCPE_OUTPUT_JSON = "policies/vCPE.policy.operational.output.json"; - private static final String VCPE_INPUT_JSON = "policies/vCPE.policy.operational.input.json"; + private static final String VCPE_OUTPUT_JSON = "policies/vCPE.policy.operational.legacy.output.json"; + private static final String VCPE_INPUT_JSON = "policies/vCPE.policy.operational.legacy.input.json"; private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$"; private PfDao pfDao; private StandardCoder standardCoder; 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 3c62a7424..0a8283e98 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 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2020 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. @@ -382,7 +382,7 @@ public class MonitoringPolicyTypeSerializationTest { Entry secondPolicyType = policyTypesIter.next(); assertEquals(DCAE, secondPolicyType.getKey().getName()); assertEquals(VERSION_100, secondPolicyType.getKey().getVersion()); - assertEquals("policy.nodes.Root", secondPolicyType.getValue().getDerivedFrom().getName()); + assertEquals("onap.policies.Monitoring", secondPolicyType.getValue().getDerivedFrom().getName()); assertTrue(secondPolicyType.getValue().getProperties().size() == 2); Iterator propertiesIter = secondPolicyType.getValue().getProperties().values().iterator();