Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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:

...

  1. 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.
  2. 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.
  3. 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.
  4. If a Control Loop Element has a minor version change, then its Control Loop Instance must have at least a minor version change.
  5. 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:

  1. System Level Dialogues
  2. Defining Control Loops in TOSCA for CLAMP
  3. REST APIs for CLAMP Control Loops
  4. 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:

...