diff options
author | FrancescoFioraEst <francesco.fiora@est.tech> | 2024-07-02 16:56:55 +0100 |
---|---|---|
committer | FrancescoFioraEst <francesco.fiora@est.tech> | 2024-07-03 09:28:49 +0100 |
commit | 709ac10c7a846557e8c9d5d9d5a3e07e71efb023 (patch) | |
tree | ecbb9c5c633608b8cf6634b97676aea3ec89b7c8 /docs | |
parent | ce24502fb2a5e932b17acb32cc05eb1e47bbf06b (diff) |
Add sync message in system dialogs in docs
Issue-ID: POLICY-5038
Change-Id: Ie8bd99f5159258ff639a01cdbdae9f0ca642efe0
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'docs')
41 files changed, 270 insertions, 155 deletions
diff --git a/docs/clamp/acm/acm-states.rst b/docs/clamp/acm/acm-states.rst index 215baf71..a36825a5 100644 --- a/docs/clamp/acm/acm-states.rst +++ b/docs/clamp/acm/acm-states.rst @@ -10,9 +10,10 @@ ACM States Automation Composition Management manages a number of states of various types to manage the lifecycle of compositions. Those states are described here. Please also see the ACM System Level Dialogues page to see the system dialogues that change states and how states interrelate in detail. Please also see ITU Recommendation X.731, which is reflected in the states of AC Element Instances. -Participant State -================= -Participant states are NOT managed by ACM but the state of a participant is recorded and supervised by ACM. +Participant Replica State +========================= +Any participant could have more than one replica. +Participant replica states are NOT managed by ACM but the state of a participant replica is recorded and supervised by ACM. .. image:: images/acm-states/ParticipantStates.png diff --git a/docs/clamp/acm/api-protocol/acm-participant-protocol.rst b/docs/clamp/acm/api-protocol/acm-participant-protocol.rst index 2b6beaca..2a8e05a0 100644 --- a/docs/clamp/acm/api-protocol/acm-participant-protocol.rst +++ b/docs/clamp/acm/api-protocol/acm-participant-protocol.rst @@ -14,18 +14,21 @@ Protocol Dialogues ================== The protocol supports the dialogues described below. +Any participant could have more than one replica. All replicas of a specific participant, have same participant ID. +All replica data are synchronized by ACM-runtime through a sync message. This message will be triggered at any change in composition and instance. Participant Registration and De-Registration -------------------------------------------- -Participant Registration is performed by a Participant when it starts up. It registers its ID and the ACM Element Types it supports with the ACM runtime. -In a scenario where Participant has been restarted, ACM runtime have to provide all Primed ACM Definition and Deployed ACM instances of the Participant sending a Restart message. +Participant Registration is performed by a Participant when it starts up. +It registers its replica ID, participant ID and the ACM Element Types it supports with the ACM runtime. +In a scenario where a replica of a Participant has been restarted, ACM runtime have to provide all Primed ACM Definition and Deployed ACM instances of the Replica sending a Sync message. .. image:: ../images/system-dialogues/RegisterParticipant.png -Participant Deregistration is performed by a Participant when it shuts down. It deregisters its ID and type with the ACM runtime. +Participant Deregistration is performed by a Participant when it shuts down. It deregisters its replica ID with the ACM runtime. .. image:: ../images/system-dialogues/DeregisterParticipant.png diff --git a/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml b/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml index acbec2ad..78689689 100644 --- a/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml +++ b/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml @@ -1,6 +1,11 @@ @startuml + +participant Participant +participant "ACM Runtime" +database "ACM Database" + Participant -> "ACM Runtime": [ASYNC] Deregister -"ACM Runtime" -> "ACM Database": Set Participant State as OFF_LINE +"ACM Runtime" -> "ACM Database": Set Participant Replica State as OFF_LINE Participant <- "ACM Runtime": [ASYNC] Deregistration Accepted Participant -> Participant: Shutdown Participant @enduml diff --git a/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml b/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml index f8aeee81..54be2af4 100644 --- a/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml +++ b/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml @@ -1,20 +1,24 @@ @startuml + +participant Participant +participant "ACM Runtime" +database "ACM Database" + activate Participant - Participant -> "CLAMP Runtime": [ASYNC] Register -activate "CLAMP Runtime" + Participant -> "ACM Runtime": [ASYNC] Register +activate "ACM Runtime" deactivate Participant - "CLAMP Runtime" -> "CLAMP Database": Create or Update Perticipant Registration,\n store supported ACM element types \n and set Perticipant State as ON_LINE - "CLAMP Runtime" -> Participant: [ASYNC] Registration Accepted - loop over ACM Definition - "CLAMP Runtime" -> "CLAMP Database": Mark all ACM element instances deployed\n on Participant as Restarting - "CLAMP Runtime" -> Participant: [ASYNC] Restart\n send Common Property Values\n and Instance Elements of this Participant] -deactivate "CLAMP Runtime" + "ACM Runtime" -> "ACM Database": Create a Participant Replica Registration,\n store supported ACM element types \n and set Replica State as ON_LINE + loop ACM Definition + "ACM Runtime" -> Participant: [ASYNC] Sync message\n send Common Property Values\n and Instance Elements of this Participant activate Participant -Participant -> Participant: Store Common Property Values and Instance Elements -Participant -> "CLAMP Runtime": [ASYNC] State Change Ack -activate "CLAMP Runtime" + Participant -> Participant: Store Common Property Values and Instance Elements + end loop + alt + "ACM Runtime" -> Participant: [ASYNC] Registration Accepted +deactivate "ACM Runtime" +Participant -> Participant: set participant as registered +Participant -> "ACM Runtime": [ASYNC] Status message deactivate Participant - "CLAMP Runtime" -> "CLAMP Database": Remove Restarting from all Compositions \n and Instances of this Participant -deactivate "CLAMP Runtime" - end +end @enduml diff --git a/docs/clamp/acm/api-protocol/system-level-dialogues.rst b/docs/clamp/acm/api-protocol/system-level-dialogues.rst index 0ef5f200..f3612b49 100644 --- a/docs/clamp/acm/api-protocol/system-level-dialogues.rst +++ b/docs/clamp/acm/api-protocol/system-level-dialogues.rst @@ -16,7 +16,8 @@ Priming The CLAMP Automation Composition Runtime Lifecycle Management uses the f 1.1 Register a Participant -------------------------- -Participant Registration is performed by a Participant when it starts up. It registers its ID and the ACM Element Types it supports with the ACM runtime. +Participant Registration is performed by a Participant when it starts up. +It registers its replica ID, participant ID and the ACM Element Types it supports with the ACM runtime. .. image:: ../images/system-dialogues/RegisterParticipant.png @@ -28,11 +29,17 @@ Participant Deregistration is performed by a Participant when it shuts down. It 1.3 Supervise Participants -------------------------- -Participant Supervision is performed periodically between participants and the ACM runtime server to ensure that registered participants are available over time. Participants send a heartbeat message to the ACM runtime at a configured interval. The heartbeat message contains updated status information for each AC Element Instance that has changed status since the last Heartbeat message sent by the participant. +Participant Supervision is performed periodically between participants and the ACM runtime server to ensure that registered participants are available over time. +Participants send a heartbeat Status message to the ACM runtime at a configured interval. .. image:: ../images/system-dialogues/SuperviseParticipantsStatusUpdate.png -The ACM runtime regularly checks the heartbeat reports from participants and takes action if participants time out. If a heartbeat message is not received for a participant in the Timeout Interval, the participant is marked as timed out and its ACM element instances are informed. +Participants could send outProperties update using Status message to the ACM runtime. +When Status message contains outProperties, ACM-runtime updates the Database and triggers a sync message to all replicas. + +.. image:: ../images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png + +The ACM runtime regularly checks the heartbeat reports from participants and takes action if participants time out. If a heartbeat message is not received for a participant replica in the Timeout Interval, the participant replica is marked as timed out. .. image:: ../images/system-dialogues/SuperviseParticipantsTimeout.png @@ -77,7 +84,7 @@ A participant should respond for each Automation Composition Element Type, thus .. image:: ../images/system-dialogues/PrimeAcTypeMultiplePpnts.png -The ACM Runtime updates the priming information in the database. +The ACM Runtime updates the priming information in the database, and send sync message to all replicas. .. image:: ../images/system-dialogues/PrimeInfoUpdatedInDb.png @@ -91,7 +98,7 @@ A participant should respond for each Automation Composition Element Type, thus .. image:: ../images/system-dialogues/DeprimeElements.png -The ACM Runtime updates the priming information in the database. +The ACM Runtime updates the priming information in the database, and send sync message to all replicas. .. image:: ../images/system-dialogues/UpdateDeprimeInDb.png @@ -122,7 +129,7 @@ Each participant deletes its AC Element Instances from the AC Instance .. image:: ../images/system-dialogues/DeleteInstanceElements.png -The ACM Runtime receives and stores the responses, when all instances element are deleted, it delete the instance. +The ACM Runtime receives and stores the responses, when all instances element are deleted, it delete the instance and send sync message to all replicas. .. image:: ../images/system-dialogues/DeleteResponseStored.png @@ -136,7 +143,7 @@ Each participant deploys its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/DeployAcInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/DeployResponseStored.png @@ -150,7 +157,7 @@ Each participant updates its AC Element from the AC Instance .. image:: ../images/system-dialogues/UpdateAcElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UpdateAcElementsResponse.png @@ -164,7 +171,7 @@ Each participant migrated its AC Element from the AC Instance .. image:: ../images/system-dialogues/MigrateAcElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/MigrateAcElementsResponse.png @@ -178,7 +185,7 @@ Each participant undeploys its AC Element Instances from the AC Instance .. image:: ../images/system-dialogues/UndeployInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UndeployResponseStored.png @@ -197,7 +204,7 @@ Each participant unlocks its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/UnlockInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UnlockResponseStored.png @@ -211,21 +218,16 @@ Each participant locks its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/LockAcInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/LockResponseStored.png -3.10 Update Operational State on Automation Composition Instance ----------------------------------------------------------------- +3.10 Update Operational State, Use State and outProperties on Automation Composition Instance +--------------------------------------------------------------------------------------------- .. image:: ../images/system-dialogues/UpdateOperationalState.png -3.11 Update Usage State on Automation Composition Instance ----------------------------------------------------------- - -.. image:: ../images/system-dialogues/UpdateUsageState.png - -3.12 Failure handling in ACM +3.11 Failure handling in ACM ---------------------------- After any ACM operation is completed, one of the following result messages will be updated in the ACM. These result values are updated along with the overall state of the ACM instance. @@ -270,17 +272,17 @@ The following flow shown and example of deployment that get stuck, and the user .. image:: ../images/system-dialogues/TimeoutParticipant.png -3.13 OFF_LINE handling in ACM +3.12 OFF_LINE handling in ACM ----------------------------- -Runtime marks the participant state with the value 'OFF_LINE' when the participant fails to report the periodic heartbeat, -the participant state is then marked as 'OFF_LINE' by the ACM-R after the configured waiting limit is reached. -That scenario might happen when participant is shutdown, in that scenario all on going operations with that participant are marked 'TIMEOUT' due the missing messages back. +Runtime marks the participant state with the value 'OFF_LINE' when the participant replica fails to report the periodic heartbeat, +the participant replica state is then marked as 'OFF_LINE' by the ACM-R after the configured waiting limit is reached. +That scenario might happen when participant replica is shutdown, in that scenario all on going operations with that participant are marked 'TIMEOUT' due the missing messages back. -The user cannot trigger any state change events when participant state is 'OFF_LINE'. +The user cannot trigger any state change events when all participant replicas state are 'OFF_LINE' (no one is available 'ONLINE'). .. image:: ../images/system-dialogues/OfflineAcmResult.png -When a participant state is marked 'OFF_LINE', it might come back ONLINE and the user can trigger state change events to the ACM. +When a participant replica state is marked 'OFF_LINE', it might come back ONLINE and the user can trigger state change events to the ACM. End of Document diff --git a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png Binary files differindex 6ac70cd2..01503ab2 100644 --- a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png Binary files differindex 5f7ef3ba..a20a6c8b 100644 --- a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png Binary files differindex 092e80ba..61f58d52 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png +++ b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png diff --git a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png Binary files differindex 4fbd81a0..b8fa61cf 100644 --- a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png +++ b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png diff --git a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png Binary files differindex f50b187c..3a899b66 100644 --- a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png Binary files differindex 4c96b2c3..ea49ed0e 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png +++ b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png diff --git a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png Binary files differindex 435e5e1a..c502d767 100644 --- a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png +++ b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png diff --git a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png Binary files differindex 97e8f760..cc077a8c 100644 --- a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png +++ b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png diff --git a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png Binary files differindex 0cc8a81b..fb9608a1 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png +++ b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png diff --git a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png Binary files differindex bd4d1441..d69e4732 100644 --- a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png +++ b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png Binary files differnew file mode 100644 index 00000000..37333c8a --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png Binary files differindex 82c15daa..d6cce208 100644 --- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png Binary files differindex bc19943f..77372d81 100644 --- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png diff --git a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png Binary files differindex 8fd2c438..bc0277bd 100644 --- a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png Binary files differindex 2d23d4d6..8dd32285 100644 --- a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png Binary files differindex 8eef8f40..1a236a50 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png Binary files differindex 63e1062b..5a78e141 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png Binary files differindex 4c33957b..7c16653c 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml new file mode 100644 index 00000000..91be80b0 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml @@ -0,0 +1,19 @@ +@startuml + +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Delete Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information + +alt Is AC Element Instance Deleted? + "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DELETED + alt Are all the other AC Element Instances in this AC Instance in state DELETED? + "ACM Runtime" -> "ACM Database": Delete AC Instance + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml index 939f87ce..cb40d355 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Deploy Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Deploy Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Deployed? - ACM_Runtime -> ACM_Database: Set AC Element Instance State as DEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DEPLOYED alt Are all the other AC Element Instances in this AC Instance in state DEPLOYED? - ACM_Runtime -> ACM_Runtime: Set AC Instance state as DEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Instance state as DEPLOYED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml index 061dbea1..78689689 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml @@ -1,20 +1,11 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database - -Participant -> Participant: Uninitialize all ACM Element Instances running on Participant\n(See Instantiation Dialogues) -activate Participant -deactivate Participant - -Participant -> ACM_Runtime: [ASYNC] Deregister -ACM_Runtime -> ACM_Database: Delete Participant Registration -ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE -Participant <- ACM_Runtime: [ASYNC] Deregistration Accepted - -ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE -activate ACM_Runtime -deactivate ACM_Runtime +participant "ACM Runtime" +database "ACM Database" +Participant -> "ACM Runtime": [ASYNC] Deregister +"ACM Runtime" -> "ACM Database": Set Participant Replica State as OFF_LINE +Participant <- "ACM Runtime": [ASYNC] Deregistration Accepted +Participant -> Participant: Shutdown Participant @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml b/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml new file mode 100644 index 00000000..cb11012a --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml @@ -0,0 +1,21 @@ +@startuml +participant "ACM Runtime" +participant "Participant Replica 1" +participant "Participant API Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" -> "Participant Replica 1": [ASYNC] Trigger an ACM operation for this AC Instance +alt Does the primed Participant ID on this AC Element Instance match my Participant ID? + alt Does this AC Element Instance exist? + "Participant Replica 1" -> "ACM Runtime": [ASYNC] AC Element does not exist + end + "Participant Replica 1" -> "Participant API Replica 1": Perform ACM operation + "Participant API Replica 1" -> "Participant Replica 1": ACM operation failed Response + "Participant Replica 1" -> "ACM Runtime": [ASYNC] INFO: ACM operation failed + note left of "Participant Replica 1" + This returns the response message with StateChangeResult 'FAILED' + end note +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml index 0ffc51a6..111a5726 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Lock Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Lock Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Locked? - ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as LOCKED + "ACM Runtime" -> "ACM Database": Set AC Element Instance administrative state as LOCKED alt Have all the other AC Element Instances in this AC Instance been LOCKED? - ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as LOCKED + "ACM Runtime" -> "ACM Database": Set AC Instance administrative state as LOCKED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml index 3ba0410f..80693aef 100755..100644 --- a/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml @@ -1,10 +1,12 @@ @startuml
participant "ACM Runtime"
participant "ACM Database"
-participant Participant
+participant "Participant Replica 1"
+participant "Participant Replica 2"
alt "instance Id and Composition Ids exist"
- Participant -> "ACM Runtime" : [ASYNC] Migration completed
+ "Participant Replica 1" -> "ACM Runtime" : [ASYNC] Migration completed
"ACM Runtime" -> "ACM Database" : instance and AC Element will be set in a final state (DEPLOYED)\n and Comp Def IDs change for instance and AC Element
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
end
@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml index 0c36a18c..c7a8a5e9 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml @@ -1,28 +1,28 @@ @startuml participant REST -participant ACM_Runtime +participant "ACM Runtime" +database "ACM Database" participant Participant -database ACM_Database alt Automation Composition Type has Deployed Instances - REST <- ACM_Runtime: Priming of Automation Composition Type Failed, instances deployed + REST <- "ACM Runtime": Priming of Automation Composition Type Failed, \ninstances deployed else Automation Composition Type is in state COMMISSIONED or PRIMED - REST -> ACM_Runtime: Prime Automation Composition Type + REST -> "ACM Runtime": Prime Automation Composition Type - ACM_Runtime -> ACM_Database: Read Automation Composition Type - ACM_Runtime -> ACM_Database: Read Participants - ACM_Runtime -> ACM_Runtime: Set suitable participant ID on each AC Element Type + "ACM Runtime" -> "ACM Database": Read Automation Composition Type + "ACM Runtime" -> "ACM Database": Read Participants + "ACM Runtime" -> "ACM Runtime": Set suitable participant ID on each AC Element Type alt Was a sutable participant ID found for each AC Element Type? - ACM_Runtime -> Participant: [ASYNC] Send Priming Request to all Participants\nwith Automation Composition Type Definition - ACM_Runtime -> ACM_Database: Set Automation Composition Type State to PRIMING + "ACM Runtime" -> Participant: [ASYNC] Send Priming Request to all Participants\nwith Automation Composition Type Definition + "ACM Runtime" -> "ACM Database": Set Automation Composition Type State to PRIMING - REST <- ACM_Runtime: Priming of Automation Composition Type Ordered + REST <- "ACM Runtime": Priming of Automation Composition Type Ordered else - REST <- ACM_Runtime: Priming of Automation Composition Type Faield, no sutiable participant found + REST <- "ACM Runtime": Priming of Automation Composition Type Faield, \nno sutiable participant found end else - REST <- ACM_Runtime: Priming of Automation Composition Type Failed, invalid state + REST <- "ACM Runtime": Priming of Automation Composition Type Failed, \ninvalid state end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml index 4a9f7d17..27075ca9 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml @@ -1,14 +1,16 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Result of Priming of AC Element Type -ACM_Runtime -> ACM_Database: Record result of AC Element Type Priming +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Result of Priming of AC Element Type +"ACM Runtime" -> "ACM Database": Record result of AC Element Type Priming alt Is AC Element Type Primed? alt Have all the other AC Element Types in this AC Type been Primed? - ACM_Runtime -> ACM_Runtime: Set AC Type state as PRIMED + "ACM Runtime" -> "ACM Database": Set AC Type state as PRIMED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml index 0cf091c0..54be2af4 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml @@ -1,16 +1,24 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database - -Participant -> ACM_Runtime: [ASYNC] Register -ACM_Runtime -> ACM_Database: Create or Update Participant Registration\nand store supported ACM element types -ACM_Runtime -> ACM_Database: Set Participant State as ONLINE -Participant <- ACM_Runtime: Registration Accepted - -ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as ONLINE -activate ACM_Runtime -deactivate ACM_Runtime +participant "ACM Runtime" +database "ACM Database" +activate Participant + Participant -> "ACM Runtime": [ASYNC] Register +activate "ACM Runtime" +deactivate Participant + "ACM Runtime" -> "ACM Database": Create a Participant Replica Registration,\n store supported ACM element types \n and set Replica State as ON_LINE + loop ACM Definition + "ACM Runtime" -> Participant: [ASYNC] Sync message\n send Common Property Values\n and Instance Elements of this Participant +activate Participant + Participant -> Participant: Store Common Property Values and Instance Elements + end loop + alt + "ACM Runtime" -> Participant: [ASYNC] Registration Accepted +deactivate "ACM Runtime" +Participant -> Participant: set participant as registered +Participant -> "ACM Runtime": [ASYNC] Status message +deactivate Participant +end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml b/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml new file mode 100644 index 00000000..69fde3bb --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml @@ -0,0 +1,21 @@ +@startuml +participant "ACM Runtime" +participant "Participant Replica 1" +participant "Participant API Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" -> "Participant Replica 1": [ASYNC] Trigger an ACM operation for this AC Instance +alt Does the primed Participant ID on this AC Element Instance match my Participant ID? + alt Does this AC Element Instance exist? + "Participant Replica 1" -> "ACM Runtime": [ASYNC] AC Element does not exist + end + "Participant Replica 1" -> "Participant API Replica 1": Perform ACM operation + "Participant API Replica 1" -> "Participant Replica 1": ACM operation success Response + "Participant Replica 1" -> "ACM Runtime": [ASYNC] INFO: ACM operation completed successfully + note left of "Participant Replica 1" + This returns the response message with StateChangeResult 'NO_ERROR' + end note +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml new file mode 100644 index 00000000..cc6a198d --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml @@ -0,0 +1,12 @@ +@startuml + +participant "Participant Replica 1" +participant "Participant Replica 2" +participant "ACM Runtime" +database "ACM Database" + +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Status message including outProperties update +"ACM Runtime" -> "ACM Database": Update Participant Replica \nas 'ON_LINE' and outProperties +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +"Participant Replica 2" -> "Participant Replica 2": Update memory from sync message +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml index e5748e86..483692f0 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml @@ -1,17 +1,12 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database +participant "ACM Runtime" +database "ACM Database" loop Every Participant Supervision Interval - Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant - ACM_Runtime -> ACM_Database: Update Participant Heartbeat data - ACM_Runtime -> ACM_Database: Set Participant State as ONLINE - - loop Every AC Element Instance in Heartbeat Message - ACM_Runtime -> ACM_Database: Mark AC Element Instance as ONLINE\nand Update AC Element Instance status - end + Participant -> "ACM Runtime": [ASYNC] Heartbeat message including\nreplica ID and participant ID + "ACM Runtime" -> "ACM Database": Update Participant Replica as 'ON_LINE' end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml index 89a7d16a..0032b839 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml @@ -1,16 +1,13 @@ @startuml -participant ACM_Runtime -database ACM_Database +participant "ACM Runtime" +database "ACM Database" -loop Every ACM_Runtime Supervision Interval - loop Over all Participants - ACM_Runtime -> Database: Read Participant Heartbeat Information - alt Participant Heartbeat not received in Timeout Interval - ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE - ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE - activate ACM_Runtime - deactivate ACM_Runtime +loop Every ACM Runtime Supervision Interval + loop Over all Participant replicas + "ACM Runtime" -> "ACM Database": Read Participant Replica Heartbeat Information + alt Participant Replica Heartbeat not received in Timeout Interval + "ACM Runtime" -> "ACM Database": Set Participant Replica State as OFFLINE end end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml index e44183d4..7ab7e5f3 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Undeploy Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Undeploy Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance undeployed? - ACM_Runtime -> ACM_Database: Mark AC Element Instance as UNDEPLOYED + "ACM Runtime" -> "ACM Database": Mark AC Element Instance as UNDEPLOYED alt Are all the other AC Element Instances in this AC Instance in state UNDEPLOYED? - ACM_Runtime -> ACM_Runtime: Set AC Instance state as UNDEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Instance state as UNDEPLOYED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml index 44e7e906..0f7ce94f 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Unlock Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Unlock Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Unlocked? - ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as UNLOCKED + "ACM Runtime" -> "ACM Database": Set AC Element Instance administrative state as UNLOCKED alt Have all the other AC Element Instances in this AC Instance been UNLOCKED? - ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as UNLOCKED + "ACM Runtime" -> "ACM Database": Set AC Instance administrative state as UNLOCKED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml new file mode 100644 index 00000000..ed161745 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml @@ -0,0 +1,19 @@ +@startuml
+
+participant "ACM Runtime"
+database "ACM Database"
+participant "Participant Replica 1"
+participant "Participant Replica 2"
+
+"ACM Runtime" <- "Participant Replica 1": [ASYNC] Update Automation Composition Element \nInstance Response
+"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information
+
+alt Is AC Element Instance Updated?
+ "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DEPLOYED
+ alt Are all the other AC Element Instances in this AC Instance in state DEPLOYED?
+ "ACM Runtime" -> "ACM Database": Set AC Instance state as DEPLOYED
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml index b52dc817..a75908bb 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml @@ -1,14 +1,16 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Result of Depriming of AC Element Type -ACM_Runtime -> ACM_Database: Record result of AC Element Type Depriming +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Result of Depriming of AC Element Type +"ACM Runtime" -> "ACM Database": Record result of AC Element Type Depriming alt Is AC Element Type Deprimed? alt Have all the other AC Element Types in this AC Type been Deprimed? - ACM_Runtime -> ACM_Runtime: Set AC Type state as COMMISSIONED + "ACM Runtime" -> "ACM Database": Set AC Type state as COMMISSIONED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml index 538242ae..47e0ea34 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml @@ -1,16 +1,19 @@ @startuml -participant Participant_API -participant Participant -participant ACM_Runtime +participant "Participant API Replica 1" +participant "Participant Replica 1" +participant "ACM Runtime" +participant "Participant Replica 2" -Participant_API -> Participant_API: Perform Operation that Updates Operational State -activate Participant_API -deactivate Participant_API +"Participant API Replica 1" -> "Participant API Replica 1": Perform Operation that Updates \nOperational State, Use State and outProperties +activate "Participant API Replica 1" +deactivate "Participant API Replica 1" -Participant_API -> Participant: Operational State has been updated -Participant -> Participant: Update Operational State in ACM Element Instance +"Participant API Replica 1" -> "Participant Replica 1": Operational State, Use State and outProperties \nhas been updated +"Participant Replica 1" -> "Participant Replica 1": Update Operational State, Use State and outProperties \nin ACM Element Instance +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Send message including states and outProperties \nof AC Element Instances on Participant +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message == Periodically with Heartbeat == -Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Heartbeat message including status @enduml |