Policy Control Loop Coordination - POC

What is the Control Loop Coordinator?

The Control Loop Coordinator (CLC) is a facility embedded within Policy that provides:

  • Abstractions enabling an operator to specify how ONAP/ECOMP will coordinate the interactions between a given pair of Control Loop Functions (CLFs);

  • Mechanisms to ensure coordination directives are correctly enforced by ONAP/ECOMP at run-time.

How does the CLC work?

The table below illustrates conflict between two CLFs at the functional and architectural views and resolution of that conflict via introduction of the CLC.

Scenario

Functional View

Architectural View

Conflict

../_images/func.PNG ../_images/arch.PNG

Resolution

../_images/clcf.PNG ../_images/clca.PNG

How is the CLC implemented?

Example code is provided at template.demo.clc. The abstraction implemented for the initial release is simply a XACML policy (e.g., synthetic_control_loop_one_blocks_synthetic_control_loop_two.xml) that matches against one CLF (e.g., policy_ControlLoop_SyntheticOne.yaml) and checks the status of another CLF (e.g., policy_ControlLoop_SyntheticTwo.yaml) via provided PIPs. The following release will provide a much more succinct YAML representation consisting of coordination_directive_type, control_loop_one_id, control_loop_two_id, and, optionally, one or more parameters, the semantics of which are defined by the coordination_directive_type.

The following figure provides a detailed overview of the call flow as implemented:

../_images/detailed_clc_flow.PNG

How do you run the example?

From within template.demo.clc run

$ mvn test -Dtest=ControlLoopCoordinationTest

NOTE: When incorporating this example code into your own application, the XACML policies implementing the coordination directives must be included in the XACML .properties file used by the ONAP/ECOMP controller instance (e.g., xacml_guard_clc.properties). The CLF’s drl file must also contain the following modification, to be included after the creation of the ControlLoopEventManager.

// Disable target locking
//
manager.setUseTargetLock(false);

End of Document