New component capabilities for Frankfurt, i.e. the functional enhancements.
Frankfurt release targets the completion of the work started in Dublin to re-build the Policy Framework infrastructure. The new capabilities were to complete missing functionality that was previously in the legacy components, or was targeted to be part of the platform and was not able to be finished in Dublin:
Policy Update Notifications James Hahn
- REQ-25Getting issue details... STATUS - When policies are deployed/undeployed (eg new version or removal), then some ONAP components need more immediate notification. Notably, DCAE microservices need to respond quickly to policy changes. James Hahn
Policy Validation Liam Fallon
- REQ-9Getting issue details... STATUS - Enhances the validation of TOSCA Policy Types and provides tools to Policy Designers. Liam Fallon
Support for Native Policies Chenfei Gao Ram Krishna Verma Pamela Dragosh
- POLICY-1845Getting issue details... STATUS - Some support for this in the legacy components, this work greatly enhances the ability to load PDP native policies that either execute alone or in conjunction with TOSCA Policy Types. Adds in Apex Native Policy Types in addition to XACML, Drools.
Optimization and Naming Policies - Better Use of the Decision API Pamela Dragosh - REQ-162Getting issue details... STATUS
In working with the OOF team, we are moving some of the decision making that the legacy engine could not support into the new xacml PDP engine which supports a Decision API. Previously, OOF had to make 2 separate API calls.
The addition of "matchable" attributes in the Optimization and Naming policies allow the XACML PDP to dynamically translate TOSCA policies to XACML for more fine-grained policy Decisions.
The OOF optimize uses a "best matches" algorithm on top of the XACML engine fine-grained decision in order to further refine the decision to return only the "best matching" policy given the attributes in the Decision API call.
tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: onap.policies.Optimization: derived_from: tosca.policies.Root version: 1.0.0 description: The base policy type for all policies that govern optimization properties: scope: description: Scope for the policy - could be for a specific release. type: list metadata: matchable: true required: true entry_schema: type: string geography: description: One or more geographic regions type: list metadata: matchable: true required: true entry_schema: type: string constraints: - valid_values: - US - International identity: description: Used internally for identification type: string required: true
The OOF optimization Decision includes the ability to ask the decision to take in "context" when returning policy decisions. Eliminates one less call the OOF project had to make to the Policy Decision API to retrieve policies during runtime.
{ "ONAPName": "OOF", "ONAPComponent": "OOF-component", "ONAPInstance": "OOF-component-instance", "context" : { "subscriberName": [] }, "action": "optimize", "resource": { "scope": [], "services": [], "resources": [], "geography": [] } }
TOSCA Compliant Operational and Guard Policies Pamela Dragosh - REQ-21Getting issue details... STATUS
Finishing the work started in Dublin to fully move ALL the Control Loop Policy Types into TOSCA compliance with CLAMP team. Previously our operational and guard policies used a YAML format defined a few years ago. In this effort we are translating it to be fully compliant with TOSCA and cleaning up some of the syntax.
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
Much discussion for this was done in the Control Loop sub committee meetings. As captured here: Control Loop Policy Type Design Proposal#1: Simple upgrade of legacy policy types to TOSCA
Integration of CDS As an Actor Former user (Deleted) Rashmi Pujar
- POLICY-2087Getting issue details... STATUS - Started in Dublin as dark code, finishing the support for this new actor to be fully available for Control Loop Operational Policies
PDP Statistics - China Ericsson Team
PDP Monitoring GUI - China Ericsson Team
Consolidation of Policy Health Check - China Ericsson Team
- POLICY-2025Getting issue details... STATUS - Per Integration team, one single health check requested that gives status for the whole of Policy Framework components. Added some enhancement for collection of statistics on how well the Policy components are executing.
Policy API Enhancements Chenfei Gao
- POLICY-2028Getting issue details... STATUS - Finished work such as added "application/yaml" as Content-Type.
PAP ↔ PDP Communication Ram Krishna Verma James Hahn
- POLICY-2026Getting issue details... STATUS - Clarified PAP ↔ communication of Policy Types, Health Status, PDP Group Details, Passive vs Active modes. Ram Krishna Verma