Add missing entry_schema for operational policy type 30/101630/8
authorPamela Dragosh <pdragosh@research.att.com>
Wed, 12 Feb 2020 16:35:07 +0000 (11:35 -0500)
committerPamela Dragosh <pdragosh@research.att.com>
Mon, 17 Feb 2020 16:02:38 +0000 (11:02 -0500)
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 <pdragosh@research.att.com>
18 files changed:
models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.input.json [moved from models-examples/src/main/resources/policies/vCPE.policy.operational.input.json with 100% similarity]
models-examples/src/main/resources/policies/vCPE.policy.operational.legacy.output.json [moved from models-examples/src/main/resources/policies/vCPE.policy.operational.output.json with 100% similarity]
models-examples/src/main/resources/policies/vCPE.policy.operational.output.tosca.yaml
models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.input.json [moved from models-examples/src/main/resources/policies/vDNS.policy.operational.input.json with 100% similarity]
models-examples/src/main/resources/policies/vDNS.policy.operational.legacy.output.json [moved from models-examples/src/main/resources/policies/vDNS.policy.operational.output.json with 100% similarity]
models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.json
models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.input.json [moved from models-examples/src/main/resources/policies/vFirewall.policy.operational.input.json with 100% similarity]
models-examples/src/main/resources/policies/vFirewall.policy.operational.legacy.output.json [moved from models-examples/src/main/resources/policies/vFirewall.policy.operational.output.json with 100% similarity]
models-examples/src/main/resources/policytypes/onap.policies.controlloop.Operational.yaml
models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml
models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Apex.yaml
models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml [new file with mode: 0644]
models-examples/src/main/resources/policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml
models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapperTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider4LegacyOperationalTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java

index e4a0694..2c7981a 100644 (file)
@@ -23,7 +23,7 @@ topology_template:
                actor: APPC
                recipe: Restart
                target:
-                 type: VM
+                 targetType: VM
                retry: 3
                timeout: 1200
                success: final_success
index 63c0d8b..f6f15fe 100644 (file)
@@ -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"
                     }
                 }
             }
index f21fd5a..773e0c9 100644 (file)
@@ -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
index 0dbe7e4..4a918be 100644 (file)
@@ -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:
index e1555e8..9c6c612 100644 (file)
@@ -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 (file)
index 0000000..2d793cc
--- /dev/null
@@ -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
+
index 4f124a2..8419b09 100644 (file)
@@ -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:
index 47855c4..30428b0 100644 (file)
@@ -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
 
index 0bf3710..858ac09 100644 (file)
@@ -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<ToscaPolicy> 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<ToscaPolicy> 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<ToscaPolicy> 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());
     }
 }
index 0aa1da0..4dcfeaf 100644 (file)
@@ -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);
 
index ec03122..4d0fd6f 100644 (file)
@@ -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;
index 3c62a74..0a8283e 100644 (file)
@@ -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<PfConceptKey, JpaToscaPolicyType> 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<JpaToscaProperty> propertiesIter = secondPolicyType.getValue().getProperties().values().iterator();