...
In the figure above, five participants are shown. A Configuration Perisistence Participant manages Control Loop Elements that interact with the ONAP Configuration Persistence Service to store common data. The DCAE Participant runs Control Loop Elements that manage DCAE microservices. The Kubernetes Participant hosts the Control Loop Elements that are managing the life cycle of microservices in control loops that are in a Kubernetes ecosystem. The Policy Participant handles the Control Loop Elements that interact with the Policy Framework to manage policies for control loops. A Controller Participant such as the CDS Participant runs Control Loop Elements that load metadata and configure controllers so that they can partake in control loops. Any third party Existing System Participant can be developed to run Control Loop Elements that interact with any existing system (such as an operator's analytic, machine learning, or artificial intelligence system) so that those systems can partake in control loops.
4
...
The CLAMP Control Loop Lifecycle Management uses the following system level dialogues
4.1 Commissioning Dialogues
Commissioning dialogues are used to commission and decommission Control Loop Type definitions and to set the values of Common Parameters.
4.1.1 Commissioning a Control Loop Type Definition using the CLAMP GUI
PlantUML Macro |
---|
@startuml
participant CLAMP_GUI
participant CLAMP_Runtime
database Database
CLAMP_GUI -> CLAMP_Runtime: [REST] Commission Control Loop Type Definition
CLAMP_Runtime -> Database: Store Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definition Commissioned
@enduml |
4.1.2 Commissioning a Control Loop Type Definition using SDC
PlantUML Macro |
---|
@startuml
participant SDC
participant Policy_Distribution
participant CLAMP_Runtime
database Database
SDC -> Policy_Distribution: [DMaaP] CSAR containing Control Loop Type Definition
Policy_Distribution -> CLAMP_Runtime: [REST] Commission Control Loop Type Definition
CLAMP_Runtime -> Database: Store Control Loop Type Definition
CLAMP_Runtime -> Policy_Distribution: [REST] Type Definition Commissioned
Policy_Distribution -> SDC: [DMaaP] Deployment Completed
@enduml |
4.1.3 Setting Common Parameters for a Control Loop Type Definition
PlantUML Macro |
---|
@startuml
participant CLAMP_GUI
participant CLAMP_Runtime
participant Participant
database Database
CLAMP_GUI -> CLAMP_Runtime: [REST] Read Control Loop Type Definitions
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definitions returned
CLAMP_GUI -> CLAMP_GUI: Select Control Loop Type Definition for Parameterization
CLAMP_GUI -> CLAMP_Runtime: [REST] Fetch GUI fields Common Parameter Definitions
alt Control Loop Type Definition not Commissioned on Participants
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> CLAMP_Runtime: Generate fields for Common Parameters for GUI
CLAMP_Runtime -> CLAMP_GUI: [REST] Return GUI fields Common Parameter Definitions
CLAMP_GUI -> CLAMP_GUI: Render UI for Common Parameters
CLAMP_GUI -> CLAMP_GUI: Get values for Common Parameters from user
CLAMP_GUI -> CLAMP_Runtime: [REST] Set values for Common Parameters
CLAMP_Runtime -> Database: Store values for Common Parameters
CLAMP_Runtime -> CLAMP_GUI: [REST] Common Parameter values stored
else Control Loop Type Definition already Commissioned on Participants
CLAMP_Runtime -> CLAMP_GUI: [REST] Cannot set Common Parameters on\nControl Loop Type Definition that has\nbeen commissioned on participants
end
@enduml |
4.1.3 Commissioning a Control Loop Type Definition on Participants
PlantUML Macro |
---|
@startuml
participant CLAMP_GUI
participant CLAMP_Runtime
participant Participant
database Database
CLAMP_GUI -> CLAMP_Runtime: [REST] Read Control Loop Type Definitions
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definitions returned
CLAMP_GUI -> CLAMP_GUI: Select Control Loop Type Definition for Commissioning on Participants
CLAMP_GUI -> CLAMP_Runtime: [REST] Commission Control Loop Type Definition on Participants
alt Control Loop Type Definition not Commissioned on Participants
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> Database: Read Common Parameter Values for Control Loop Type Definition
alt Common Parameter values set for Control Loop Type Definition
CLAMP_Runtime -> Participants: [DMaaP] Update Participants with Control Loop Type Definition and values for Common Parameters
CLAMP_Runtime -> CLAMP_GUI: [REST] Control Loop Type Definition commissioning ordered on participants
else Control Loop Type Definition already Commissioned on Participants
CLAMP_Runtime -> CLAMP_GUI: [REST] Common Parameters not set\non Control Loop Type Definition
end
else Control Loop Type Definition already Commissioned on Participants
CLAMP_Runtime -> CLAMP_GUI: [REST] Cannot set Common Parameters on\nControl Loop Type Definition that has\nbeen commissioned on participants
end
== Participant Responses ==
Participants -> CLAMP_Runtime: [DMaaP] Result of Update with Control Loop Type Definition and values for Common Parameters
CLAMP_Runtime -> Database: Store result of Control Loop Type Definition Update on Participant
== Supervision ==
loop forever
CLAMP_Runtime -> Database: Read Control Loop Type Definitions
loop over each Control Loop Type Definition
alt Control Loop Type Definition Participant Commission underway
CLAMP_Runtime -> Database: read result of Control Loop Type Definition Updates from Participant
alt Updates completed on all participants
CLAMP_Runtime -> Database: set Control Loop Type Definition as Commissioned on Participants
else Updates not completed
alt Commissioning of Control Loop Type Definition on participants timed out
CLAMP_Runtime -> Database: set Control Loop Type Definition commissioning as timed out on Participants
CLAMP_Runtime -> CLAMP_Runtime: Log error
else Wait for updates to complete
end
end
else Control Loop Type Definition Participant Commission not underway
end
end
@enduml |
4.1.5 Decommissioning a Control Loop Type Definition on Participants
This dialogue allows a Control Loop Type Definition to be decomissioned so that it can be deleted or its common parameter values can be altered.
PlantUML Macro |
---|
@startuml
participant CLAMP_GUI
participant CLAMP_Runtime
participant Participant
database Database
CLAMP_GUI -> CLAMP_Runtime: [REST] Read Control Loop Type Definitions
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definitions returned
CLAMP_GUI -> CLAMP_GUI: Select Control Loop Type Definition for Decommissioning on Participants
CLAMP_GUI -> CLAMP_Runtime: [REST] Decommission Control Loop Type Definition on Participants
alt Control Loop Type Definition Commissioned on Participants
alt Control Loop Instances do not exist for Control Loop Type Definition
CLAMP_Runtime -> Participants: [DMaaP] Update Participants, removing Control Loop Type Definition and values for Common Parameters
CLAMP_Runtime -> CLAMP_GUI: [REST] Control Loop Type Definition decommissioning ordered on participants
else Control Loop Instances exist for Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Control Loop Type Definition cannot be\n decommissioned on participants\nit is in use on control loops
end
else Control Loop Type Definition not Commissioned on Participants
CLAMP_Runtime -> CLAMP_GUI: [REST] Control Loop Type Definition has not\nbeen commissioned on participants
end
== Participant Responses ==
Participants -> CLAMP_Runtime: [DMaaP] Result of Update to remove Control Loop Type Definition and values for Common Parameters
CLAMP_Runtime -> Database: Store result of Control Loop Type Definition Update on Participant
== Supervision ==
loop forever
CLAMP_Runtime -> Database: Read Control Loop Type Definitions
loop over each Control Loop Type Definition
alt Control Loop Type Definition Participant decommission underway
CLAMP_Runtime -> Database: read result of Control Loop Type Definition Updates from Participant
alt Updates completed on all participants
CLAMP_Runtime -> Database: set Control Loop Type Definition as decommissioned on Participants
else Updates not completed
alt Commissioning of Control Loop Type Definition on participants timed out
CLAMP_Runtime -> Database: set Control Loop Type Definition decommissioning as timed out on Participants
CLAMP_Runtime -> CLAMP_Runtime: Log error
else Wait for updates to complete
end
end
else Control Loop Type Definition Participant decommission not underway
end
end
@enduml |
4.1.6 Decommissioning a Control Loop Type Definition in CLAMP
PlantUML Macro |
---|
@startuml
participant CLAMP_GUI
participant CLAMP_Runtime
database Database
CLAMP_GUI -> CLAMP_Runtime: [REST] Read Control Loop Type Definitions
CLAMP_Runtime -> Database: Read Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definitions returned
CLAMP_GUI -> CLAMP_GUI: Select Control Loop Type Definition for Decommissioning
CLAMP_GUI -> CLAMP_Runtime: [REST] Decommission Control Loop Type Definition
alt Control Loop Type Definition not Commissioned on Participants
CLAMP_Runtime -> Database: Delete Control Loop Type Definition
CLAMP_Runtime -> CLAMP_GUI: [REST] Type Definition Decommissioned
else Control Loop Type Definition not Commissioned on Participants
CLAMP_Runtime -> CLAMP_GUI: [REST] Control Loop Type Definition cannot be decommissioned\nit is commissioned on participants
end
@enduml |
...
.
...
Life Cycle Management Operations
...
4.1 Control Loop Version Management
Performing a hot change of a Control Loop Instance at run time is a particularly challenging issue because a change must handle the following cases without tearing down the Control Loop:
...
- A Control Loop or Control Loop Element in state RUNNING can be changed to a higher patch level or rolled back to a lower patch level. This means that hot changes that do not impact the structure of a Control Loop or its elements can be executed.
- A Control Loop or Control Loop Element in state PASSIVE can be changed to a higher minor/patch level or rolled back to a lower minor/patch level. This means that structural changes to Control Loop Elements that do not impact the Control Loop as a whole can be executed by taking the control loop to state PASSIVE.
- A Control Loop or Control Loop Element in state UNINITIALIZED can be changed to a higher major/minor/patch level or rolled back to a lower major/minor/patch level. This means that where the structure of the entire control loop is changed, the control loop must be uninitialized and reinitialized.
- If a Control Loop Element has a minor version change, then its Control Loop Instance must have at least a minor version change.
- If a Control Loop Element has a major version change, then its Control Loop Instance must have a major version change.
...
4.2 Scalability
The system is designed to be inherently scalable. The CLAMP runtime is stateless, all state is preserved in the run time inventory in the database. When the user requests an operation such as an instantiation, activation, passivation, or an uninitialization on a Control Loop Instance, the CLAMP runtime broadcasts the request to participants over DMaaP and saves details of the request to the database. The CLAMP runtime does not directly wait for responses to requests.
...
This approach makes it easy to scale Control Loop life cycle management. As Control Loop Instance counts increase, more than one CLAMP runtime can be deployed and REST/supervision operations on Control Loop Instances can run in parallel. The number of participants can scale because an asynchronous broadcast mechanism is used for runtime-participant communication and there is no direct connection or communication channel between participants and CLAMP runtime servers. Participant state, Control Loop Instance state, and Control Loop Element state is held in the database, so any CLAMP runtime server can handle operations for any participant. Because many participants of a particular type can be deployed and participant instances can load balance control loop element instances for different Control Loop Instances of many types across themselves using a mechanism such as a Kubernetes cluster.
...
5 APIs and Protocols
The APIs and Protocols used by CLAMP for Control Loops are described on the pages below:
- System Level Dialogues
- Defining Control Loops in TOSCA for CLAMP
- REST APIs for CLAMP Control Loops
- The CLAMP Control Loop Participant Protocol
...
6 Design and Implementation
The design and implementation of TOSCA Control Loops in CLAMP is described for each executable entity on the pages below:
...