summaryrefslogtreecommitdiffstats
path: root/docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst')
-rw-r--r--docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst472
1 files changed, 472 insertions, 0 deletions
diff --git a/docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst b/docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst
new file mode 100644
index 00000000..2fa5336f
--- /dev/null
+++ b/docs/clamp/controlloop/api-protocol/controlloop-participant-protocol.rst
@@ -0,0 +1,472 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+.. _controlloop-participant-protocol-label:
+
+The CLAMP Control Loop Participant Protocol
+###########################################
+
+The CLAMP Control Loop Participant protocol is an asynchronous protocol that is used by the
+CLAMP runtime to coordinate life cycle management of Control Loop instances. The protocol
+supports the functions described in the sections below.
+
+
+Protocol Dialogues
+==================
+
+The protocol supports the dialogues described below.
+
+Participant Registration and De-Registration
+--------------------------------------------
+
+Registration when a participant comes up and update of participant with control loop type
+information and common parameter values for its control loop types.
+
+.. image:: ../images/clamp-cl-participants/participant-registering.png
+
+
+De-registration is executed as a participant goes down.
+
+.. image:: ../images/clamp-cl-participants/participant-deregistration.png
+
+
+Control Loop Priming and De-Priming
+-----------------------------------
+
+When a control loop is primed, the portion of the Control Loop Type Definition and Common
+Property values for the participants of each participant type mentioned in the Control Loop
+Definition are sent to the participants.
+
+.. image:: ../images/clamp-cl-participants/controlloop-priming.png
+
+When a control loop is de-primed, the portion of the Control Loop Type Definition and Common
+Property values for the participants of each participant type mentioned in the Control Loop
+Definition are deleted on participants.
+
+.. image:: ../images/clamp-cl-participants/controlloop-depriming.png
+
+
+Control Loop Update
+-------------------
+
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Change of control loops uses a semantic versioning approach and follow the semantics described
+on the page `4.1 Management of Control Loop Instance Configurations <management-cl-instance-configs>`.
+
+.. image:: ../images/clamp-cl-participants/controlloop-update.png
+
+The handling of a ControlLoopUpdate message in each participant is as shown below.
+
+.. image:: ../images/clamp-cl-participants/controlloop-update-msg.png
+
+Control Loop State Change
+-------------------------
+
+This dialogue is used to change the state of Control Loops and their Control Loop Elements. The
+CLAMP Runtime sends a Control Loop State Change message on the control loop to all participants.
+Participants that have Control Loop Elements in that Control Loop attempt an update on the state
+of the control loop elements they have for that control loop, and report the result back.
+
+The *startPhase* in the `Definition of TOSCA fundamental Control Loop Types
+<https://github.com/onap/policy-clamp/blob/master/common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml>`_
+is particularly important in control loop state changes because sometime the user wishes to control
+the order in which the state changes in Control Loop Elements in a control loop. In state changes
+from *UNITITIALISED* → *PASSIVE* and from *PASSIVE* → *RUNNING*, control loop elements are started in
+increasing order of their *startPhase*. In state changes from *RUNNING* → *PASSIVE* and from *PASSIVE*
+→ *UNITITIALISED*, control loop elements are started in decreasing order of their *startPhase*.
+
+The CLAMP runtime controls the state change process described in the diagram below. The CLAMP runtime
+sends a Control Loop State Change message on DMaaP to all participants in a particular Start Phase so,
+in each state change multiple Control Loop State Change messages are sent, one for each Start Phase in
+the control loop. If more than one Control Loop Element has the same Start Phase, those Control Loop
+Elements receive the same Control Loop State Change message from DMaaP and start in parallel.
+
+The Participant reads each State Change Message it sees on DMaaP. If the Start Phase on the Control
+Loop State Change message matches the Start Phase of the Control Loop Element, the participant processes
+the State Change message. Otherwise the participant ignores the message.
+
+.. image:: ../images/clamp-cl-participants/controlloop-state-change.png
+
+The handling of a ControlLoopStateChange message in each participant is as shown below.
+
+.. image:: ../images/clamp-cl-participants/controlloop-state-change-msg.png
+
+Control Loop Monitoring and Reporting
+-------------------------------------
+
+This dialogue is used as a heartbeat mechanism for participants, to monitor the status of Control Loop
+Elements, and to gather statistics on control loops. The ParticipantStatus message is sent periodically
+by each participant. The reporting interval for sending the message is configurable.
+
+.. image:: ../images/clamp-cl-participants/controlloop-monitoring.png
+
+
+Messages
+========
+
+The CLAMP Control Loop Participant Protocol uses the following messages. The descriptions below give
+an overview of each message. For the precise definition of the messages, see the `CLAMP code at Github
+<https://github.com/onap/policy-clamp/tree/master/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant>`_
+. All messages are carried on DMaaP.
+
+
+.. list-table::
+ :widths: 15 10 10 15 15 35
+ :header-rows: 1
+
+ * - Message
+ - Source
+ - Target
+ - Purpose
+ - Important Fields
+ - Field Descriptions
+ * - ParticipantRegister
+ - Participant
+ - CLAMP Runtime
+ - Participant registers with the CLAMP runtime
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * - ParticipantRegisterAck
+ - CLAMP Runtime
+ - Participant
+ - Acknowledgement of Participant Registration
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * -
+ -
+ -
+ -
+ - Result
+ - Success/Fail
+ * -
+ -
+ -
+ -
+ - Message
+ - Message indicating reason for failure
+ * - ParticipantUpdate
+ - CLAMP Runtime
+ - Participant
+ - CLAMP Runtime sends Control Loop Element Definitions and Common Parameter Values to Participants
+ - ParticipantDefinitionUpdateMap
+ - Map with Participant ID as its key, each value on the map is a ControlLoopElementDefintionMap
+ * -
+ -
+ -
+ -
+ - ControlLoopElementDefintionMap
+ - List of ControlLoopElementDefinition values for a particular participant, keyed by its Control
+ Loop Element Definition ID
+ * -
+ -
+ -
+ -
+ - ControlLoopElementDefinition
+ - A ControlLoopElementToscaServiceTemplate containing the definition of the Control Loop Element
+ and a CommonPropertiesMap with the values of the common property values for Control Loop Elements
+ of this type
+ * -
+ -
+ -
+ -
+ - ControlLoopElementToscaServiceTemplate
+ - The definition of the Control Loop Element in TOSCA
+ * -
+ -
+ -
+ -
+ - CommonPropertiesMap
+ - A <String, String> map indexed by the property name. Each map entry is the serialized value of
+ the property, which can be deserialized into an instance of the type of the property.
+ * - ParticipantUpdateAck
+ - Participant
+ - CLAMP Runtime
+ - Acknowledgement of Participant Update
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * -
+ -
+ -
+ -
+ - Result
+ - Success/Fail
+ * -
+ -
+ -
+ -
+ - Message
+ - Message indicating reason for failure
+ * - ParticipantDeregister
+ - Participant
+ - CLAMP Runtime
+ - Participant deregisters with the CLAMP runtime
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * - ParticipantDeregisterAck
+ - CLAMP Runtime
+ - Participant
+ - Acknowledgement of Participant Deegistration
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * -
+ -
+ -
+ -
+ - Result
+ - Success/Fail
+ * -
+ -
+ -
+ -
+ - Message
+ - Message indicating reason for failure
+ * - ControlLoopUpdate
+ - CLAMP Runtime
+ - Participant
+ - CLAMP Runtime sends Control Loop Element instances and Instance Specific Parameter Values for
+ a Control Loop Instance to Participants
+ - ControlLoopId
+ - The name and version of the Control Loop
+ * -
+ -
+ -
+ -
+ - ParticipantUpdateMap
+ - Map with Participant ID as its key, each value on the map is a ControlLoopElementList
+ * -
+ -
+ -
+ -
+ - ControlLoopElementList
+ - List of ControlLoopElement values for the Control Loop
+ * -
+ -
+ -
+ -
+ - ControlLoopElement
+ - A ControlLoopElement, which contains among other things a PropertiesMap with the values of the
+ property values for this Control Loop Element instance and a ToscaServiceTemplateFragment with
+ extra concept definitions and instances that a participant may need.
+ * -
+ -
+ -
+ -
+ - PropertiesMap
+ - A <String, String> map indexed by the property name. Each map entry is the serialized value of
+ the property, which can be deserialized into an instance of the type of the property.
+ * -
+ -
+ -
+ -
+ - ToscaServiceTemplateFragment
+ - A well-formed TOSCA service template containing extra concept definitions and instances that a
+ participant may need. For example, the Policy Participant may need policy type definitions or
+ policy instances to be provided if they are not already stored in the Policy Framework.
+ * - ControlLoopUpdateAck
+ - Participant
+ - CLAMP Runtime
+ - Acknowledgement of Control Loop Update
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * -
+ -
+ -
+ -
+ - ControlLoopId
+ - The name and version of the Control Loop
+ * -
+ -
+ -
+ -
+ - ControlLoopResult
+ - Holds a Result and Message for the overall operation on the participant and a map of Result
+ and Message fields for each Control Loop Element of the control loop on this participant
+ * -
+ -
+ -
+ -
+ - Result
+ - Success/Fail
+ * -
+ -
+ -
+ -
+ - Message
+ - Message indicating reason for failure
+ * - ControlLoopStateChange
+ - CLAMP Runtime
+ - Participant
+ - CLAMP Runtime asks Participants to change the state of a Control Loop
+ - ControlLoopId
+ - The name and version of the Control Loop
+ * -
+ -
+ -
+ -
+ - currentState
+ - The current state of the Control Loop
+ * -
+ -
+ -
+ -
+ - orderedState
+ - The state that the Control Loop should transition to
+ * -
+ -
+ -
+ -
+ - startPhase
+ - The start phase to which this ControLoopStateChange message applies
+ * - ControlLoopStateChangeAck
+ - Participant
+ - CLAMP Runtime
+ - Acknowledgement of Control Loop State Change
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop Type
+ Definitions
+ * -
+ -
+ -
+ -
+ - ControlLoopId
+ - The name and version of the Control Loop
+ * -
+ -
+ -
+ -
+ - startPhase
+ - The start phase to which this ControLoopStateChangeAck message applies
+ * -
+ -
+ -
+ -
+ - ControlLoopResult
+ - Holds a Result and Message for the overall operation on the participant and a map of Result and
+ Message fields for each Control Loop Element of the control loop on this participant
+ * -
+ -
+ -
+ -
+ - Result
+ - Success/Fail
+ * -
+ -
+ -
+ -
+ - Message
+ - Message indicating reason for failure
+ * - ParticipantStatusReq
+ - CLAMP Runtime
+ - Participant
+ - Request that the specified participants return a ParticipantStatus message immediately
+ - ParticipantId
+ - The ID of this participant, if not specified, all participants respond.
+ * - ParticipantStatus
+ - Participant
+ - CLAMP Runtime
+ - Periodic or on-demand report for heartbeat, Participant Status, Control Loop Status, and Control
+ Loop Statistics
+ - ParticipantId
+ - The ID of this participant
+ * -
+ -
+ -
+ -
+ - ParticipantType
+ - The type of the participant, maps to the capabilities of the participant in Control Loop
+ Type Definitions
+ * -
+ -
+ -
+ -
+ - ParticipantDefinitionUpdateMap (returned in repsonse to ParticipantStatusReq only)
+ - See ParticipantUpdate message above for definition of this field
+ * -
+ -
+ -
+ -
+ - ParticipantStatus
+ - The current status of the participant for monitoring
+ * -
+ -
+ -
+ -
+ - ParticipantStatistics
+ - Statistics on the participant such as up time, or messages processed. Can include participant
+ specific data in a string blob that is opaque to CLAMP
+ * -
+ -
+ -
+ -
+ - ControlLoopInfoMap
+ - A map of ControlLoopInfo types indexed by ControlLoopId, one entry for each control loop
+ running on the participant
+ * -
+ -
+ -
+ -
+ - ControlLoopInfo
+ - The ControlLoopStatus and ControlLoopStatistics for a given control loop
+ * -
+ -
+ -
+ -
+ - ControlLoopStatus
+ - The current status of the control loop for monitoring
+ * -
+ -
+ -
+ -
+ - ControlLoopStatistics
+ - Statistics on the control loop such as up time, or messages processed. Can include participant
+ specific data in a string blob that is opaque to CLAMP
+
+
+End of Document