aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Hernandez <jorge.hernandez-herrero@att.com>2019-12-06 15:07:03 +0000
committerGerrit Code Review <gerrit@onap.org>2019-12-06 15:07:03 +0000
commit3c98ef789246de51d6f1495b7232167d351ca44f (patch)
treee8ac2a06bcad934d8e9b301bc5f064e4d09f4ee3
parentdfc7c87b5f94087d209a2b9f7e2dc6d9a9dce1a8 (diff)
parent19093bbdec52fbe97fa404670aba4af12dc750e0 (diff)
Merge "Add new Operational Policy Type"
-rw-r--r--models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml59
-rw-r--r--models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml70
-rw-r--r--models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml63
-rw-r--r--models-examples/src/main/resources/policies/vFirewallCDS.policy.operational.input.tosca.yaml37
-rw-r--r--models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml169
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java9
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java8
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java14
8 files changed, 327 insertions, 102 deletions
diff --git a/models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml b/models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml
index dda0169f1..e013abd1c 100644
--- a/models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml
+++ b/models-examples/src/main/resources/policies/vCPE.policy.operational.input.tosca.yaml
@@ -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
diff --git a/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml b/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml
index 0f5498804..d7e9b7b22 100644
--- a/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml
+++ b/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.yaml
@@ -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
diff --git a/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml b/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml
index ca36d5309..e3166f7ab 100644
--- a/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml
+++ b/models-examples/src/main/resources/policies/vFirewall.policy.operational.input.tosca.yaml
@@ -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
index 000000000..01da34093
--- /dev/null
+++ b/models-examples/src/main/resources/policies/vFirewallCDS.policy.operational.input.tosca.yaml
@@ -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
index 000000000..dfc96bad2
--- /dev/null
+++ b/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.Common.yaml
@@ -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
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
index 1f577ae21..8e0dcb31c 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
@@ -209,6 +209,15 @@ public class PolicyPersistenceTest {
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);
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
index 9012d84b1..1aedcaf83 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
@@ -177,6 +177,14 @@ public class PolicyToscaPersistenceTest {
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);
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 bf9f92e28..2c62e7fc0 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
@@ -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());
}
}