aboutsummaryrefslogtreecommitdiffstats
path: root/docs/clamp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/clamp')
-rw-r--r--docs/clamp/acm/acm-participant-guide.rst103
-rw-r--r--docs/clamp/acm/acm-states.rst62
-rw-r--r--docs/clamp/acm/api-protocol/acm-participant-protocol.rst9
-rw-r--r--docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml7
-rw-r--r--docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml32
-rw-r--r--docs/clamp/acm/api-protocol/system-level-dialogues.rst54
-rw-r--r--docs/clamp/acm/design-impl/clamp-runtime-acm.rst76
-rw-r--r--docs/clamp/acm/design-impl/participants/participant-intermediary.rst6
-rwxr-xr-xdocs/clamp/acm/files/ACM-Message-Table.csv20
-rw-r--r--docs/clamp/acm/images/system-dialogues/DeleteResponseStored.pngbin21072 -> 25542 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/DeployResponseStored.pngbin25749 -> 26837 bytes
-rw-r--r--[-rwxr-xr-x]docs/clamp/acm/images/system-dialogues/DeregisterParticipant.pngbin14601 -> 16222 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/FailedAcmResult.pngbin29454 -> 25247 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/LockResponseStored.pngbin26081 -> 27373 bytes
-rw-r--r--[-rwxr-xr-x]docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.pngbin15650 -> 16518 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.pngbin49797 -> 43652 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.pngbin21652 -> 22416 bytes
-rw-r--r--[-rwxr-xr-x]docs/clamp/acm/images/system-dialogues/RegisterParticipant.pngbin39708 -> 31798 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/SuccessAcmResult.pngbin30511 -> 26129 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.pngbin0 -> 19566 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.pngbin27715 -> 15667 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.pngbin24684 -> 16506 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/UndeployResponseStored.pngbin26308 -> 27512 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/UnlockResponseStored.pngbin26764 -> 27997 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.pngbin175376 -> 26610 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.pngbin22182 -> 22862 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/UpdateOperationalState.pngbin19608 -> 27331 bytes
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml19
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml16
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml21
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml21
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml16
-rw-r--r--[-rwxr-xr-x]docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml6
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml24
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml14
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml30
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml21
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml12
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml13
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml17
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml16
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml16
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml19
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml14
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml21
45 files changed, 415 insertions, 270 deletions
diff --git a/docs/clamp/acm/acm-participant-guide.rst b/docs/clamp/acm/acm-participant-guide.rst
index b4ca885d..49eaee7f 100644
--- a/docs/clamp/acm/acm-participant-guide.rst
+++ b/docs/clamp/acm/acm-participant-guide.rst
@@ -48,17 +48,29 @@ and the same is configured for the 'ParticipantIntermediaryParameters' object in
.. code-block:: bash
+ intermediaryParameters:
+ topics:
+ operationTopic: policy-acruntime-participant
+ syncTopic: acm-ppnt-sync
clampAutomationCompositionTopics:
topicSources:
-
- topic: POLICY-ACRUNTIME-PARTICIPANT
+ topic: ${participant.intermediaryParameters.topics.operationTopic}
+ servers:
+ - ${topicServer:localhost}:9092
+ topicCommInfrastructure: kafka
+ fetchTimeout: 15000
+ additionalProps:
+ group.id: policy-clamp-ac-name
+ -
+ topic: ${participant.intermediaryParameters.topics.syncTopic}
servers:
- ${topicServer:localhost}:9092
topicCommInfrastructure: kafka
fetchTimeout: 15000
topicSinks:
-
- topic: POLICY-ACRUNTIME-PARTICIPANT
+ topic: ${participant.intermediaryParameters.topics.operationTopic}
servers:
- ${topicServer:localhost}:9092
topicCommInfrastructure: kafka
@@ -92,9 +104,7 @@ AutomationCompositionElementListener:
6. void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement, InstanceElementDto instanceElementUpdated) throws PfModelException;
7. void prime(CompositionDto composition) throws PfModelException;
8. void deprime(CompositionDto composition) throws PfModelException;
- 9. void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException;
- 10. void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement, DeployState deployState, LockState lockState) throws PfModelException;
- 11. void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
+ 9. void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
These method from the interface are implemented independently as per the user requirement. These methods after handling the
appropriate requests should also invoke the intermediary's publisher apis to notify the ACM-runtime with the acknowledgement events.
@@ -124,12 +134,10 @@ The Abstract class AcElementListenerV1 supports the follow methods.
6. void update(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException;
7. void prime(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList) throws PfModelException;
8. void deprime(UUID compositionId) throws PfModelException;
- 9. void handleRestartComposition(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList, AcTypeState state) throws PfModelException;
- 10. void handleRestartInstance(UUID instanceId, AcElementDeploy element, Map<String, Object> properties, DeployState deployState, LockState lockState) throws PfModelException;
- 11. void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId, Map<String, Object> properties) throws PfModelException;
+ 9. void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId, Map<String, Object> properties) throws PfModelException;
**Note**: this class needs intermediaryApi and it should be passed by constructor. It is declared as protected and can be used.
-Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, handleRestartComposition and handleRestartInstance.
+Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime and deprime.
Un example of AutomationCompositionElementHandler implemented in 7.1.0 version and how to use AcElementListenerV1 abstract class:
@@ -191,7 +199,7 @@ This abstract class is introduced to help to maintain the java backward compatib
Any new functionality in the future will be wrapped by this class.
**Note**: this class needs intermediaryApi and it should be passed by constructor. It is declared as protected and can be used.
-Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, handleRestartComposition and handleRestartInstance.
+Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime and deprime.
Methods: deploy, undeploy, lock, unlock and delete
@@ -243,7 +251,7 @@ Method: update
elementId instance element id
toscaServiceTemplateFragment
inProperties instance in-properties **(updated)**
- outProperties instance out-properties
+ outProperties instance out-properties
============================== ======================================
Methods: prime, deprime
@@ -283,7 +291,7 @@ Method: migrate
elementId instance element id
toscaServiceTemplateFragment
inProperties instance in-properties **(before the migration)**
- outProperties instance out-properties
+ outProperties instance out-properties
============================== ===================================================
instanceElementMigrate:
============================== ======================================
@@ -293,7 +301,7 @@ Method: migrate
elementId instance element id
toscaServiceTemplateFragment
inProperties instance in-properties **(updated)**
- outProperties instance out-properties
+ outProperties instance out-properties
============================== ======================================
APIs to invoke
@@ -440,13 +448,6 @@ The following code is an example how to update the property 'myProperty' and sen
**Note**: In update and migrate Participants will receive the instance Properties before the merge (instanceElement) and the instance Properties merged (instanceElementUpdated / instanceElementMigrate).
-Restart scenario
-----------------
- Restart methods handle the scenario when participant shut down and restart.
- During RESTARTING, compositions and instances will be stored in participant memory with In/Out Properties, 'useState' and 'operationalState'.
- The method handleRestartComposition will be called for each composition and will be present the 'state' at the time the participant shut down.
- The method handleRestartInstance will be called for each instance element and will be present the 'deployState' and the 'lockState' at the time the participant shut down.
-
In ONAP, the following participants are already implemented in java spring boot for various requirements. The maven modules
can be referred here:
@@ -507,18 +508,28 @@ The following example shows the topic parameters and the additional 'myparameter
participant:
myparameter: my parameter
intermediaryParameters:
+ topics:
+ operationTopic: policy-acruntime-participant
+ syncTopic: acm-ppnt-sync
reportingTimeIntervalMs: 120000
description: Participant Description
participantId: 101c62b3-8918-41b9-a747-d21eb79c6c90
clampAutomationCompositionTopics:
topicSources:
- - topic: POLICY-ACRUNTIME-PARTICIPANT
+ - topic: ${participant.intermediaryParameters.topics.operationTopic}
+ servers:
+ - ${topicServer:localhost}:9092
+ topicCommInfrastructure: kafka
+ fetchTimeout: 15000
+ additionalProps:
+ group.id: policy-clamp-my-first-ptn
+ - topic: ${participant.intermediaryParameters.topics.syncTopic}
servers:
- ${topicServer:localhost}:9092
topicCommInfrastructure: kafka
fetchTimeout: 15000
topicSinks:
- - topic: POLICY-ACRUNTIME-PARTICIPANT
+ - topic: ${participant.intermediaryParameters.topics.operationTopic}
servers:
- ${topicServer:localhost}:9092
topicCommInfrastructure: kafka
@@ -679,54 +690,6 @@ The following example shows the Handler implementation and how could be the impl
}
- @Override
- public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException {
-
- // TODO restart process
-
- switch (state) {
- case PRIMING -> prime(composition);
- case DEPRIMING -> deprime(composition);
- default -> intermediaryApi
- .updateCompositionState(composition.compositionId(), state, StateChangeResult.NO_ERROR, "Restarted");
- }
- }
-
- @Override
- public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
- DeployState deployState, LockState lockState) throws PfModelException {
-
- // TODO restart process
-
- if (DeployState.DEPLOYING.equals(deployState)) {
- deploy(compositionElement, instanceElement);
- return;
- }
- if (DeployState.UNDEPLOYING.equals(deployState)) {
- undeploy(compositionElement, instanceElement);
- return;
- }
- if (DeployState.UPDATING.equals(deployState)) {
- update(compositionElement, instanceElement, instanceElement);
- return;
- }
- if (DeployState.DELETING.equals(deployState)) {
- delete(compositionElement, instanceElement);
- return;
- }
- if (LockState.LOCKING.equals(lockState)) {
- lock(compositionElement, instanceElement);
- return;
- }
- if (LockState.UNLOCKING.equals(lockState)) {
- unlock(compositionElement, instanceElement);
- return;
- }
- intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
- instanceElement.elementId(), deployState, lockState, StateChangeResult.NO_ERROR, "Restarted");
- }
-
-
AC Element states in failure scenarios
--------------------------------------
diff --git a/docs/clamp/acm/acm-states.rst b/docs/clamp/acm/acm-states.rst
index 215baf71..a6cfc2e1 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
@@ -79,4 +80,59 @@ Delete
.. image:: images/acm-states/AcInstanceStatesDelete.png
+How State are saved in DB
+=========================
+Any state will be saved in DB as number:
+
+Participant Replica State
+-------------------------
+
++--------------------+------------+
+| ParticipantState | Database |
++====================+============+
+| ON_LINE | 0 |
++--------------------+------------+
+| OFF_LINE | 1 |
++--------------------+------------+
+
+
+Automation Composition Type State
+---------------------------------
+
++----------------+------------+
+| AcTypeState | Database |
++================+============+
+| COMMISSIONED | 0 |
++----------------+------------+
+| PRIMING | 1 |
++----------------+------------+
+| PRIMED | 2 |
++----------------+------------+
+| DEPRIMING | 3 |
++----------------+------------+
+
+Automation Composition Instance State
+=====================================
+
++---------------+------------+
+| DeployState | Database |
++===============+============+
+| DEPLOYED | 0 |
++---------------+------------+
+| DEPLOYING | 1 |
++---------------+------------+
+| UNDEPLOYED | 2 |
++---------------+------------+
+| UNDEPLOYING | 3 |
++---------------+------------+
+| DELETING | 4 |
++---------------+------------+
+| DELETED | 5 |
++---------------+------------+
+| UPDATING | 6 |
++---------------+------------+
+| MIGRATING | 7 |
++---------------+------------+
+
+
End of Document
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/design-impl/clamp-runtime-acm.rst b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
index c21cc171..ba73eb04 100644
--- a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
+++ b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
@@ -13,7 +13,7 @@ This article explains how CLAMP Automation Composition Runtime is implemented.
Terminology
***********
-- Broadcast message: a message for all participants (participantId=null)
+- Broadcast message: a message for all participants (participantId=null and replicaId=null)
- Message to a participant: a message only for a participant (participantId properly filled)
- ThreadPoolExecutor: ThreadPoolExecutor executes the given task, into SupervisionAspect class is configured to execute tasks in ordered manner, one by one
- Spring Scheduling: into SupervisionAspect class, the @Scheduled annotation invokes "schedule()" method every "runtime.participantParameters.heartBeatMs" milliseconds with a fixed delay
@@ -32,13 +32,13 @@ Check CLAMP Runtime and Participants
Order an immediate Participant Report from all participants
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls PUT "/onap/policy/clamp/acm/v2/participants" endpoint
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message
Create of a Automation Composition Definition Type
++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions" endpoint with a Automation Composition Type Definition (Tosca Service Template) as body
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It validates the Automation Composition Type Definition
- It saves to DB the Tosca Service Template using AcDefinitionProvider with new compositionId and COMMISSIONED status
- the Rest-Api call returns the compositionId generated and the list of Element Definition Type
@@ -46,7 +46,7 @@ Create of a Automation Composition Definition Type
Update of a Automation Composition Definition Type
++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions" endpoint with a Automation Composition Type Definition (Tosca Service Template) as body. It have to contain the compositionId
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It checks that Automation Composition Type Definition is in COMMISSIONED status
- It validates the Automation Composition Type Definition
- It updates to DB the Tosca Service Template using AcDefinitionProvider using the compositionId
@@ -55,7 +55,7 @@ Update of a Automation Composition Definition Type
Priming of a Automation Composition Definition Type
+++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint with PRIME as primeOrder
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It checks that Automation Composition Type Definition is in COMMISSIONED status
- It validates and update the AC Element Type Definition with supported Element Types by participants
- It updates AC Definition to DB with PRIMING as status
@@ -65,7 +65,7 @@ Priming of a Automation Composition Definition Type
Create of a Automation Composition Instance
+++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It validates the AC Instance and checks that the related composition has COMMISSIONED as status
- It set the related participantId into the AC Element Instance using the participantId defined in AC Element Type Definition
- It saves the Automation Composition to DB with UNDEPLOYED deployState and NONE lockState
@@ -74,7 +74,7 @@ Create of a Automation Composition Instance
Update of a Automation Composition Instance
+++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId and the instanceId
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It checks that AC Instance is in UNDEPLOYED/DEPLOYED deployState
- It updates the Automation Composition to DB
- the Rest-Api call returns the instanceId and the list of AC Element Instance
@@ -84,7 +84,7 @@ Migrate of a Automation Composition Instance
++++++++++++++++++++++++++++++++++++++++++++
- GUI has already a new composition definition primed
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId, the compositionTargetId and the instanceId
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It checks that AC Instance is in DEPLOYED deployState
- It checks that compositionTargetId is related to a primed composition definition
- It updates the Automation Composition to DB
@@ -97,7 +97,7 @@ Issues AC instance to change status
case **deployOrder: DEPLOY**
- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with DEPLOY as deployOrder
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It validates the status order issued (related AC Instance has UNDEPLOYED as deployState)
- It updates the AC Instance to DB with DEPLOYING deployState
- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_DEPLOY message
@@ -106,7 +106,7 @@ case **deployOrder: DEPLOY**
case **lockOrder: UNLOCK**
- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with UNLOCK as lockOrder
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It validates the status order issued (related AC Instance has DEPLOYED as deployState and LOCK as lockOrder)
- It updates the AC Instance to DB with LOCKING lockOrder
- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message
@@ -115,7 +115,7 @@ case **lockOrder: UNLOCK**
case **lockOrder: LOCK**
- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with LOCK as lockOrder
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It validates the status order issued (related AC Instance has DEPLOYED as deployState and UNLOCK as lockOrder)
- It updates the AC Instance to DB with UNLOCKING lockOrder
- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message
@@ -124,7 +124,7 @@ case **lockOrder: LOCK**
case **deployOrder: UNDEPLOY**
- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with UNDEPLOY as deployOrder
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It validates the status order issued (related AC Instance has DEPLOYED as deployState and LOCK as lockOrder)
- It updates the AC Instance to DB with UNDEPLOYING deployState
- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message
@@ -133,7 +133,7 @@ case **deployOrder: UNDEPLOY**
Delete of a Automation Composition Instance
+++++++++++++++++++++++++++++++++++++++++++
- GUI calls DELETE "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint
-- runtime-ACM receives the call by Rest-Api (InstantiationController)
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
- It checks that AC Instance is in UNDEPLOYED deployState
- It updates the AC Instance to DB with DELETING deployState
- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message
@@ -142,7 +142,7 @@ Delete of a Automation Composition Instance
Depriming of a Automation Composition Definition Type
+++++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint with DEPRIME as primeOrder
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It checks that Automation Composition Type Definition is in PRIMED status
- It updates AC Definition to DB with DEPRIMING as status
- It triggers the execution to send a broadcast PARTICIPANT_PRIME message
@@ -151,7 +151,7 @@ Depriming of a Automation Composition Definition Type
Delete of a Automation Composition Definition Type
++++++++++++++++++++++++++++++++++++++++++++++++++
- GUI calls DELETE "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint
-- runtime-ACM receives the call by Rest-Api (CommissioningController)
+- ACM-runtime receives the call by Rest-Api (CommissioningController)
- It checks that AC Definition Type is in COMMISSIONED status
- It deletes the Automation Composition Type from DB
@@ -200,13 +200,13 @@ In state changes from UNDEPLOYED → DEPLOYED or LOCKED → UNLOCKED, Automation
Example of DEPLOY order with Http_PMSHMicroserviceAutomationCompositionElement with startPhase to 1 and PMSH_K8SMicroserviceAutomationCompositionElement with startPhase to 0
-- runtime-ACM sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message to all participants with startPhase = 0
+- ACM-runtime sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message to all participants with startPhase = 0
- participant receives the AUTOMATION_COMPOSITION_DEPLOY message and runs to DEPLOYED state (only AC elements defined as startPhase = 0)
-- runtime-ACM receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED
-- runtime-ACM calculates that all AC elements with startPhase = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message with startPhase = 1
+- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED
+- ACM-runtime calculates that all AC elements with startPhase = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message with startPhase = 1
- participant receives the AUTOMATION_COMPOSITION_DEPLOY message and runs to DEPLOYED state (only AC elements defined as startPhase = 1)
-- runtime-ACM receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED
-- runtime-ACM calculates that all AC elements are set to proper state and set AC to DEPLOYED
+- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED
+- ACM-runtime calculates that all AC elements are set to proper state and set AC to DEPLOYED
In that scenario the message AUTOMATION_COMPOSITION_DEPLOY has been sent two times.
@@ -216,7 +216,7 @@ Configure custom namings for TOSCA node types
The node type of the AC element and the Automation composition can be customised as per the user requirement.
These customised names can be used in the TOSCA node type definitions of AC element and composition. All the
AC element and composition definitions (node templates) should be derived from the corresponding node types.
-The following parameters are provided in the config file of runtime-acm for customisation:
+The following parameters are provided in the config file of ACM-runtime for customisation:
.. code-block:: YAML
@@ -226,7 +226,7 @@ The following parameters are provided in the config file of runtime-acm for cust
toscaCompositionName: customCompositionType
If there are no values provided for customisation, the default node types "org.onap.policy.clamp.acm.AutomationCompositionElement"
-and "org.onap.policy.clamp.acm.AutomationComposition" are used for the AC element and composition by the runtime-acm.
+and "org.onap.policy.clamp.acm.AutomationComposition" are used for the AC element and composition by the ACM-runtime.
In this case, the element and composition definition has to be derived from the same in the TOSCA. For overriding the names in the
onap helm chart, the following properties can be updated in the values.yaml.
@@ -242,23 +242,22 @@ Design of managing messages
PARTICIPANT_REGISTER
++++++++++++++++++++
-- A participant starts and send a PARTICIPANT_REGISTER message with participantId and supported Element Types
-- runtime-ACM collects the message from Message Broker by ParticipantRegisterListener
-- if not present, it saves participant reference with status ON_LINE to DB
+- A participant replica starts and send a PARTICIPANT_REGISTER message with participantId, replicaId and supported Element Types
+- ACM-runtime collects the message from Message Broker by ParticipantRegisterListener
+- if not present, it saves participant replica reference with status ON_LINE to DB
PARTICIPANT_PRIME_ACK
++++++++++++++++++++++
- A participant sends PARTICIPANT_PRIME_ACK message in response to a PARTICIPANT_PRIME message
- ParticipantPrimeAckListener collects the message from Message Broker
- It updates AC Definition to DB with PRIMED/DEPRIMED as status
+- If AC Definition is fully PRIMED, ACM-runtime sends sync message to all participants replica
PARTICIPANT_STATUS
++++++++++++++++++
-- A participant sends a scheduled PARTICIPANT_STATUS message with participantId and supported Element Types
-- runtime-ACM collects the message from Message Broker by ParticipantStatusListener
-- if not present, it saves participant reference with status ON_LINE to DB
-- MessageIntercept intercepts that event and adds a task to handle PARTICIPANT_STATUS in SupervisionScanner
-- SupervisionScanner clears and starts the monitoring for participantStatus
+- A participant sends a scheduled PARTICIPANT_STATUS message with participantId, replicaId and supported Element Types
+- ACM-runtime collects the message from Message Broker by ParticipantStatusListener
+- if not present, it saves participant replica reference with status ON_LINE to DB
AUTOMATION_COMPOSITION_DEPLOY_ACK
+++++++++++++++++++++++++++++++++
@@ -284,26 +283,27 @@ Monitoring is designed to process the follow operations:
- to update AC deployState: in a scenario that "AutomationComposition.deployState" is in a kind of transitional state (example DEPLOYING), if all - AC elements are moved properly to the specific state, the "AutomationComposition.deployState" will be updated to that and saved to DB
- to update AC lockState: in a scenario that "AutomationComposition.lockState" is in a kind of transitional state (example LOCKING), if all - AC elements are moved properly to the specific state, the "AutomationComposition.lockState" will be updated to that and saved to DB
- to delete AC Instance: in a scenario that "AutomationComposition.deployState" is in DELETING, if all - AC elements are moved properly to DELETED, the AC Instance will be deleted from DB
-- to retry AUTOMATION_COMPOSITION_DEPLOY/AUTOMATION_COMPOSITION_STATE_CHANGE messages. if there is a AC Element not in the proper state, it will retry a broadcast message
+- to retry AUTOMATION_COMPOSITION_DEPLOY/AUTOMATION_COMPOSITION_STATE_CHANGE messages. if there is an AC instance with startPhase completed, it will be moved to the next startPhase and retry a broadcast message with the new startPhase
+- to send sync message to all participants replica: in scenario where AC instance transition is fully completed
-The solution Design of retry, timeout, and reporting for all Participant message dialogues are implemented into the monitoring execution.
+The solution Design timeout and reporting for all Participant message dialogues are implemented into the monitoring execution.
-- Spring Scheduling inserts the task to monitor retry execution into ThreadPoolExecutor
+- Spring Scheduling inserts the task to monitor timeout execution into ThreadPoolExecutor
- ThreadPoolExecutor executes the task
-- a message will be retry if runtime-ACM do no receive Act message before MaxWaitMs milliseconds
+- set AC instance stateChangeResult in timeout, if ACM-runtime do no receive Act message before MaxWaitMs milliseconds
Design of Exception handling
****************************
GlobalControllerExceptionHandler
++++++++++++++++++++++++++++++++
-If error occurred during the Rest Api call, runtime-ACM responses with a proper status error code and a JSON message error.
-This class is implemented to intercept and handle AutomationCompositionException, PfModelException and PfModelRuntimeException if they are thrown during the Rest Ali calls.
+If error occurred during the Rest Api call, ACM-runtime responses with a proper status error code and a JSON message error.
+This class is implemented to intercept and handle AutomationCompositionException and PfModelRuntimeException if they are thrown during the Rest Ali calls.
All of those classes must implement ErrorResponseInfo that contains message error and status response code.
So the Exception is converted in JSON message.
RuntimeErrorController
++++++++++++++++++++++
-If wrong end-point is called or an Exception not intercepted by GlobalControllerExceptionHandler, runtime-ACM responses with a proper status error code and a JSON message error.
+If wrong end-point is called or an Exception not intercepted by GlobalControllerExceptionHandler, ACM-runtime responses with a proper status error code and a JSON message error.
This class is implemented to redirect the standard Web error page to a JSON message error.
Typically that happen when a wrong end-point is called, but also could be happen for not authorized call, or any other Exception not intercepted by GlobalControllerExceptionHandler.
@@ -313,7 +313,7 @@ RequestResponseLoggingFilter class handles version and "X-ONAP-RequestID" during
Media Type Support
******************
-runtime-ACM Rest Api supports **application/json**, **application/yaml** and **text/plain** Media Types. The configuration is implemented in CoderHttpMesageConverter.
+ACM-runtime Rest Api supports **application/json**, **application/yaml** and **text/plain** Media Types. The configuration is implemented in CoderHttpMesageConverter.
application/json
++++++++++++++++
diff --git a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
index 0fbaf897..493022d1 100644
--- a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
+++ b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
@@ -28,7 +28,7 @@ Inbound messages to participants
- PARTICIPANT_STATUS_REQ: A status request received from clamp-acm runtime server to send an immediate ParticipantStatus from all participants
- PROPERTIES_UPDATE: a message received from clamp-acm runtime server for updating the Ac instance property values
- AUTOMATION_COMPOSITION_MIGRATION: a message received from clamp-acm runtime server for migrating the Ac instance from a composition definition to a composition definition target
-- PARTICIPANT_RESTART: a message received from clamp-acm runtime server with tosca definitions and the Ac instances to handle restarting
+- PARTICIPANT_SYNC_MSG: a message received from clamp-acm runtime server with tosca definitions and the Ac instances to handle synchronization
Outbound messages
-----------------
@@ -41,12 +41,12 @@ Outbound messages
Design of a PARTICIPANT_REGISTER message
----------------------------------------
-- A participant starts and send a PARTICIPANT_REGISTER message with participantId and Supported Element Definition Types
+- A participant starts and send a PARTICIPANT_REGISTER message with participantId, replicaId and Supported Element Definition Types
- in AC-runtime ParticipantRegisterListener collects the message from Message Broker
- if participant is not present in DB, it saves participant reference with status ON_LINE to DB
- It triggers the execution to send a PARTICIPANT_REGISTER_ACK message to the participant registered
- if participant is present in DB and there are AC Definitions related to the Participant,
- it triggers the execution to send a PARTICIPANT_RESTART message to the participant restarted
+ it triggers the execution to send a PARTICIPANT_SYNC_MSG message to synchronize participant
Design of a PARTICIPANT_DEREGISTER message
------------------------------------------
diff --git a/docs/clamp/acm/files/ACM-Message-Table.csv b/docs/clamp/acm/files/ACM-Message-Table.csv
index b706fe60..da17374a 100755
--- a/docs/clamp/acm/files/ACM-Message-Table.csv
+++ b/docs/clamp/acm/files/ACM-Message-Table.csv
@@ -1,18 +1,23 @@
Message,Source,Target,Purpose,Important Fields,Field Descriptions
ParticipantRegister,Participant,ACM Runtime,Participant registers with the ACM runtime,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,participantSupportedElementTypes,A list of element types that this participant supports
,,,,messageType,Enum indicating the type of message PARTICIPANT_REGISTER
ParticipantRegisterAck,ACM Runtime,Participant,Acknowledgment of Participant Registration,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,messageType,Enum indicating the type of message PARTICIPANT_REGISTER_ACK
ParticipantDeregister,Participant,ACM Runtime,Participant deregisters with the ACM runtime,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,messageType,Enum indicating the type of message PARTICIPANT_DEREGISTER
ParticipantDeregisterAck,ACM Runtime,Participant,Acknowledgment of Participant Deegistration,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,messageType,Enum indicating the type of message PARTICIPANT_DEREGISTER_ACK
ParticipantPrime,ACM Runtime,Participant,Trigger priming/depriming in the participant,participantId,The ID of this participant – in UUID format
,,,,compositionId,The id of the AC Definition related to this message
,,,,participantDefinitionUpdates,Contains AC element definition values for a particular participant
,,,,messageType,Enum indicating the type of message PARTICIPANT_PRIME
ParticipantPrimeAck,Participant,ACM Runtime,Message to confirm participant has been primed/deprimed,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,compositionId,The id of the AC Definition related to this message
,,,,stateChangeResult,NO_ERROR/FAILED
,,,,message,A message indicating the result
@@ -20,17 +25,20 @@ ParticipantPrimeAck,Participant,ACM Runtime,Message to confirm participant has b
ParticipantStatusReq,ACM Runtime,Participant,Message sent to reques a status update from the participant,participantId,The ID of the participant to request update from – in UUID format
,,,,messageType,Enum indicating the type of message PARTICIPANT_STATUS_REQ
ParticipantStatus,Participant,ACM Runtime,Status update message,state,Enum indicating the current state of the participant
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,participantDefinitionUpdates,"A list of ParticipantDefinition updates, returned in response to ParticipantStatusReq only"
,,,,automationCompositionInfoList,List of AutomationCompositionInfo types with AutomationCompositionId and its state
,,,,participantSupportedElementTypes,Ac element types that this participant is capable for deployinh/supporting
,,,,messageType,Enum indicating the type of message PARTICIPANT_STATUS
AutomationCompositionDeploy,ACM Runtime,Participant,Message to request change state of composition to DEPLOY,participantUpdatesList,A list of ParticipantUpdates instances which carries details of an updated participant.
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,compositionId,The id of the AC Definition related to this message
,,,,automationCompositionId,The id of the automation composition related to this message
,,,,startPhase,Integer indicating the start up order of the elements
,,,,participantId,UUID indicating the participant the message is intended for
,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_DEPLOY
AutomationCompositionDeployAck,Participant,ACM Runtime,Message to acknowledge that deploy or state change message has been received by participant,automationCompositionResultMap,"A map with AutomationCompositionElementID as its key, and a pair of result and message as value per AutomationCompositionElement"
+,,,,replicaId,The replica ID of this participant – in UUID format
,,,,compositionId,The id of the AC Definition related to this message
,,,,automationCompositionId,The id of the automation composition related to this message
,,,,message,A message indicating the result
@@ -48,11 +56,15 @@ PropertiesUpdate,ACM Runtime,Participant,Message to request update,participantUp
,,,,automationCompositionId,The id of the automation composition related to this message
,,,,participantId,UUID indicating the participant the message is intended for
,,,,messageType,Enum indicating the type of message PROPERTIES_UPDATE
-ParticipantRestart,ACM Runtime,Participant,Message to request update,participantId,The ID of this participant – in UUID format
-,,,,automationcompositionList,A list of ParticipantRestartAc instances which carries details of an updated participant.
+ParticipantSync,ACM Runtime,Participant,Message to request sync,participantId,The ID of this participant – in UUID format
+,,,,replicaId,The replica ID of this participant – in UUID format
+,,,,excludeReplicas,The list of replica ID that can ignore the message – List of UUID
+,,,,automationcompositionList,A list of ParticipantRestartAc instances which carries details of an updated instances for the participant.
,,,,compositionId,The id of the AC Definition related to this message
-,,,,participantDefinitionUpdates,Contains AC element definition values for a particular participant
-,,,,messageType,Enum indicating the type of message PARTICIPANT_RESTART
+,,,,participantDefinitionUpdates,Contains AC element definition values for the participant
+,,,,delete,Flag - if true it is a delete operation
+,,,,restarting,Flag - if true it is a restarting scenario
+,,,,messageType,Enum indicating the type of message PARTICIPANT_SYNC_MSG
AutomationCompositionMigration,ACM Runtime,Participant,Message to request update,participantUpdatesList,A list of ParticipantUpdates instances which carries details of an updated participant.
,,,,compositionId,The id of the AC Definition related to this message
,,,,compositionTargetId,The id of the AC Definition target
diff --git a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png
index 6ac70cd2..01503ab2 100644
--- a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png
+++ b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png
index 5f7ef3ba..a20a6c8b 100644
--- a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png
+++ b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png
index 092e80ba..61f58d52 100755..100644
--- a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png
+++ b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png
index 4fbd81a0..b8fa61cf 100644
--- a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png
+++ b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png
index f50b187c..3a899b66 100644
--- a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png
+++ b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png
index 4c96b2c3..ea49ed0e 100755..100644
--- a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png
+++ b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png
index 435e5e1a..c502d767 100644
--- a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png
+++ b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png
index 97e8f760..cc077a8c 100644
--- a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png
+++ b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png
index 0cc8a81b..fb9608a1 100755..100644
--- a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png
+++ b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png
index bd4d1441..d69e4732 100644
--- a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png
+++ b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png
new file mode 100644
index 00000000..37333c8a
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png
index 82c15daa..d6cce208 100644
--- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png
+++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png
index bc19943f..77372d81 100644
--- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png
+++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png
index 8fd2c438..bc0277bd 100644
--- a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png
+++ b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png
index 2d23d4d6..8dd32285 100644
--- a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png
+++ b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png
index 8eef8f40..1a236a50 100644
--- a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png
+++ b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png
index 63e1062b..5a78e141 100644
--- a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png
+++ b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png
index 4c33957b..7c16653c 100644
--- a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png
+++ b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png
Binary files differ
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