Policy Control Loop Coordination - POC¶
Contents
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 |
||
Resolution |
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:
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