Add new Operational Policy Type 65/97965/11
authorPamela Dragosh <pdragosh@research.att.com>
Tue, 5 Nov 2019 14:35:30 +0000 (09:35 -0500)
committerPamela Dragosh <pdragosh@research.att.com>
Thu, 5 Dec 2019 18:38:37 +0000 (13:38 -0500)
New operational policy type for Frankfurt. Updating examples.

added sample CLAMP metadata.

Issue-ID: POLICY-2217
Change-Id: I941c3a4187a4d164bf793ef2d82c34fccc1a2c35
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml
models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml
models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml
models-examples/src/main/resources/policies/vFirewallCDS.policy.operational.input.tosca.yaml [new file with mode: 0644]
models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml [new file with mode: 0644]
models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java

index dda0169..e013abd 100644 (file)
@@ -1,33 +1,30 @@
 tosca_definitions_version: tosca_simple_yaml_1_0_0
 topology_template:
-   policies:
-     -
-      operational.restart:
-         type: onap.policies.controlloop.Operational
-         version: 1.0.0
-         metadata: 
-           policy-id: operational.restart
-         properties:
-           controlLoop:
-             version: 2.0.0
-             controlLoopName: ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
-             trigger_policy: unique-policy-id-1-restart
-             timeout: 3600
-             abatement: true
-           policies:
-             - id: unique-policy-id-1-restart
-               name: Restart the VM
-               description:
-               actor: APPC
-               recipe: Restart
-               target:
-                 type: VM
-               retry: 3
-               timeout: 1200
-               success: final_success
-               failure: final_failure
-               failure_timeout: final_failure_timeout
-               failure_retries: final_failure_retries
-               failure_exception: final_failure_exception
-               failure_guard: final_failure_guard
\ No newline at end of file
+    policies:
+    -   operational.restart:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            metadata:
+                policy-id: operational.restart
+            properties:
+                id: ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+                timeout: 3600
+                abatement: true
+                trigger: unique-policy-id-1-restart
+                operations:
+                -   id: unique-policy-id-1-restart
+                    description: Restart the VM
+                    operation:
+                        actor: APPC
+                        recipe: Restart
+                        target:
+                            type: VNF
+                    timeout: 1200
+                    retries: 3
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: usecases
index 0f54988..d7e9b7b 100644 (file)
@@ -1,35 +1,39 @@
 tosca_definitions_version: tosca_simple_yaml_1_0_0
 topology_template:
-   policies:
-      -
-        operational.scaleout:
-           type: onap.policies.controlloop.Operational
-           version: 1.0.0
-           metadata: 
-             policy-id: operational.scaleout
-           properties:
-           controlLoop:
-             version: 2.0.0
-             controlLoopName: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
-             trigger_policy: unique-policy-id-1-scale-up
-             timeout: 1200
-             abatement: false
-           policies:
-             - id: unique-policy-id-1-scale-up
-               name: Create a new VF Module
-               description:
-               actor: SO
-               recipe: VF Module Create
-               target:
-                 type: VNF
-               payload:
-                 requestParameters: '{"usePreload":true,"userParams":[]}'
-                 configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
-               retry: 0
-               timeout: 1200
-               success: final_success
-               failure: final_failure
-               failure_timeout: final_failure_timeout
-               failure_retries: final_failure_retries
-               failure_exception: final_failure_exception
-               failure_guard: final_failure_guard
\ No newline at end of file
+    policies:
+    -   operational.scaleout:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            metadata:
+                policy-id: operational.scaleout
+            properties:
+                id: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+                timeout: 1200
+                abatement: false
+                trigger: unique-policy-id-1-scale-up
+                operations:
+                -   id: unique-policy-id-1-scale-up
+                    description: Create a new VF Module
+                    operation:
+                        actor: SO
+                        operation: VF Module Create
+                        target:
+                            type: VFMODULE
+                            entityIds:
+                                modelInvariantId: e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e
+                                modelVersionId: 94b18b1d-cc91-4f43-911a-e6348665f292
+                                modelName: VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0
+                                modelVersion: 1
+                                modelCustomizationId: 47958575-138f-452a-8c8d-d89b595f8164
+                        payload:
+                            requestParameters: '{"usePreload":true,"userParams":[]}'
+                            configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
+                    timeout: 1200
+                    retries: 0
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: usecases
index ca36d53..e3166f7 100644 (file)
@@ -1,35 +1,32 @@
 tosca_definitions_version: tosca_simple_yaml_1_0_0
 topology_template:
-   policies:
-     -
-      operational.modifyconfig:
-         type: onap.policies.controlloop.Operational
-         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: unique-policy-id-1-modifyConfig
-                name: modify packet gen config
-                description:
-                actor: APPC
-                recipe: ModifyConfig
-                target:
-                  # TBD - Cannot be known until instantiation is done
-                  resourceID: Eace933104d443b496b8.nodes.heat.vpg
-                  type: VNF
-                retry: 0
-                timeout: 300
-                success: final_success
-                failure: final_failure
-                failure_timeout: final_failure_timeout
-                failure_retries: final_failure_retries
-                failure_exception: final_failure_exception
-                failure_guard: final_failure_guard
\ No newline at end of file
+    policies:
+    -   operational.modifyconfig:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            metadata:
+                policy-id: operational.modifyconfig
+            properties:
+                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
+                    description: Modify the packet generator
+                    operation:
+                        actor: APPC
+                        operation: ModifyConfig
+                        target:
+                            targetType: VNF
+                            entityId:
+                                resourceID: bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38
+                    timeout: 300
+                    retries: 0
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: usecases
\ No newline at end of file
diff --git a/models-examples/src/main/resources/policies/vFirewallCDS.policy.operational.input.tosca.yaml b/models-examples/src/main/resources/policies/vFirewallCDS.policy.operational.input.tosca.yaml
new file mode 100644 (file)
index 0000000..01da340
--- /dev/null
@@ -0,0 +1,37 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+topology_template:
+    policies:
+    -   operational.modifyconfig.cds:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            metadata:
+                policy-id: operational.modifyconfig.cds
+            properties:
+                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
+                    description: Modify the packet generator
+                    operation:
+                        actor: CDS
+                        operation: ModifyConfig
+                        target:
+                            targetType: VNF
+                            entityId:
+                                resourceID: bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38
+                        payload:
+                            artifact_name: vfw-cds
+                            artifact_version: 1.0.0
+                            mode: async
+                            data: '{"mapInfo":{"key":"val"},"arrayInfo":["one","two"],"paramInfo":"val"}'
+                    timeout: 300
+                    retries: 0
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: usecases
\ 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
new file mode 100644 (file)
index 0000000..dfc96ba
--- /dev/null
@@ -0,0 +1,169 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+policy_types:
+    onap.policies.controlloop.operational.Common:
+        derived_from: tosca.policies.Root
+        version: 1.0.0
+        description: Operational Policy for Control Loop execution
+        properties:
+            id:
+                type: String
+                description: The unique control loop id.
+                required: true
+            timeout:
+                type: Integer
+                description: |
+                    Overall timeout for executing all the operations. This timeout should equal or exceed the total
+                    timeout for each operation listed.
+                required: true
+            abatement:
+                type: Boolean
+                description: Whether an abatement event message will be expected for the control loop from DCAE.
+                required: true
+                default: false
+            trigger:
+                type: String
+                description: Initial operation to execute upon receiving an Onset event message for the Control Loop.
+                required: true
+            operations:
+                type: List
+                description: List of operations to be performed when Control Loop is triggered.
+                required: true
+                entry_schema:
+                    type: onap.datatype.controlloop.Operation
+
+    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:
+
+    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
+        properties:
+            targetType:
+                type: String
+                description: Category for the target type
+                required: true
+                constraints:
+                - valid_values: [VNF, VM, VFMODULE, PNF]
+            entityIds:
+                type: Map
+                description: |
+                    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
+
+    onap.datatype.controlloop.Actor:
+        derived_from: tosca.datatypes.Root
+        description: An actor/operation/target definition
+        properties:
+            actor:
+                type: String
+                description: The actor performing the operation.
+                required: true
+            operation:
+                type: String
+                description: The operation the actor is performing.
+                required: true
+            target:
+                type: String
+                description: The resource the operation should be performed on.
+                required: true
+                metadata:
+                    clamp_possible_values: <string:see clamp project for syntax>
+            payload:
+                type: Map
+                description: Name/value pairs of payload information passed by Policy to the actor
+                required: false
+                entry_schema:
+                    type: String
+
+    onap.datatype.controlloop.Operation:
+        derived_from: tosca.datatypes.Root
+        description: An operation supported by an actor
+        properties:
+            id:
+                type: String
+                description: Unique identifier for the operation
+                required: true
+            description:
+                type: String
+                description: A user-friendly description of the intent for the operation
+                required: false
+            operation:
+                type: onap.datatype.controlloop.Actor
+                description: The definition of the operation to be performed.
+                required: true
+                metadata:
+                    clamp_possible_values: <string:see clamp project for syntax>
+            timeout:
+                type: Integer
+                description: The amount of time for the actor to perform the operation.
+                required: true
+            retries:
+                type: Integer
+                description: The number of retries the actor should attempt to perform the operation.
+                required: true
+                default: 0
+            success:
+                type: String
+                description: Points to the operation to invoke on success. A value of "final_success" indicates and end to the operation.
+                required: false
+                default: final_success
+            failure:
+                type: String
+                description: Points to the operation to invoke on Actor operation failure.
+                required: false
+                default: final_failure
+            failure_timeout:
+                type: String
+                description: Points to the operation to invoke when the time out for the operation occurs.
+                required: false
+                default: final_failure_timeout
+            failure_retries:
+                type: String
+                description: Points to the operation to invoke when the current operation has exceeded its max retries.
+                required: false
+                default: final_failure_retries
+            failure_exception:
+                type: String
+                description: Points to the operation to invoke when the current operation causes an exception.
+                required: false
+                default: final_failure_exception
+            failure_guard:
+                type: String
+                description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.
+                required: false
+                default: final_failure_guard     
index 1f577ae..8e0dcb3 100644 (file)
@@ -208,6 +208,15 @@ public class PolicyPersistenceTest {
         assertNotNull(toscaServiceTemplatePolicyType);
         databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType);
 
+        yamlObject = new Yaml().load(
+                ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.operational.Common.yaml"));
+        yamlAsJsonString = new StandardCoder().encode(yamlObject);
+
+        toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+        assertNotNull(toscaServiceTemplatePolicyType);
+        databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType);
+
         yamlObject = new Yaml().load(
                 ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml"));
         yamlAsJsonString = new StandardCoder().encode(yamlObject);
index 9012d84..1aedcaf 100644 (file)
@@ -176,6 +176,14 @@ public class PolicyToscaPersistenceTest {
         assertNotNull(toscaServiceTemplatePolicyType);
         databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType);
 
+        yamlObject = new Yaml().load(
+                ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.operational.Common.yaml"));
+        yamlAsJsonString = new StandardCoder().encode(yamlObject);
+
+        toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+        assertNotNull(toscaServiceTemplatePolicyType);
+        databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType);
         yamlObject = new Yaml().load(
                 ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml"));
         yamlAsJsonString = new StandardCoder().encode(yamlObject);
index bf9f92e..2c62e7f 100644 (file)
@@ -182,7 +182,7 @@ public class ToscaPolicyFilterTest {
 
         filter = ToscaPolicyFilter.builder().version(VERSION_100).build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(15, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().name("OSDF_CASABLANCA.SubscriberPolicy_v1").version(VERSION_100).build();
         filteredList = filter.filter(policyList);
@@ -202,7 +202,7 @@ public class ToscaPolicyFilterTest {
 
         filter = ToscaPolicyFilter.builder().versionPrefix("1.").build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(14, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().versionPrefix("100.").build();
         filteredList = filter.filter(policyList);
@@ -213,7 +213,11 @@ public class ToscaPolicyFilterTest {
     public void testFilterTypeVersion() {
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").build();
         List<ToscaPolicy> filteredList = filter.filter(policyList);
-        assertEquals(4, filteredList.size());
+        assertEquals(1, filteredList.size());
+
+        filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.operational.common.Drools").build();
+        filteredList = filter.filter(policyList);
+        assertEquals(3, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().type("onap.policies.monitoring.cdap.tca.hi.lo.app").build();
         filteredList = filter.filter(policyList);
@@ -225,7 +229,7 @@ public class ToscaPolicyFilterTest {
 
         filter = ToscaPolicyFilter.builder().typeVersion(VERSION_000).build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(14, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().type("onap.policies.optimization.HpaPolicy").typeVersion(VERSION_000)
                         .build();
@@ -235,6 +239,6 @@ public class ToscaPolicyFilterTest {
         filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").typeVersion(VERSION_000)
                         .build();
         filteredList = filter.filter(policyList);
-        assertEquals(4, filteredList.size());
+        assertEquals(1, filteredList.size());
     }
 }