aboutsummaryrefslogtreecommitdiffstats
path: root/docs/clamp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/clamp')
-rw-r--r--docs/clamp/acm/acm-architecture.rst5
-rw-r--r--docs/clamp/acm/acm-participant-guide.rst708
-rw-r--r--docs/clamp/acm/acm-states.rst99
-rw-r--r--docs/clamp/acm/acm-user-guide.rst110
-rwxr-xr-xdocs/clamp/acm/allowed-operations.rst13
-rw-r--r--docs/clamp/acm/api-protocol/acm-participant-protocol.rst13
-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.rst119
-rw-r--r--docs/clamp/acm/defining-acms.rst2
-rw-r--r--docs/clamp/acm/design-impl/clamp-gui-acm.rst140
-rw-r--r--docs/clamp/acm/design-impl/clamp-runtime-acm.rst182
-rw-r--r--docs/clamp/acm/design-impl/design-impl.rst1
-rw-r--r--docs/clamp/acm/design-impl/participants/participant-intermediary.rst55
-rw-r--r--docs/clamp/acm/files/AC-migrate-precheck.json17
-rwxr-xr-xdocs/clamp/acm/files/AC-migrate.json6
-rw-r--r--docs/clamp/acm/files/AC-prepare.json3
-rw-r--r--docs/clamp/acm/files/AC-review.json3
-rwxr-xr-xdocs/clamp/acm/files/ACM-Message-Table.csv28
-rw-r--r--docs/clamp/acm/files/simparticipant-parameters.json26
-rw-r--r--docs/clamp/acm/images/acm-states/AcInstanceSubStates.pngbin0 -> 29963 bytes
-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/MigrationPrecheckAcInstance.pngbin0 -> 39573 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.pngbin0 -> 41392 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.pngbin0 -> 39422 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/PrepareAcInstance.pngbin0 -> 37114 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.pngbin0 -> 38536 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/PrepareResponseStored.pngbin0 -> 38458 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/ReviewAcInstance.pngbin0 -> 38041 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.pngbin0 -> 38959 bytes
-rw-r--r--docs/clamp/acm/images/system-dialogues/ReviewResponseStored.pngbin0 -> 38752 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/states/AcInstanceSubStates.puml18
-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/MigrationPrecheckAcInstance.puml18
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml25
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml19
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml18
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml25
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml19
-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/ReviewAcInstance.puml18
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml25
-rw-r--r--docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml19
-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
-rw-r--r--docs/clamp/clamp.rst9
-rw-r--r--docs/clamp/pre-migration-release-notes.rst112
78 files changed, 1608 insertions, 602 deletions
diff --git a/docs/clamp/acm/acm-architecture.rst b/docs/clamp/acm/acm-architecture.rst
index c3e7d568..99bc6e91 100644
--- a/docs/clamp/acm/acm-architecture.rst
+++ b/docs/clamp/acm/acm-architecture.rst
@@ -311,7 +311,7 @@ deletions are not allowed on Automation Composition Types that have instances de
The Instantiation component manages the Life Cycle Management of Automation Composition Instances and
their Automation Composition Elements. It publishes a REST interface that is used to create Automation Composition
Instances and set values for Common and Instance Specific properties. This REST interface is
-public and is used by the ACM GUI. It may also be used by any other client via the public
+public. It may also be used by any other client via the public
REST interface. The REST interface also allows the state of Automation Composition Instances to be changed.
A user can change the state of Automation Composition Instances as described in the state transition
diagram shown in section 2 above. The Instantiation component issues update and state change
@@ -432,7 +432,7 @@ At runtime, interaction between ONAP platform services and application microserv
relatively unconstrained, so interactions between Automation Composition Elements for a given Automation
Composition Instance remain relatively unconstrained. A
`proposal to support access-controlled access to and between ONAP services
-<https://wiki.onap.org/pages/viewpage.action?pageId=103417456>`_
+<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16472429/ONAP+Next+Generation+Security+Logging+Architecture>`_
will improve this. This can be complemented by intercepting and controlling services
accesses between Automation Composition Elements for Automation Composition Instances for some/all Automation
Composition types.
@@ -496,6 +496,5 @@ The design and implementation of TOSCA Automation Compositions in CLAMP is descr
#. :ref:`The CLAMP Automation Composition Runtime Server <clamp-runtime-acm>`
#. :ref:`CLAMP Automation Composition Participants <clamp-acm-participants>`
-#. :ref:`Managing Automation Compositions using The CLAMP GUI <clamp-gui-acm>`
End of Document
diff --git a/docs/clamp/acm/acm-participant-guide.rst b/docs/clamp/acm/acm-participant-guide.rst
index b4ca885d..56710a4c 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
@@ -79,7 +91,7 @@ AutomationCompositionElementListener:
Every participant should implement a handler class that implements the AutomationCompositionElementListener interface
from the Participant Intermediary. The intermediary listener class listens for the incoming events from the ACM-runtime
and invoke the handler class implementations for various operations. This class implements the methods for deploying,
- undeploying, locking, unlocking , deleting, updating, migrating, priming, depriming requests that are coming from the ACM-runtime.
+ undeploying, locking, unlocking, deleting, updating, preparing, reviewing, migrating, migrationPrechecking, priming, depriming requests that are coming from the ACM-runtime.
The methods are as follows.
.. code-block:: java
@@ -92,9 +104,10 @@ 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, int stage) throws PfModelException;
+ 10. void migratePrecheck(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
+ 11. void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 12. void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement) 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.
@@ -107,94 +120,196 @@ ParticipantParameters:
ParticipantIntermediaryParameters getIntermediaryParameters()
-Abstract class AcElementListenerV1
-----------------------------------
-This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener implemented in 7.1.0 version.
-So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class.
-
-The Abstract class AcElementListenerV1 supports the follow methods.
-.. code-block:: java
-
- 1. void undeploy(UUID instanceId, UUID elementId) throws PfModelException;
- 2. void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException;
- 3. void lock(UUID instanceId, UUID elementId) throws PfModelException;
- 4. void unlock(UUID instanceId, UUID elementId) throws PfModelException;
- 5. void delete(UUID instanceId, UUID elementId) throws PfModelException;
- 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;
+Abstract class AcElementListenerV3
+----------------------------------
+This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener from new releases.
+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, deprime, migratePrecheck, review and prepare.
-Un example of AutomationCompositionElementHandler implemented in 7.1.0 version and how to use AcElementListenerV1 abstract class:
-
-.. code-block:: java
- @Component
- @RequiredArgsConstructor
- public class AutomationCompositionElementHandler implements AutomationCompositionElementListener {
+Methods: deploy, undeploy, lock, unlock, delete, review and prepare
+ compositionElement:
+ ====================== =======================================
+ **field** **description**
+ ====================== =======================================
+ compositionId composition definition Id
+ elementDefinitionId composition definition element Id
+ inProperties composition definition in-properties
+ outProperties composition definition out-properties
+ ====================== =======================================
+ instanceElement:
+ ============================== ===========================
+ **field** **description**
+ ============================== ===========================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment policies and policy types
+ inProperties instance in-properties
+ outProperties instance out-properties
+ ============================== ===========================
- private final ParticipantIntermediaryApi intermediaryApi;
- private final otherService otherService;
- ..............................
- }
+Method: update
+ compositionElement:
+ ====================== =======================================
+ **field** **description**
+ ====================== =======================================
+ compositionId composition definition Id
+ elementDefinitionId composition definition element Id
+ inProperties composition definition in-properties
+ outProperties composition definition out-properties
+ ====================== =======================================
+ instanceElement:
+ ============================== ================================================
+ **field** **description**
+ ============================== ================================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(before the update)**
+ outProperties instance out-properties
+ ============================== ================================================
+ instanceElementUpdated:
+ ============================== ======================================
+ **field** **description**
+ ============================== ======================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(updated)**
+ outProperties instance out-properties
+ ============================== ======================================
- @Component
- public class AutomationCompositionElementHandler extends AcElementListenerV1 {
+Methods: prime, deprime
+ composition:
+ ====================== ===================================================================
+ **field** **description**
+ ====================== ===================================================================
+ compositionId composition definition Id
+ inProperties composition definition in-properties for each definition element
+ outProperties composition definition out-properties for each definition element
+ ====================== ===================================================================
- private final OtherService otherService;
+Method: migratePrecheck
+ compositionElement:
+ ====================== =====================================================
+ **field** **description**
+ ====================== =====================================================
+ compositionId composition definition Id
+ elementDefinitionId composition definition element Id
+ inProperties composition definition in-properties
+ outProperties composition definition out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ====================== =====================================================
+ compositionElementTarget:
+ ====================== =====================================================
+ **field** **description**
+ ====================== =====================================================
+ compositionId composition definition target Id
+ elementDefinitionId composition definition target element Id
+ inProperties composition definition target in-properties
+ outProperties composition definition target out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ====================== =====================================================
+ instanceElement:
+ ============================== ===================================================
+ **field** **description**
+ ============================== ===================================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(before the migration)**
+ outProperties instance out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ============================== ===================================================
+ instanceElementMigrate:
+ ============================== ====================================================
+ **field** **description**
+ ============================== ====================================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(updated)**
+ outProperties instance out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ============================== ====================================================
- public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi, OtherService otherService) {
- super(intermediaryApi);
- this.otherService = otherService;
- }
- ..............................
- }
+Method: migrate
+ compositionElement:
+ ====================== =====================================================
+ **field** **description**
+ ====================== =====================================================
+ compositionId composition definition Id
+ elementDefinitionId composition definition element Id
+ inProperties composition definition in-properties
+ outProperties composition definition out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ====================== =====================================================
+ compositionElementTarget:
+ ====================== =====================================================
+ **field** **description**
+ ====================== =====================================================
+ compositionId composition definition target Id
+ elementDefinitionId composition definition target element Id
+ inProperties composition definition target in-properties
+ outProperties composition definition target out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ====================== =====================================================
+ instanceElement:
+ ============================== ===================================================
+ **field** **description**
+ ============================== ===================================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(before the migration)**
+ outProperties instance out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ============================== ===================================================
+ instanceElementMigrate:
+ ============================== ====================================================
+ **field** **description**
+ ============================== ====================================================
+ instanceId instance id
+ elementId instance element id
+ toscaServiceTemplateFragment
+ inProperties instance in-properties **(updated)**
+ outProperties instance out-properties
+ state element state: PRESENT, NOT_PRESENT, REMOVED, NEW
+ ============================== ====================================================
+ stage:
+ the stage of the migration that the participant has to execute
+Abstract class AcElementListenerV2
+----------------------------------
+This abstract class is introduced to help to maintain temporarily the java backward compatibility with AutomationCompositionElementListener implemented in 8.0.0 version.
+So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class.
-A second example:
+The Abstract class AcElementListenerV2 supports the follow methods.
.. code-block:: java
- @Component
- public class AutomationCompositionElementHandler implements AutomationCompositionElementListener {
-
- @Autowired
- private ParticipantIntermediaryApi intermediaryApi;
-
- @Autowired
- private otherService otherService;
- ..............................
- }
-
- @Component
- public class AutomationCompositionElementHandler extends AcElementListenerV1 {
-
- @Autowired
- private otherService otherService;
-
- public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi) {
- super(intermediaryApi);
- }
- ..............................
- }
-
-Abstract class AcElementListenerV2
-----------------------------------
-This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener from new releases.
-Any new functionality in the future will be wrapped by this class.
+ 1. void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 2. void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 3. void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 4. void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 5. void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 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 migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
+ 10. void migratePrecheck(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
+ 11. void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;
+ 12. void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement) 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, deprime, migratePrecheck, review and prepare.
-Methods: deploy, undeploy, lock, unlock and delete
+Methods: deploy, undeploy, lock, unlock, delete, review and prepare
compositionElement:
====================== =======================================
**field** **description**
@@ -243,7 +358,7 @@ Method: update
elementId instance element id
toscaServiceTemplateFragment
inProperties instance in-properties **(updated)**
- outProperties instance out-properties
+ outProperties instance out-properties
============================== ======================================
Methods: prime, deprime
@@ -256,7 +371,7 @@ Methods: prime, deprime
outProperties composition definition out-properties for each definition element
====================== ===================================================================
-Method: migrate
+Method: migrate and migratePrecheck
compositionElement:
====================== =======================================
**field** **description**
@@ -283,7 +398,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,9 +408,87 @@ Method: migrate
elementId instance element id
toscaServiceTemplateFragment
inProperties instance in-properties **(updated)**
- outProperties instance out-properties
+ outProperties instance out-properties
============================== ======================================
+
+Abstract class AcElementListenerV1
+----------------------------------
+This abstract class is introduced to help to maintain temporarily the java backward compatibility with AutomationCompositionElementListener implemented in 7.1.0 version.
+So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class.
+
+The Abstract class AcElementListenerV1 supports the follow methods.
+
+.. code-block:: java
+
+ 1. void undeploy(UUID instanceId, UUID elementId) throws PfModelException;
+ 2. void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException;
+ 3. void lock(UUID instanceId, UUID elementId) throws PfModelException;
+ 4. void unlock(UUID instanceId, UUID elementId) throws PfModelException;
+ 5. void delete(UUID instanceId, UUID elementId) throws PfModelException;
+ 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 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, migratePrecheck, review and prepare.
+
+Un example of AutomationCompositionElementHandler implemented in 7.1.0 version and how to use AcElementListenerV1 abstract class:
+
+.. code-block:: java
+
+ @Component
+ @RequiredArgsConstructor
+ public class AutomationCompositionElementHandler implements AutomationCompositionElementListener {
+
+ private final ParticipantIntermediaryApi intermediaryApi;
+ private final otherService otherService;
+ ..............................
+ }
+
+ @Component
+ public class AutomationCompositionElementHandler extends AcElementListenerV1 {
+
+ private final OtherService otherService;
+
+ public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi, OtherService otherService) {
+ super(intermediaryApi);
+ this.otherService = otherService;
+ }
+ ..............................
+ }
+
+
+
+A second example:
+
+.. code-block:: java
+
+ @Component
+ public class AutomationCompositionElementHandler implements AutomationCompositionElementListener {
+
+ @Autowired
+ private ParticipantIntermediaryApi intermediaryApi;
+
+ @Autowired
+ private otherService otherService;
+ ..............................
+ }
+
+ @Component
+ public class AutomationCompositionElementHandler extends AcElementListenerV1 {
+
+ @Autowired
+ private otherService otherService;
+
+ public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi) {
+ super(intermediaryApi);
+ }
+ ..............................
+ }
+
+
APIs to invoke
--------------
ParticipantIntermediaryApi:
@@ -331,6 +524,7 @@ This following methods are invoked to update the AC element state or AC element
1. void updateAutomationCompositionElementState(UUID instanceId, UUID elementId, DeployState deployState, LockState lockState, StateChangeResult stateChangeResult, String message);
2. void updateCompositionState(UUID compositionId, AcTypeState state, StateChangeResult stateChangeResult, String message);
+ 3. void updateAutomationCompositionElementStage(UUID instance, UUID elementId, StateChangeResult stateChangeResult, int stage, String message);
In/Out composition Properties
-----------------------------
@@ -415,7 +609,7 @@ In/Out instance Properties
* during DEPLOIYNG (Out Properties will be take from last changes matching by elementId)
* during UNDEPLOING
* during LOCKING/UNLOCKING
- * during UPDATING/MIGRATING
+ * during UPDATING/MIGRATING/PREPARE/REVIEW/MIGRATION_PRECHECKING
Participants will receive the in/out instance Properties related to the element by InstanceElementDto class.
@@ -440,13 +634,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 +694,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
@@ -533,7 +730,7 @@ The following example shows the Handler implementation and how could be the impl
.. code-block:: java
@Component
- public class AutomationCompositionElementHandler extends AcElementListenerV2 {
+ public class AutomationCompositionElementHandler extends AcElementListenerV3 {
@Override
public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
@@ -617,7 +814,7 @@ The following example shows the Handler implementation and how could be the impl
@Override
public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
- InstanceElementDto instanceElementUpdated) throws PfModelException {
+ InstanceElementDto instanceElementUpdated) throws PfModelException {
// TODO update process
@@ -634,15 +831,25 @@ The following example shows the Handler implementation and how could be the impl
@Override
public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
- InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate)
- throws PfModelException
+ InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate, int stage)
+ throws PfModelException
- // TODO migrate process
+ switch (instanceElementMigrate.state()) {
+ case NEW -> // TODO new element scenario
+ case REMOVED -> // TODO element remove scenario
+ default -> // TODO migration process
+ }
if (isMigrateSuccess()) {
- intermediaryApi.updateAutomationCompositionElementState(
- instanceElement.instanceId(), instanceElement.elementId(),
- DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated");
+ if (isStageCompleted()) {
+ intermediaryApi.updateAutomationCompositionElementState(
+ instanceElement.instanceId(), instanceElement.elementId(),
+ DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated");
+ } else {
+ intermediaryApi.updateAutomationCompositionElementStage(
+ instanceElement.instanceId(), instanceElement.elementId(),
+ StateChangeResult.NO_ERROR, nextStage, "stage " + stage + " Migrated");
+ }
} else {
intermediaryApi.updateAutomationCompositionElementState(
instanceElement.instanceId(), instanceElement.elementId(),
@@ -651,6 +858,36 @@ The following example shows the Handler implementation and how could be the impl
}
@Override
+ public void migratePrecheck(UUID instanceId, UUID elementId) throws PfModelException {
+
+ // TODO migration Precheck process
+
+ intermediaryApi.updateAutomationCompositionElementState(
+ instanceElement.instanceId(), instanceElement.elementId(),
+ DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migration precheck completed");
+ }
+
+ @Override
+ public void prepare(UUID instanceId, UUID elementId) throws PfModelException {
+
+ // TODO prepare process
+
+ intermediaryApi.updateAutomationCompositionElementState(
+ instanceElement.instanceId(), instanceElement.elementId(),
+ DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Prepare completed");
+ }
+
+ @Override
+ public void review(UUID instanceId, UUID elementId) throws PfModelException {
+
+ // TODO review process
+
+ intermediaryApi.updateAutomationCompositionElementState(
+ instanceElement.instanceId(), instanceElement.elementId(),
+ DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Review completed");
+ }
+
+ @Override
public void prime(CompositionDto composition) throws PfModelException {
// TODO prime process
@@ -679,52 +916,58 @@ 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");
- }
+Allowed state from the participant perspective
+----------------------------------------------
+
++------------+--------------+---------------------+-------------------------+
+| **Action** | **state** | **stChResult** | **Description** |
++------------+--------------+---------------------+-------------------------+
+| | PRIMED | NO_ERROR | Prime is completed |
++ Prime +--------------+---------------------+-------------------------+
+| | COMMISSIONED | FAILED | Prime is failed |
++------------+--------------+---------------------+-------------------------+
+| | COMMISSIONED | NO_ERROR | Deprime is completed |
++ Deprime +--------------+---------------------+-------------------------+
+| | PRIMED | FAILED | Deprime is failed |
++------------+--------------+---------------------+-------------------------+
+
++------------------+-----------------+---------------+----------------+----------------------------------+
+| **Action** | **deployState** | **lockState** | **stChResult** | **Description** |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | NO_ERROR | Deploy is completed |
++ Deploy +-----------------+---------------+----------------+----------------------------------+
+| | UNDEPLOYED | | FAILED | Deploy is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | UNDEPLOYED | | NO_ERROR | Undeploy is completed |
+| Undeploy +-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | FAILED | Undeploy is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | | LOCKED | NO_ERROR | Lock is completed |
++ Lock +-----------------+---------------+----------------+----------------------------------+
+| | | UNLOCKED | FAILED | Lock is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | | UNLOCKED | NO_ERROR | Unlock is completed |
++ Unlock +-----------------+---------------+----------------+----------------------------------+
+| | | LOCKED | FAILED | Unlock is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | NO_ERROR | Update is completed |
+| Update +-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | FAILED | Update is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | NO_ERROR | Migration is completed |
++ Migrate +-----------------+---------------+----------------+----------------------------------+
+| | DEPLOYED | | FAILED | Migration is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| Migrate Precheck | DEPLOYED | | NO_ERROR | Migration-precheck is completed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| Prepare | UNDEPLOYED | | NO_ERROR | Prepare is completed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| Review | DEPLOYED | | NO_ERROR | Review is completed |
++------------------+-----------------+---------------+----------------+----------------------------------+
+| | DELETED | | NO_ERROR | Delete is completed |
+| Delete +-----------------+---------------+----------------+----------------------------------+
+| | UNDEPLOYED | | FAILED | Delete is failed |
++------------------+-----------------+---------------+----------------+----------------------------------+
AC Element states in failure scenarios
@@ -765,6 +1008,179 @@ Migrate fails Deployed
Considering the above mentioned behavior of the participant Intermediary, it is the responsibility of the developer to tackle the
error scenarios in the participant with the suitable approach.
-Tips:
-If the participant tries to undeploy an element which doesn’t exist in the system any more (due to various other external factors),
-it could update the element state to ‘undeployed’ using the Intermediary api.
+Handle states and failure scenarios from the participant perspective
+--------------------------------------------------------------------
+
+It is important to make distinction between the state of the instance/element flow, and the state of the application/configuration involved.
+A deployed element means that a participant has completed a deploy action, and should not be confused with a deployed application.
+Example with two elements:
+
+1. an instance is deployed, so the two elements are DEPLOYED
+2. user calls undeploy command (ACM-R sets all element as DEPLOYING)
+3. participant executes the first instance element with success and sends UNDEPLOYED state
+4. participant executes the second instance element with fail and sends DEPLOYED state
+5. user calls undeploy command again (ACM-R sets all element as DEPLOYING)
+6. participant does not know that the application related to the first element is already UNDEPLOYED when the flow state is UNDEPLOYING
+
+There are some contexts in a failure scenario that the participant need to know the state of the deployed application.
+From participant side, using "outProperties" it could be possible to handle custom states that better suit whit the context.
+
+Example of a participant that deploy/undeploy applications.
+The following Java code shows how to implement deploy and undeploy that avoid to repeat the action already executed.
+
+.. code-block:: java
+
+ @Override
+ public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
+ throws PfModelException {
+
+ if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) {
+ // deploy process already done
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR,
+ "Already Deployed");
+ return;
+ }
+
+ // deployment process
+ .......................................
+ .......................................
+ // end of the deployment process
+
+ if (isDeploySuccess()) {
+ instanceElement.outProperties().put("state", "DEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Deployed");
+ } else {
+ instanceElement.outProperties().put("state", "UNDEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.FAILED, "Deploy failed!");
+ }
+ }
+
+ @Override
+ public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
+ throws PfModelException {
+
+ if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) {
+ // undeploy process already done
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR,
+ "Already Undeployed");
+ return;
+ }
+
+ // undeployment process
+ .......................................
+ .......................................
+ // end of the undeployment process
+
+ if (isUndeploySuccess()) {
+ instanceElement.outProperties().put("state", "UNDEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Undeployed");
+ } else {
+ instanceElement.outProperties().put("state", "DEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.FAILED, "Undeploy failed!");
+ }
+ }
+
+
+Example of a participant that make configurations.
+The following Java code shows how to implement deploy and undeploy that needs a clean up and repeat the action.
+The state of the configuration will saved in outProperties.
+
+.. code-block:: java
+
+ @Override
+ public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException {
+
+ if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) {
+ // clean up deployment
+
+ } else if ("DEPLOYING".equals(state) || "UNDEPLOYING".equals(state)) {
+ // check and clean up
+
+ }
+
+ // deployment process
+ instanceElement.outProperties().put("state", "DEPLOYING");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ .......................................
+ .......................................
+ // end of the deployment process
+
+ if (isDeploySuccess()) {
+ instanceElement.outProperties().put("state", "DEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Deployed");
+ } else {
+ instanceElement.outProperties().put("state", "UNDEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.FAILED, "Deploy failed!");
+ }
+ }
+
+ @Override
+ public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
+ throws PfModelException {
+
+ if ("UNDEPLOYED".equals(instanceElement.outProperties().get("state"))) {
+ // clean up undeployment
+
+ } else if ("DEPLOYING".equals(state) || "UNDEPLOYING".equals(state)) {
+ // check and clean up
+
+ }
+
+ // undeployment process
+ instanceElement.outProperties().put("state", "UNDEPLOYING");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ .......................................
+ .......................................
+ // end of the undeployment process
+
+ if (isUndeploySuccess()) {
+ instanceElement.outProperties().put("state", "UNDEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Undeployed");
+ } else {
+ instanceElement.outProperties().put("state", "DEPLOYED");
+ intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(),
+ null, null, instanceElement.outProperties());
+
+ intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
+ instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.FAILED, "Undeploy failed!");
+ }
+ }
+
+
+*In all suggestions shown before we have used labels as "DEPLOY", "UNDEPLOY", "DEPLOYING", "UNDEPLOYING" but the developer can change them as better suit with the context of the participant.*
+
diff --git a/docs/clamp/acm/acm-states.rst b/docs/clamp/acm/acm-states.rst
index 215baf71..7a3222a5 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,96 @@ Delete
.. image:: images/acm-states/AcInstanceStatesDelete.png
+Automation Composition Instance Sub State
+=========================================
+The sub states that an Automation Composition Instance can have are shown in the diagram below.
+
+.. image:: images/acm-states/AcInstanceSubStates.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 DeployState
+===========================================
+
++---------------+------------+
+| DeployState | Database |
++===============+============+
+| DEPLOYED | 0 |
++---------------+------------+
+| DEPLOYING | 1 |
++---------------+------------+
+| UNDEPLOYED | 2 |
++---------------+------------+
+| UNDEPLOYING | 3 |
++---------------+------------+
+| DELETING | 4 |
++---------------+------------+
+| DELETED | 5 |
++---------------+------------+
+| UPDATING | 6 |
++---------------+------------+
+| MIGRATING | 7 |
++---------------+------------+
+
+Automation Composition Instance Lock State
+==========================================
+
++-------------+------------+
+| LockState | Database |
++=============+============+
+| LOCKED | 0 |
++-------------+------------+
+| LOCKING | 1 |
++-------------+------------+
+| UNLOCKED | 2 |
++-------------+------------+
+| UNLOCKING | 3 |
++-------------+------------+
+| NONE | 4 |
++-------------+------------+
+
+Automation Composition Instance Sub State
+=========================================
+
++-------------------------+------------+
+| SubState | Database |
++=========================+============+
+| NONE | 0 |
++-------------------------+------------+
+| MIGRATION_PRECHECKING | 1 |
++-------------------------+------------+
+| PREPARING | 2 |
++-------------------------+------------+
+| REVIEWING | 3 |
++-------------------------+------------+
+
End of Document
diff --git a/docs/clamp/acm/acm-user-guide.rst b/docs/clamp/acm/acm-user-guide.rst
index 3c56f906..8cc4c40f 100644
--- a/docs/clamp/acm/acm-user-guide.rst
+++ b/docs/clamp/acm/acm-user-guide.rst
@@ -232,6 +232,30 @@ Example payload to update the base url of the http request
:language: json
+Prepare AC instance
+-------------------
+Once the AC instance is created, the user can prepare the instance which in turn activates the corresponding participants to execute the intended operations.
+In this case, the participants that support that action will be send the result by outProperties.
+
+.. code-block:: bash
+
+ Invoke a PUT request
+ 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}'
+
+This returns a 202 response on a successful prepare order request. The elements will be in "PREPARING" sub state until the completion.
+The current status and result can be fetched through the following endpoint.
+
+.. code-block:: bash
+
+ Invoke a GET request
+ 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}'
+
+Request payload
+
+.. literalinclude:: files/AC-prepare.json
+ :language: json
+
+
Deploy AC instance
------------------
Once the AC instance is created, the user can deploy the instance which in turn activates the corresponding participants to execute the intended operations.
@@ -265,6 +289,29 @@ Once all the AC elements are deployed, there should be a test microservice pod r
configured to send events on the kafka by the http participant. This can be verified on the test microservice application logs.
The AC instances can also be undeployed and deleted by the user.
+Review AC instance
+------------------
+Once the AC instance is deployed, the user can review the instance which in turn activates the corresponding participants to execute the intended operations.
+In this case, the participants that support that action will be send the result by outProperties.
+
+.. code-block:: bash
+
+ Invoke a PUT request
+ 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}'
+
+This returns a 202 response on a successful review order request. The elements will be in "REVIEWING" sub state until the completion.
+The current status and result can be fetched through the following endpoint.
+
+.. code-block:: bash
+
+ Invoke a GET request
+ 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}'
+
+Request payload
+
+.. literalinclude:: files/AC-review.json
+ :language: json
+
Update AC instance properties after deployment (Optional)
---------------------------------------------------------
After the AC instance is deployed, the user can still update the instance property values if needed. In this case, the runtime updates these new values
@@ -279,11 +326,33 @@ required operation.
Note:
Please refer the request payload section for updating the instance properties before deployment.
+Migrate-Precheck AC instance
+----------------------------
+After the AC instance is deployed, the user can trigger a migrate-precheck from it to other composition definition.
+The target composition have to be primed.
+The user can emulate an update of the instance property values if needed.
+
+.. code-block:: bash
+
+ Invoke a POST request
+ 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances'
+
+Request Payload
+
+Example payload to migrate-precheck
+
+.. literalinclude:: files/AC-migrate-precheck.json
+ :language: json
+
Migrate AC instance
-------------------
After the AC instance is deployed, the user can migrate it to other composition definition.
-The target composition have to be primed and have to contain the same element definitions present in the source composition.
-The user can update the instance property values if needed.
+The target composition have to be primed and there can be an addition/removal of elements at this stage.
+The user can update the instance property values for the existing elements if needed.
+A new element can be added and any elements that are no longer needed can be removed from the target composition and
+the migration payload.
+The migration payload should contain the updated element list for the instance.
+
.. code-block:: bash
@@ -293,6 +362,8 @@ The user can update the instance property values if needed.
Request Payload
Example payload to migrate and update the base url of the http request
+A new element with id "709c62b3-8918-41b9-a747-d21eb79c6c22" has been added during migration which will be deployed
+by the participant.
.. literalinclude:: files/AC-migrate.json
:language: json
@@ -324,8 +395,8 @@ This deletes the AC instance from the database including all the element propert
This returns a 202 response on successful delete order request.
-Deprime Ac defintions
----------------------
+Deprime Ac definitions
+----------------------
Once the AC instance is deleted, it can be deprimed from the participants to be safely deleted from the database.
.. code-block:: bash
@@ -339,8 +410,8 @@ Request payload
.. literalinclude:: files/AC-depriming.json
:language: json
-Delete AC defintion
--------------------
+Delete AC definition
+--------------------
The AC definitions can be deleted if there are no instances are running and it is not primed to the participants.
.. code-block:: bash
@@ -393,28 +464,8 @@ Parameters like delay and success/fail could be set any time using the following
The Json below is an example of configuration:
-.. code-block:: json
-
- {
- "deploySuccess": true,
- "undeploySuccess": true,
- "lockSuccess": true,
- "unlockSuccess": true,
- "deleteSuccess": true,
- "updateSuccess": true,
- "migrateSuccess": true,
- "primeSuccess": true,
- "deprimeSuccess": true,
- "deployTimerMs": 1000,
- "undeployTimerMs": 1000,
- "migrateTimerMs": 100,
- "lockTimerMs": 100,
- "unlockTimerMs": 100,
- "updateTimerMs": 100,
- "deleteTimerMs": 100,
- "primeTimerMs": 100,
- "deprimeTimerMs": 100
- }
+.. literalinclude:: files/simparticipant-parameters.json
+ :language: json
Update and send composition outProperites
-----------------------------------------
@@ -504,6 +555,7 @@ Default value of 'element.handler' is the most recent version.
==================== ====================
AcElementHandlerV1 AcElementListenerV1
AcElementHandlerV2 AcElementListenerV2
+AcElementHandlerV3 AcElementListenerV3
==================== ====================
Example:
@@ -511,4 +563,4 @@ Example:
.. code-block:: yaml
element:
- handler: AcElementHandlerV1
+ handler: AcElementHandlerV3
diff --git a/docs/clamp/acm/allowed-operations.rst b/docs/clamp/acm/allowed-operations.rst
index 62de7ffc..12fca00e 100755
--- a/docs/clamp/acm/allowed-operations.rst
+++ b/docs/clamp/acm/allowed-operations.rst
@@ -129,3 +129,16 @@ Change status of Automation Composition Instance
+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+
| | DEPLOYED | LOCKING | TIMEOUT | Start Unlocking transition and send unlock to participants after LOCKING got timeout |
+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+
+
+Sub status of Automation Composition Instance
+---------------------------------------------
+
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| **Action** | **deployState** | **lockState** | **Description** |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Prepare | UNDEPLOYED | | Start Preparing transition and send prepare to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Review | DEPLOYED | LOCKED | Start Reviewing transition and send review to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Migration-Precheck | DEPLOYED | LOCKED | Start Migration-Prechecking transition and send Migration-Precheck to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
diff --git a/docs/clamp/acm/api-protocol/acm-participant-protocol.rst b/docs/clamp/acm/api-protocol/acm-participant-protocol.rst
index 2b6beaca..d384633a 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
@@ -33,7 +36,7 @@ Participant Deregistration is performed by a Participant when it shuts down. It
Automation Composition Priming and De-Priming
---------------------------------------------
-The Priming operation sends Automation Composition Types and common property values to participants for each Automation Composition Element Type in the Automation Composition Type. The ParticipantPrime message type is sent to trigger priming and depriming in participants in participants
+The Priming operation sends Automation Composition Types and common property values to participants for each Automation Composition Element Type in the Automation Composition Type. The ParticipantPrime message type is sent to trigger priming and depriming in participants.
.. image:: ../images/system-dialogues/PrimeAcTypeOnPpnts.png
@@ -62,7 +65,7 @@ Automation Composition Update
Automation Composition Update handles creation, change, and deletion of Automation Compositions on
participants. Change of Automation Compositions uses a semantic versioning approach and follows the
-semantics described on the page :ref:`4.1 Management of Automation Composition Instance
+semantics described on the page :ref:`5.1 Management of Automation Composition Instance
Configurations <management-acm-instance-configs>`.
.. image:: ../images/acm-participants-protocol/acm-update.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..ec03353c 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,11 +129,26 @@ 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
-3.3 Deploy Automation Composition Instance
+3.3 Prepare Automation Composition Instance
+-------------------------------------------
+Prepare is a check system from participant before the deployment of an instance, the result will stored in outProperties and not other changes are allowed.
+The user requests the AC Instance to be prepared using a REST endpoint. The ACM Runtime orders the AC Instance to be prepared to Participants.
+
+.. image:: ../images/system-dialogues/PrepareAcInstance.png
+
+Each participant prepares its AC Element Instances from the AC Instance.
+
+.. image:: ../images/system-dialogues/PrepareAcInstanceElements.png
+
+The ACM Runtime receives and stores the responses, and send sync message to all replicas.
+
+.. image:: ../images/system-dialogues/PrepareResponseStored.png
+
+3.4 Deploy Automation Composition Instance
------------------------------------------
The user requests the AC Instance to be deployed using a REST endpoint. The ACM Runtime orders the AC Instance to be deployed to Participants.
@@ -136,11 +158,26 @@ 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
-3.4 Update Automation Composition Instance
+3.5 Review Automation Composition Instance
+------------------------------------------
+Review is a check system from participant after the deployment of an instance, the result will stored in outProperties and not other changes are allowed.
+The user requests the AC Instance to be Reviewed using a REST endpoint. The ACM Runtime orders the AC Instance to be reviewed to Participants.
+
+.. image:: ../images/system-dialogues/ReviewAcInstance.png
+
+Each participant reviews its AC Element Instances from the AC Instance.
+
+.. image:: ../images/system-dialogues/ReviewAcInstanceElements.png
+
+The ACM Runtime receives and stores the responses, and send sync message to all replicas.
+
+.. image:: ../images/system-dialogues/ReviewResponseStored.png
+
+3.6 Update Automation Composition Instance
------------------------------------------
The user requests the AC Instance to be updated using a REST endpoint. The ACM Runtime orders the AC Instance to be updated.
@@ -150,11 +187,26 @@ 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
-3.5 Migrate Automation Composition Instance
+3.7 Migration Precheck Automation Composition Instance
+------------------------------------------------------
+Migration Precheck is a check system from participant before the migration of an instance, the result will stored in outProperties and not other changes are allowed.
+The user requests a Migration Precheck for the AC Instance using a REST endpoint. The ACM Runtime orders the Migration Precheck for AC Instance to Participants.
+
+.. image:: ../images/system-dialogues/MigrationPrecheckAcInstance.png
+
+Each participant execute a Migration Precheck to its AC Element Instances from the AC Instance.
+
+.. image:: ../images/system-dialogues/MigrationPrecheckAcInstanceElements.png
+
+The ACM Runtime receives and stores the responses, and send sync message to all replicas.
+
+.. image:: ../images/system-dialogues/MigrationPrecheckResponseStored.png
+
+3.8 Migrate Automation Composition Instance
-------------------------------------------
The user requests the AC Instance to be migrated using a REST endpoint. The ACM Runtime orders the AC Instance to be migrated.
@@ -164,11 +216,11 @@ 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
-3.6 Undeploy Automation Composition Instance
+3.9 Undeploy Automation Composition Instance
--------------------------------------------
The user requests the AC Instance to be undeployed using a REST endpoint. The ACM Runtime orders the AC Instance to be undeployed.
@@ -178,17 +230,17 @@ 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
-3.7 Read Automation Composition Instances
------------------------------------------
+3.10 Read Automation Composition Instances
+------------------------------------------
.. image:: ../images/system-dialogues/ReadAcInstances.png
-3.8 Unlock Automation Composition Instance
-------------------------------------------
+3.11 Unlock Automation Composition Instance
+-------------------------------------------
The user requests the AC Instance to be unlocked using a REST endpoint. The ACM Runtime orders the AC Instance to be unlocked on Participants.
.. image:: ../images/system-dialogues/OrderInstanceUnlock.png
@@ -197,12 +249,12 @@ 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
-3.9 Lock Automation Composition Instance
-----------------------------------------
+3.12 Lock Automation Composition Instance
+-----------------------------------------
The user requests the AC Instance to be locked using a REST endpoint. The ACM Runtime orders the AC Instance to be locked on Participants.
.. image:: ../images/system-dialogues/LockAcInstance.png
@@ -211,21 +263,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.13 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.14 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 +317,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.15 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/defining-acms.rst b/docs/clamp/acm/defining-acms.rst
index a9f2fbef..f2fb82e2 100644
--- a/docs/clamp/acm/defining-acms.rst
+++ b/docs/clamp/acm/defining-acms.rst
@@ -100,7 +100,7 @@ The Kubernetes Participant runs Kubernetes Automation Composition Elements. Each
Element manages a Kubernetes microservice using Helm. The user defines the Helm chart for the
Kubernetes microservice as well as other properties that the microservice requires in order to
execute. The Yaml file that holds the
-`Kubernetes Automation Composition Element Type defintion is available in Github
+`Kubernetes Automation Composition Element Type definition is available in Github
<https://github.com/onap/policy-clamp/blob/master/common/src/main/resources/tosca/KubernetesAutomationCompositionElementType.yaml>`_
and is the canonical definition of the Kubernetes Automation Composition Element type. For a description
of the Kubernetes Automation Composition Element and Kubernetes Participant,please see
diff --git a/docs/clamp/acm/design-impl/clamp-gui-acm.rst b/docs/clamp/acm/design-impl/clamp-gui-acm.rst
deleted file mode 100644
index 600c721d..00000000
--- a/docs/clamp/acm/design-impl/clamp-gui-acm.rst
+++ /dev/null
@@ -1,140 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-
-.. _clamp-gui-acm:
-
-The Policy GUI for Automation Compositions
-******************************************
-
-.. contents::
- :depth: 4
-
-.. _Introduction:
-
-1. Introduction
-###############
-The Policy GUI for Automation Compositions is designed to provide a user the ability to interact with the Automation Composition Runtime to perform several actions. The actual technical design of the Automation Composition Runtime is detailed in :ref:`clamp-runtime-acm`. All of the endpoints and the purpose for accessing those endpoints is discussed there. In the current release of the GUI, the main purposes are to perform the below:
-
-- Commission new Tosca Service Templates.
-- Editing Common Properties.
-- Priming/De-priming Automation Composition Definitions.
-- Decommission existing Tosca Service Templates.
-- Create new instances of Automation Compositions.
-- Change the state of the Automation Compositions.
-- Delete Automation Compositions.
-
-These functions can be carried out by accessing the Automation Composition Runtime alone but this should not be required for a typical user to access the system. That is why the Automation Composition GUI is required. The remainder of this document will be split into 2 main sections. The first section will show the overall architecture of Automation Composition with the GUI included, so that the reader can see where it fits in to the system. Then the section will outline the individual components required for a working GUI and outline how GUI interacts with these components and why. The final section has a diagram to show the flow of typical operations from the GUI, all the way down to the participants.
-
-2. GUI-focussed System Architecture
-###################################
-An architectural/functional diagram has bee provided in below. This does not show details of the other components involved in the GUI functionality. Most of the detail is provided for the GUI itself.
-
- .. image:: ../images/gui/GUI-Architecture.png
- :align: center
-
-The remainder of this section outlines the different elements that comprise the architecture of the GUI and how the different elements connect to one another.
-
-2.1 Policy CLAMP GUI
---------------------
-
-2.1.1 CLAMP GUI
-================
-The original Clamp project used the GUI to connect to various onap services, including policy api, policy pap, dcae, sdc and cds. Connection to all of these services is managed by the Camel Exchange present in the section :ref:`Policy Clamp Backend`.
-
-Class-based react components are used to render the different pages related to functionality around
-
-- Creating loop instances from existing templates that have been distributed by SDC.
-- Deploying/Undeploying policies to the policy framework.
-- Deploying/Undeploying microservices to the policy framework.
-- Deleting Instances.
-
-
-2.1.2 Automation Composition GUI
-================================
-
-The current automation composition GUI is an extension of the previously created GUI for the Clamp project. The Clamp project used the CLAMP GUI to connect to various onap services, including policy api, policy pap, dcae, sdc and cds. Although the current automation composition project builds upon this GUI, it does not rely on these connected services. Instead, the Automation Composition GUI connects to the Automation Composition Runtime only. The Automation Composition Runtime then communicates with the database and all the Automation Composition participants (indirectly) over Kafka.
-
-The CLAMP GUI was originally housed in the clamp repository but for the Istanbul release, it has been moved to the policy/gui repo. There are 3 different GUIs within this repository - clamp-gui (and Automation Composition gui) code is housed under the "gui-clamp" directory and the majority of development takes place within the "gui-clamp/ui-react" directory.
-
-The original CLAMP GUI was created using the React framework, which is a light-weight framework that promotes use of component-based architecture. Previously, a class-based style was adopted to create the Clamp components. It was decided that Automation Composition would opt for the more concise functional style of components. This architecture style allows for the logical separation of functionality into different components and minimizes bloat. As you can see from the image, there is a "Automation Composition" directory under components where all of our Automation Composition components are housed.
-
- .. image:: ../images/gui/ComponentFileStructure.png
-
-Any code that is directly involved in communication with outside services like Rest Apis is under "ui-react/src/api". The "fetch" Javascript library is used for these calls. The Automation Composition service communicates with just the Automation Composition Runtime Rest Api, so all of the communication code is within "ui-react/src/api/AutomationCompositionService.js".
-
-2.1.2.1 Services
-""""""""""""""""
-The Automation Composition GUI is designed to be service-centric. This means that the code involved in rendering and manipulating data is housed in a different place to the code responsible for communication with outside services. The Automation Composition related services are those responsible for making calls to the commissioning and instantiation endpoints in the Automation Composition Runtime. Another detail to note is that both the Automation Composition and CLAMP GUI use a proxy to forward requests to the policy clamp backend. Any URLs called by the frontend that contain the path "restservices/clds/v2/" are forwarded to the backend. Services are detailed below:
-
-- A commissioning call is provided for contacting the commissioning API to commission a tosca service template.
-- A decommissioning call is provided for calling the decommissioning endpoint.
-- A call to retrieve the tosca service template from the runtime is provided. This is useful for carrying out manipulations on the template, such as editing the common properties.
-- A call to get the common or instance properties is provided. This is used to provide the user an opportunity to edit these properties.
-- Calls to allow creation and deletion of an instance are provided
-- Calls to change the state of and instance are provided.
-- Calls to get the current state and ordered state of the instances, effectively monitoring.
-
-These services provide the data and communication functionality to allow the user to perform all of the actions mentioned in the :ref:`Introduction`.
-
-2.1.2.2 Components
-""""""""""""""""""
-The components in the architecture image reflect those rendered elements that are presented to the user. Each element is designed to be as user-friendly as possible, providing the user with clean uncluttered information. Note that all of these components relate to and were designed around specific system dialogues that are present in :ref:`system-level-label`.
-
-- For commissioning, the user is provided with a simple file upload. This is something the user will have seen many times before and is self explanatory.
-- For the edit of common properties, a JSON editor is used to present whatever common properties that are present in the service template to the user in as simple a way possible. The user can then edit, save and recommission.
-- A link is provided to manage the tosca service template, where the user can view the file that has been uploaded in JSON format and optionally delete it.
-- Several functions are exposed to the user in the "Manage Instances" modal. From there they can trigger, creation of an instance, view monitoring information, delete an instance and change the state.
-- Before an instance is created, the user is provided an opportunity to edit the instance properties. That is, those properties that have not been marked as common.
-- The user can change the state of the instance by using the "Change" button on the "Manage Instances" modal. This is effectively where the user can deploy and undeploy an instance.
-- Priming and De-priming take place as a result of the action of commissioning and decommissioning a tosca service template. A more complete discussion of priming and de-priming is found here :ref:`acm-participant-protocol-label`.
-- As part of the "Manage Instances" modal, we can monitor the state of the instances in 2 ways. The color of the instance highlight in the table indicates the state (grey - uninitialised, passive - yellow, green - running). Also, there is a monitoring button that allows use to view the individual elements' state.
-
-.. _Policy Clamp Backend:
-
-2.2 Policy Clamp Backend
-------------------------
-The only Rest API that the Automation Composition frontend (and CLAMP frontend) communicates with directly is the Clamp backend. The backend is written in the Springboot framework and has many functions. In this document, we will only discuss the Automation Composition related functionality. Further description of non-acm Clamp and its' architecture can be found in :ref:`architecture-label`. The backend receives the calls from the frontend and forwards the requests to other relevant APIs. In the case of the Automation Composition project, the only Rest API that it currently requires communication with is the runtime Automation Composition API. Automation Composition adopts the same "request forwarding" method as the non-acm elements in the CLAMP GUI. This forwarding is performed by Apache Camel Exchanges, which are specified in XML and can be found in the directory shown below in the Clamp repository.
-
- .. image:: ../images/gui/CamelDirectory.png
-
-The Rest Endpoints for the GUI to call are defined in "clamp-api-v2.xml" and all of the runtime Automation Composition rest endpoints that GUI requests are forwarded to are defined in acm-flows.xml. If an Endpoint is added to the runtime Automation Composition component, or some other component you wish the GUI to communicate with, a Camel XML exchange must be defined for it here.
-
-2.3 Automation Composition Runtime
-----------------------------------
-This is where all of the endpoints for operations on Automation Compositions are defined thus far. Commissioning, decommissioning, automation composition creation, automation composition state change and automation composition deletion are all performed here. The component is written using the Springboot framework and all of the code is housed in the runtime-acm directory shown below:
-
- .. image:: ../images/gui/RuntimeAcmDirectory.png
-
-The rest endpoints are split over two main classes; CommissioningController.java and InstantiationController.java. There are also some rest endpoints defined in the MonitoringQueryController. These classes have minimal business logic defined in them and delegate these operations to other classes within the controlloop.runtime package. The Automation Composition Runtime write all data received on its' endpoints regarding commissioning and instantiation to its; database, where it can be easily accessed later by the UI.
-
-The Runtime also communicates with the participants over Kafka. Commissioning a automation composition definition writes it to the database but also triggers priming of the definitions over Kafka. The participants then receive those definitions and hold them in memory. Similarly, upon decommissioning, a message is sent over Kafka to the participants to trigger de-priming.
-
-Using Kafka, the Runtime can send; updates to the automation composition definitions, change the state of automation compositions, receive information about participants, receive state information about automation compositions and effectively supervise the automation compositions. This data is then made available via Rest APIs that can be queried by the frontend. This is how the GUI can perform monitoring operations.
-
-More detail on the design of the Runtime Automation Composition can be found in :ref:`clamp-runtime-acm`.
-
-2.4 Kafka
----------
-Kafka is component that provides data movement services that transports and processes data from any source to any target. It provides the capability to:
-- Support the transfer of messages between ONAP components, as well as to other components
-- Support the transfer of data between ONAP components as well as to other components.
-- Data Filtering capabilities
-- Data Processing capabilities
-- Data routing (file based transport)
-- Message routing (event based transport)
-- Batch and event based processing
-
-Specifically, regarding the communication between the Automation Composition Runtime and the Automation Composition Participants, both components publish and subscribe to a specific topic, over which data and updates from the participants and automation compositions are sent. The Automation Composition Runtime updates the current statuses sent from the participants in the database and makes them available the the GUI over the Rest API.
-
-2.5 The Participants
---------------------
-The purpose of the Automation Composition participants is to communicate with different services on behalf of the Automation Composition Runtime. As there are potentially many different services that a Automation Composition might require access to, there can be many different participants. For example, the kubernetes participant is responsible for carrying out operations on a kubernetes cluster with helm. As of the time of writing, there are three participants defined for the Automation Composition project; the policy participant, the kubernetes participant and the http participant. The participants are housed in the directory shown below in the policy-clamp repo.
-
- .. image:: ../images/gui/ParticipantsDirectory.png
-
-The participants communicate with the Runtime over Kafka. Tosca service template specifications, Automation Composition updates and state changes are shared with the participants via messages from runtime Automation Composition through the topic "POLICY-CLRUNTIME-PARTICIPANT".
-
-3. GUI Sample Flows
-###################
-The primary flows from the GUI to the backend, through Kafka and the participants are shown in the diagram below. This diagram just serves as an illustration of the scenarios that the user will experience in the GUI. You can see factually complete dialogues in :ref:`system-level-label`.
-
- .. image:: ../images/gui/GUI-Flow.png
diff --git a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
index c21cc171..46d4a85f 100644
--- a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
+++ b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst
@@ -13,12 +13,12 @@ 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
- MessageIntercept: "@MessageIntercept" annotation is used into SupervisionHandler class to intercept "handleParticipantMessage" method calls using spring aspect oriented programming
-- GUI: swagger-ui, Postman or policy-gui
+- GUI: swagger-ui or Postman
- Message Broker: It supports the message Broker Kafka
Design of Rest Api
@@ -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,17 +74,28 @@ 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
- the runtime sends an update event to the participants which performs the update operation on the deployed instances.
+Migrate-Precheck 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
+- 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 only set the subState of the Automation Composition to DB
+- the Rest-Api call returns the instanceId and the list of AC Element Instance
+- the runtime sends a migrate-precheck event to the participants which performs the check operation on the deployed instances.
+
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
@@ -94,19 +105,37 @@ Migrate of a Automation Composition Instance
Issues AC instance to change status
+++++++++++++++++++++++++++++++++++
+case **subOrder: PREPARE**
+
+- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with PREPARE as subOrder
+- 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 PREPARING subState
+- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_PREPARE message with preDeploy set to true
+- the message is built by AcPreparePublisher using Instance data.
+
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
- the message is built by AutomationCompositionDeployPublisher using Tosca Service Template data and Instance data. (with startPhase = first startPhase)
+case **subOrder: REVIEW**
+
+- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with REVIEW as subOrder
+- ACM-runtime receives the call by Rest-Api (InstantiationController)
+- It validates the status order issued (related AC Instance has DEPLOYED as deployState)
+- It updates the AC Instance to DB with REVIEWING subState
+- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_PREPARE message with preDeploy set to false
+- the message is built by AcPreparePublisher using Instance data.
+
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 +144,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 +153,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 +162,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 +171,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 +180,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,23 +229,98 @@ 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.
+Migration using Stage
+*********************
+The stage is particularly important in Automation Composition migration because sometime the user wishes to control
+not only the order in which the state changes in Automation Composition Elements but also to execute again using the same Automation Composition Elements.
+
+How to define Stage
++++++++++++++++++++
+Stage is defined as shown below in the Definition of TOSCA fundamental Automation Composition Types yaml file.
+
+.. code-block:: YAML
+
+ stage:
+ type: list
+ required: false
+ description: A list indicating the stages in which this automation composition element will be started, the
+ first stage is zero. Automation Composition Elements are started in their stage order.
+ Automation Composition Elements with the same stage are started simultaneously.
+ metadata:
+ common: true
+
+Example where it could be used:
+
+.. code-block:: YAML
+
+ org.onap.domain.database.Http_PMSHMicroserviceAutomationCompositionElement:
+ # Consul http config for PMSH.
+ version: 1.2.3
+ type: org.onap.policy.clamp.acm.HttpAutomationCompositionElement
+ type_version: 1.0.1
+ description: Automation Composition element for the http requests of PMSH microservice
+ properties:
+ provider: ONAP
+ uninitializedToPassiveTimeout: 180
+ stage: [0,2]
+
+How Stage works
++++++++++++++++
+In state changes in MIGRATING Automation Composition elements starts in increasing order from stage 0.
+
+Example of MIGRATE order with Http_PMSHMicroserviceAutomationCompositionElement with stage [0,2] and PMSH_K8SMicroserviceAutomationCompositionElement with startPhase to [0,1]:
+
+- ACM-runtime sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message to all participants with stage = 0
+- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 0: Http_PMSHMicroserviceAutomationCompositionElement and PMSH_K8SMicroserviceAutomationCompositionElement)
+- 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 stage = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message with stage = 1
+- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 1: PMSH_K8SMicroserviceAutomationCompositionElement)
+- 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 stage = 1 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message with stage = 2
+- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 2: Http_PMSHMicroserviceAutomationCompositionElement)
+- 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_MIGRATION has been sent three times,
+Http_PMSHMicroserviceAutomationCompositionElement and PMSH_K8SMicroserviceAutomationCompositionElement will be executed two times.
+
+Add and remove elements during Migration
+****************************************
+When an AC instance is migrated to a new AC definition, the user has the flexibility to add a new element or remove an existing element from the instance.
+The target AC composition definition should contain the new element definition added and also the respective elements removed while commissioning to ACM-R.
+The new elements are further instantiated in the migration request with the instance properties, and the elements required to be undeployed are removed accordingly.
+ACM-R sends the updated element list in the migration request to the participants where the participant is expected to handle the add/remove scenario.
+The migration method on the participant receives the details of previously existed composition/instance as well as the updated composition/instance and hence the difference in the new and old properties for an
+element can be identified by the participant.
+Participants can also identify the newly added elements and the removed elements with the ElementState enum that is set for each element.
+
+Example:
+ For a newly added element in the migration, the element information about the previously existed element will contain the ElementState enum set to the value "NOT_PRESENT" by the intermediary, and the updated element object will contain the
+ ElementState value "NEW". Based on these enum values on both the objects, the participant can identify a new element added in the migration. The participant can choose to trigger a deployment of this new element and update the element state once the
+ deploy operation is complete.
+
+ For the elements that are removed in the migration, the element information about the previously existed element will contain the ElementState enum set to the value "PRESENT" by the intermediary, and the object for the updated element info will contain the
+ ElementState value "REMOVED". Based on this, the participant can identify a removed element in the migration and choose to trigger an undeployment of this element. The element state after the undeploy operation need not be updated to ACM-R as the element is already removed in the ACM-R.
+ The participant is also expected to trigger a "DELETE" operation for the removed element if required in order to delete any element OutProperties if stored in the memory. Similarly, The element state after the delete operation need not be updated to ACM-R for the removed element.
+
+
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 +330,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 +346,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 +387,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 +417,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/design-impl.rst b/docs/clamp/acm/design-impl/design-impl.rst
index 3c56ff91..2b8a3fad 100644
--- a/docs/clamp/acm/design-impl/design-impl.rst
+++ b/docs/clamp/acm/design-impl/design-impl.rst
@@ -11,5 +11,4 @@ The sections below describe the components that handle TOSCA Automation Composit
:maxdepth: 1
clamp-runtime-acm
- clamp-gui-acm
participants/participants
diff --git a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
index 0fbaf897..92ab6d42 100644
--- a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
+++ b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst
@@ -24,11 +24,12 @@ Inbound messages to participants
- PARTICIPANT_DEREGISTER_ACK: received as a response from clamp-acm runtime server as an acknowledgement to ParticipantDeregister message sent from a participant
- AUTOMATION_COMPOSITION_STATE_CHANGE: a message received from clamp-acm runtime server for a state change of clamp-acm
- AUTOMATION_COMPOSITION_DEPLOY: a message received from clamp-acm runtime server for a clamp-acm deploy with clamp-acm instances
+- AUTOMATION_COMPOSITION_PREPARE: a message received from clamp-acm runtime server for a clamp-acm prepare/review with clamp-acm instances
- PARTICIPANT_PRIME: a message received from clamp-acm runtime server for a participant update with tosca definitions of clamp-acm
- 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
+- AUTOMATION_COMPOSITION_MIGRATION: a message received from clamp-acm runtime server for migrating/migration-precheck the Ac instance from a composition definition to a composition definition target
+- PARTICIPANT_SYNC_MSG: a message received from clamp-acm runtime server with tosca definitions and the Ac instances to handle synchronization
Outbound messages
-----------------
@@ -41,33 +42,41 @@ Outbound messages
Design of a PARTICIPANT_REGISTER message
----------------------------------------
-- A participant starts and send a PARTICIPANT_REGISTER message with participantId and Supported Element Definition Types
-- in AC-runtime ParticipantRegisterListener collects the message from Message Broker
+- A participant starts and send a PARTICIPANT_REGISTER message with participantId, replicaId and Supported Element Definition Types
+- in ACM-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
------------------------------------------
- A participant is going to close and undeploys all AC-elements and send a PARTICIPANT_DEREGISTER message
-- in AC-runtime, ParticipantDeregisterListener collects the message from Message Broker
+- in ACM-runtime, ParticipantDeregisterListener collects the message from Message Broker
- It saves participant reference with status OFF_LINE to DB
- It triggers the execution to send a PARTICIPANT_DEREGISTER_ACK message to the participant deregistered
- Participant is not monitored.
Prime of an Automation Composition Definition Type
--------------------------------------------------
-- AC-runtime assigns the AC Definition to the participants based of Supported Element Definition Type by participant
+- ACM-runtime assigns the AC Definition to the participants based of Supported Element Definition Type by participant
- it triggers the execution to send a broadcast PARTICIPANT_PRIME message
- the message is built by ParticipantPrimePublisher using Tosca Service Template data (to fill the list of ParticipantDefinition)
- Participant-intermediary will receive a PARTICIPANT_PRIME message and stores the Tosca Service Template data on CacheProvider
+- Each participant performs its designated job of prime
DePrime of an Automation Composition Definition Type
----------------------------------------------------
-- AC-runtime triggers the execution to send a broadcast PARTICIPANT_PRIME message
+- ACM-runtime triggers the execution to send a broadcast PARTICIPANT_PRIME message
- the message is built by ParticipantPrimePublisher with an empty list of ParticipantDefinition
- Participant-intermediary will receive a PARTICIPANT_PRIME message and deletes the Tosca Service Template data on CacheProvider
+- Each participant performs its designated job of deprime
+
+Design of "issues automation composition commands to automation compositions" - case PREPARE
+--------------------------------------------------------------------------------------------
+- AUTOMATION_COMPOSITION_PREPARE message with instantiation details and PREPARE order state is sent to participants
+- Participant-intermediary will receive AUTOMATION_COMPOSITION_PREPARE message and sends the details of AutomationCompositionElements to participants
+- Each participant performs its designated job of prepare
Design of "issues automation composition commands to automation compositions" - case UNDEPLOYED to DEPLOYED
-----------------------------------------------------------------------------------------------------------
@@ -76,6 +85,12 @@ Design of "issues automation composition commands to automation compositions" -
- Participant-intermediary will receive AUTOMATION_COMPOSITION_DEPLOY message and sends the details of AutomationCompositionElements to participants
- Each participant performs its designated job of deployment by interacting with respective frameworks
+Design of "issues automation composition commands to automation compositions" - case REVIEW
+-------------------------------------------------------------------------------------------
+- AUTOMATION_COMPOSITION_PREPARE message with instantiation details and REVIEW order state is sent to participants
+- Participant-intermediary will receive AUTOMATION_COMPOSITION_PREPARE message and sends the details of AutomationCompositionElements to participants
+- Each participant performs its designated job of review
+
Design of "issues automation composition commands to automation compositions" - case DEPLOYED to UNDEPLOYED
-----------------------------------------------------------------------------------------------------------
- AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and UNDEPLOY order state is sent to participants
@@ -85,28 +100,40 @@ Design of "issues automation composition commands to automation compositions" -
Update of an Automation Composition Instance
--------------------------------------------
-- AC-runtime updates the instance properties of the deployed Ac instances
+- ACM-runtime updates the instance properties of the deployed Ac instances
- it triggers the execution to send a broadcast PROPERTIES_UPDATE message
- the message is built by AcElementPropertiesPublisher using the REST request payload (to fill the list of elements with the updated property values)
- Participant-intermediary will receive a PROPERTIES_UPDATE message and stores the updated values of the elements on CacheProvider
+- Each participant performs its designated job of update by interacting with respective frameworks
+
+Migrate-precheck of an Automation Composition Instance
+------------------------------------------------------
+- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message with precheck set to true
+- the message is built by AutomationCompositionMigrationPublisher using the REST request payload (to fill the compositionTargetId and list of elements with the updated property values)
+- Participant-intermediary will receive a AUTOMATION_COMPOSITION_MIGRATION message and use a copy of the instance from CacheProvider to merge with data from the message
+- Each participant performs its designated job of migrate-precheck
Migrate of an Automation Composition Instance
---------------------------------------------
-- AC-runtime saves the compositionTargetId and updates the instance properties of the deployed Ac instances
-- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message
+- ACM-runtime saves the compositionTargetId and updates the instance properties of the deployed Ac instances
+- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message with precheck set to false
- the message is built by AutomationCompositionMigrationPublisher using the REST request payload (to fill the compositionTargetId and list of elements with the updated property values)
- Participant-intermediary will receive a AUTOMATION_COMPOSITION_MIGRATION message and stores the compositionTargetId and the updated values of the elements on CacheProvider
+- Each participant performs its designated job of migrate by interacting with respective frameworks
Design of "issues automation composition commands to automation compositions" - case LOCKED to UNLOCKED
-------------------------------------------------------------------------------------------------------
- AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and UNLOCK order state is sent to participants
- Participant-intermediary validates the current lockState change
- Participant-intermediary will receive AUTOMATION_COMPOSITION_STATE_CHANGE message
+- Each participant performs its designated job of unlock
Design of "issues automation composition commands to automation compositions" - case UNLOCKED to LOCKED
-------------------------------------------------------------------------------------------------------
- AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and LOCK order state is sent to participants
- Participant-intermediary validates the current lockState change
+- Participant-intermediary will receive AUTOMATION_COMPOSITION_STATE_CHANGE message
+- Each participant performs its designated job of lock
Design of Delete - case UNDEPLOYED to DELETED
---------------------------------------------
@@ -118,7 +145,7 @@ Design of Delete - case UNDEPLOYED to DELETED
Design of a PARTICIPANT_STATUS_REQ message
------------------------------------------
-- AC-runtime triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message or to send it to a specific participant
+- ACM-runtime triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message or to send it to a specific participant
- the message is built by ParticipantStatusReqPublisher
- Participant-intermediary will receive a PARTICIPANT_STATUS_REQ message
@@ -132,7 +159,7 @@ Design of a AUTOMATION_COMPOSITION_DEPLOY_ACK message
-----------------------------------------------------
- A participant sends AUTOMATION_COMPOSITION_DEPLOY_ACK message in response to a AUTOMATION_COMPOSITION_DEPLOY message.
- For each AC-elements moved to the ordered state as indicated by the AUTOMATION_COMPOSITION_DEPLOY
-- AutomationCompositionUpdateAckListener in AC-runtime collects the messages from Message Broker
+- AutomationCompositionUpdateAckListener in ACM-runtime collects the messages from Message Broker
- It checks the deployStatus of all automation composition elements
- It updates the AC-instance in DB accordingly
@@ -140,6 +167,6 @@ Design of a AUTOMATIONCOMPOSITION_STATECHANGE_ACK message
---------------------------------------------------------
- A participant sends AUTOMATIONCOMPOSITION_STATECHANGE_ACK message in response to a AUTOMATIONCOMPOSITION_STATECHANGE message.
- For each AC-elements moved to the ordered state as indicated by the AUTOMATIONCOMPOSITION_STATECHANGE
-- AutomationCompositionStateChangeAckListener in AC-runtime collects the messages from Message Broker
+- AutomationCompositionStateChangeAckListener in ACM-runtime collects the messages from Message Broker
- It checks the deployStatus/lockStatus of all automation composition elements
- It updates the AC-instance in DB accordingly
diff --git a/docs/clamp/acm/files/AC-migrate-precheck.json b/docs/clamp/acm/files/AC-migrate-precheck.json
new file mode 100644
index 00000000..66ab17df
--- /dev/null
+++ b/docs/clamp/acm/files/AC-migrate-precheck.json
@@ -0,0 +1,17 @@
+{
+ "name": "DemoInstance0",
+ "version": "1.0.1",
+ "compositionId": "COMPOSITIONIDPLACEHOLDER",
+ "instanceId": "INSTANCEIDPLACEHOLDER",
+ "compositionTargetId": "COMPOSITIONIDTARGET",
+ "description": "Demo automation composition instance 0",
+ "precheck": true,
+ "elements": {
+ "709c62b3-8918-41b9-a747-d21eb79c6c21": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
+ "properties": {
+ "baseUrl": "http://acm-starter-ac-element-impl_updated:8084"
+ }
+ }
+ }
+}
diff --git a/docs/clamp/acm/files/AC-migrate.json b/docs/clamp/acm/files/AC-migrate.json
index 32b56fd4..27932fca 100755
--- a/docs/clamp/acm/files/AC-migrate.json
+++ b/docs/clamp/acm/files/AC-migrate.json
@@ -11,6 +11,12 @@
"properties": {
"baseUrl": "http://acm-starter-ac-element-impl_updated:8084"
}
+ },
+ "709c62b3-8918-41b9-a747-d21eb79c6c22": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
+ "properties": {
+ "baseUrl": "http://acm-sink-ac-element-impl_updated:8085"
+ }
}
}
}
diff --git a/docs/clamp/acm/files/AC-prepare.json b/docs/clamp/acm/files/AC-prepare.json
new file mode 100644
index 00000000..bc3a3c0a
--- /dev/null
+++ b/docs/clamp/acm/files/AC-prepare.json
@@ -0,0 +1,3 @@
+{
+ "subOrder": "PREPARE"
+}
diff --git a/docs/clamp/acm/files/AC-review.json b/docs/clamp/acm/files/AC-review.json
new file mode 100644
index 00000000..e4d74348
--- /dev/null
+++ b/docs/clamp/acm/files/AC-review.json
@@ -0,0 +1,3 @@
+{
+ "subOrder": "REVIEW"
+}
diff --git a/docs/clamp/acm/files/ACM-Message-Table.csv b/docs/clamp/acm/files/ACM-Message-Table.csv
index b706fe60..b3f09a7a 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,6 +25,7 @@ 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
@@ -31,6 +37,8 @@ AutomationCompositionDeploy,ACM Runtime,Participant,Message to request change st
,,,,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"
+,,,,stage,The next stage that participant is supposed to receiving
+,,,,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,14 +56,24 @@ 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.
+,,,,precheck,Flag - if true it is a Migration Precheck
,,,,compositionId,The id of the AC Definition related to this message
,,,,compositionTargetId,The id of the AC Definition target
,,,,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
+,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_MIGRATION
+AutomationCompositionPrepare,ACM Runtime,Participant,Message to request prepare/review,participantList,A list of ParticipantUpdates instances which carries details of an updated participant.
+,,,,preDeploy,Flag - if true the instance is Undeployed and the action is a Prepare - otherwise (false) the instance is Deployed and the action is a Review
+,,,,compositionId,The id of the AC Definition related to this message
+,,,,automationCompositionId,The id of the automation composition related to this message
+,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_PREPARE
diff --git a/docs/clamp/acm/files/simparticipant-parameters.json b/docs/clamp/acm/files/simparticipant-parameters.json
new file mode 100644
index 00000000..14fbe01a
--- /dev/null
+++ b/docs/clamp/acm/files/simparticipant-parameters.json
@@ -0,0 +1,26 @@
+{
+ "deploySuccess": true,
+ "undeploySuccess": true,
+ "lockSuccess": true,
+ "unlockSuccess": true,
+ "deleteSuccess": true,
+ "updateSuccess": true,
+ "migrateSuccess": true,
+ "migratePrecheck": true,
+ "prepare": true,
+ "review": true,
+ "primeSuccess": true,
+ "deprimeSuccess": true,
+ "deployTimerMs": 100,
+ "undeployTimerMs": 100,
+ "lockTimerMs": 100,
+ "unlockTimerMs": 100,
+ "updateTimerMs": 100,
+ "migrateTimerMs": 100,
+ "migratePrecheckTimerMs": 100,
+ "prepareTimerMs": 100,
+ "reviewTimerMs": 100,
+ "deleteTimerMs": 100,
+ "primeTimerMs": 100,
+ "deprimeTimerMs": 100
+}
diff --git a/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png b/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png
new file mode 100644
index 00000000..f27ea679
--- /dev/null
+++ b/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png
Binary files differ
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/MigrationPrecheckAcInstance.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstance.png
new file mode 100644
index 00000000..1d0514ca
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstance.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png
new file mode 100644
index 00000000..3fbf7196
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png
new file mode 100644
index 00000000..7b66c5b2
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png b/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png
new file mode 100644
index 00000000..3220fa2a
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png
new file mode 100644
index 00000000..7802642e
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.png b/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.png
new file mode 100644
index 00000000..2bf2997a
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.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/ReviewAcInstance.png b/docs/clamp/acm/images/system-dialogues/ReviewAcInstance.png
new file mode 100644
index 00000000..35e12764
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/ReviewAcInstance.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png
new file mode 100644
index 00000000..50b49c8f
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png
Binary files differ
diff --git a/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.png b/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.png
new file mode 100644
index 00000000..671b23fb
--- /dev/null
+++ b/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.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/states/AcInstanceSubStates.puml b/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml
new file mode 100644
index 00000000..918a03b3
--- /dev/null
+++ b/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml
@@ -0,0 +1,18 @@
+@startuml
+
+UNDEPLOYED --> DEPLOYING: Deploy
+DEPLOYING --> DEPLOYED: AC Instance Elements\nall DEPLOYED
+
+state UNDEPLOYED {
+ NONE:UNDEPLOYED --> PREPARING: Prepare
+ PREPARING --> NONE:UNDEPLOYED: Completed
+}
+
+state DEPLOYED {
+ NONE:DEPLOYED --> REVIEWING: Review
+ REVIEWING --> NONE:DEPLOYED: Completed
+ NONE:DEPLOYED --> MIGRATION_PRECHECKING: Migrate precheck
+ MIGRATION_PRECHECKING --> NONE:DEPLOYED: Completed
+}
+
+@enduml
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/MigrationPrecheckAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstance.puml
new file mode 100644
index 00000000..14252f22
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstance.puml
@@ -0,0 +1,18 @@
+@startuml
+participant REST
+participant "ACM Runtime"
+participant Participants
+database "ACM Database"
+
+REST -> "ACM Runtime": Migration Precheck Automation Composition Instance
+"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information
+
+alt Automation Composition Instance exists
+ "ACM Runtime" -> Participants: [ASYNC] Migration Precheck AC Element Instances for this AC Instance
+ "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState MIGRATION_PRECHECKING
+ "ACM Runtime" -> REST: Migration Precheck of Automation Composition Instance has been requested
+else
+ "ACM Runtime" -> REST: Automation Composition instance does not exist
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml
new file mode 100644
index 00000000..39d71b69
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml
@@ -0,0 +1,25 @@
+@startuml
+participant "ACM Runtime"
+participant Participant
+participant "Participant API"
+
+"ACM Runtime" -> Participant: [ASYNC] Migration Precheck AC Element Instances for this AC Instance
+
+loop over AC Element Instances in AC Instance
+ alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID?
+ Participant -> "Participant API": Migration Precheck AC Element Instance
+ activate "Participant API"
+ Participant <- "Participant API": AC Element Instance Migration Precheck Response
+ deactivate "Participant API"
+ alt AC Element Migration Precheck completed
+ Participant -> Participant: Set AC Element Instance administrative subState to NONE
+ "ACM Runtime" <- Participant: [ASYNC] INFO: Migration Precheck AC Element has been completed
+ end
+ else
+ note left of Participant
+ Ignore this AC Element instance as its for another participant
+ end note
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml
new file mode 100644
index 00000000..cc63e9dd
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.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] Migration Precheck Automation Composition Element \nInstance Response
+"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information
+
+alt Is Migration Precheck AC Element Instance Completed?
+ "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE
+ alt Are all the other AC Element Instances in this AC Instance in state NONE?
+ "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml
new file mode 100644
index 00000000..dd7cc7ee
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml
@@ -0,0 +1,18 @@
+@startuml
+participant REST
+participant "ACM Runtime"
+participant Participants
+database "ACM Database"
+
+REST -> "ACM Runtime": Prepare Automation Composition Instance
+"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information
+
+alt Automation Composition Instance exists
+ "ACM Runtime" -> Participants: [ASYNC] Prepare AC Element Instances for this AC Instance
+ "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState PREPARING
+ "ACM Runtime" -> REST: Prepare of Automation Composition Instance has been requested
+else
+ "ACM Runtime" -> REST: Automation Composition instance does not exist
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml
new file mode 100644
index 00000000..5c5fbcee
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml
@@ -0,0 +1,25 @@
+@startuml
+participant "ACM Runtime"
+participant Participant
+participant "Participant API"
+
+"ACM Runtime" -> Participant: [ASYNC] Prepare AC Element Instances for this AC Instance
+
+loop over AC Element Instances in AC Instance
+ alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID?
+ Participant -> "Participant API": Prepare AC Element Instance
+ activate "Participant API"
+ Participant <- "Participant API": AC Element Instance Prepare Response
+ deactivate "Participant API"
+ alt AC Element Prepare completed
+ Participant -> Participant: Set AC Element Instance administrative subState to NONE
+ "ACM Runtime" <- Participant: [ASYNC] INFO: Prepare AC Element has been completed
+ end
+ else
+ note left of Participant
+ Ignore this AC Element instance as its for another participant
+ end note
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml
new file mode 100644
index 00000000..51ff03b1
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.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] Prepare Automation Composition Element \nInstance Response
+"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information
+
+alt Is Prepare AC Element Instance Completed?
+ "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE
+ alt Are all the other AC Element Instances in this AC Instance in state NONE?
+ "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
+ end
+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/ReviewAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstance.puml
new file mode 100644
index 00000000..ce40a003
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstance.puml
@@ -0,0 +1,18 @@
+@startuml
+participant REST
+participant "ACM Runtime"
+participant Participants
+database "ACM Database"
+
+REST -> "ACM Runtime": Review Automation Composition Instance
+"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information
+
+alt Automation Composition Instance exists
+ "ACM Runtime" -> Participants: [ASYNC] Review AC Element Instances for this AC Instance
+ "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState REVIEWING
+ "ACM Runtime" -> REST: Review of Automation Composition Instance has been requested
+else
+ "ACM Runtime" -> REST: Automation Composition instance does not exist
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml
new file mode 100644
index 00000000..45454e6a
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml
@@ -0,0 +1,25 @@
+@startuml
+participant "ACM Runtime"
+participant Participant
+participant "Participant API"
+
+"ACM Runtime" -> Participant: [ASYNC] Review AC Element Instances for this AC Instance
+
+loop over AC Element Instances in AC Instance
+ alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID?
+ Participant -> "Participant API": Review AC Element Instance
+ activate "Participant API"
+ Participant <- "Participant API": AC Element Instance Review Response
+ deactivate "Participant API"
+ alt AC Element Review completed
+ Participant -> Participant: Set AC Element Instance administrative subState to NONE
+ "ACM Runtime" <- Participant: [ASYNC] INFO: Review AC Element has been completed
+ end
+ else
+ note left of Participant
+ Ignore this AC Element instance as its for another participant
+ end note
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml
new file mode 100644
index 00000000..13287e61
--- /dev/null
+++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.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] Review Automation Composition Element \nInstance Response
+"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information
+
+alt Is Review AC Element Instance Completed?
+ "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE
+ alt Are all the other AC Element Instances in this AC Instance in state NONE?
+ "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
+ end
+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
diff --git a/docs/clamp/clamp.rst b/docs/clamp/clamp.rst
index 193b55cc..f2010707 100644
--- a/docs/clamp/clamp.rst
+++ b/docs/clamp/clamp.rst
@@ -5,8 +5,8 @@
CLAMP Metadata Automation Composition Management using TOSCA
#############################################################
-CLAMP supports the definition, deployment, and life cycle management of automation composition elements using Metadata
-described in TOSCA.
+CLAMP supports the definition, deployment, and life cycle management of
+automation composition elements using Metadata described in TOSCA.
.. toctree::
:maxdepth: 2
@@ -21,8 +21,9 @@ described in TOSCA.
acm/acm-participant-guide
.. note::
- Policy/CLAMP was merged into the Policy Framework in the Honolulu release of ONAP. Prior to that release, it was
- a separate project. The release notes for CLAMP when it existed as a separate project are located below.
+ Policy/CLAMP was merged into the Policy Framework in the Honolulu release
+ of ONAP. Prior to that release, it was a separate project. The release
+ notes for CLAMP when it existed as a separate project are located below.
.. toctree::
:maxdepth: 1
diff --git a/docs/clamp/pre-migration-release-notes.rst b/docs/clamp/pre-migration-release-notes.rst
index d8a03958..5534a8a6 100644
--- a/docs/clamp/pre-migration-release-notes.rst
+++ b/docs/clamp/pre-migration-release-notes.rst
@@ -26,8 +26,8 @@ The main goal of the Guilin release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `CLAMP R7 - M1 release planning <https://wiki.onap.org/display/DW/CLAMP+R7+-+M1+Release+Planning>`_
- - The full list of issues(bugs) solved, is available on `CLAMP R7 - Guilin list of solved issues(bugs) <https://wiki.onap.org/pages/viewpage.action?pageId=93000705>`_
+ - The full list of implemented user stories and epics is available on `CLAMP R7 - M1 release planning <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16430687/CLAMP+R7+-+M1+Release+Planning>`_
+ - The full list of issues(bugs) solved, is available on `CLAMP R7 - Guilin list of solved issues(bugs) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16450689/CLAMP+R7+-+Guilin+list+of+solved+issues+bugs>`_
**Known Issues**
@@ -42,13 +42,13 @@ The main goal of the Guilin release was to:
CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
**Upgrade Notes**
- - The Upgrade strategy for Guilin can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_
+ - The Upgrade strategy for Guilin can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_
- New Docker Containers are available. the list of containers composing this release are below:
- clamp-backend: nexus3.onap.org:10001/onap/clamp-backend 5.1.5
- clamp-frontend: nexus3.onap.org:10001/onap/clamp-frontend 5.1.5
@@ -64,11 +64,11 @@ Version: 5.0.7 (Frankfurt maintenance release tag 6.0.0)
**Bug Fixes**
- - `CLAMP-878 <https://jira.onap.org/browse/CLAMP-885>`_ Clamp backend pod fails with mariaDB server error
- - `CLAMP-885 <https://jira.onap.org/browse/CLAMP-885>`_ CLAMP update documentation
+ - `CLAMP-878 <https://lf-onap.atlassian.net/browse/CLAMP-885>`_ Clamp backend pod fails with mariaDB server error
+ - `CLAMP-885 <https://lf-onap.atlassian.net/browse/CLAMP-885>`_ CLAMP update documentation
**Known Issues**
- - `CLAMP-856 <https://jira.onap.org/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties
+ - `CLAMP-856 <https://lf-onap.atlassian.net/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties
- Other more minor issues are captured in the following page:`CLAMP known Frankfurt issues <https://wiki.onap.org/display/DW/CLAMP+R6+-+Frankfurt+known+issues%28bugs%29+-+to+be+solved+in+futur+Releases>`_
**Security Notes**
@@ -84,12 +84,12 @@ N/A
CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
**Upgrade Notes**
- - The Upgrade strategy for Frankfurt can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_
+ - The Upgrade strategy for Frankfurt can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_
- New Docker Containers are available. the list of containers composing this release are below:
- clamp-backend-filebeat-onap: docker.elastic.co/beats/filebeat 5.5.0
@@ -121,11 +121,11 @@ The main goal of the Frankfurt release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `Frankfurt CLAMP M1 release planning <https://wiki.onap.org/display/DW/CLAMP+R6+-+M1+Release+Planning>`_
- - The full list of issues(bugs) solved, is available on `CLAMP R6 - Frankfurt list of solved issues(bugs) <https://wiki.onap.org/pages/viewpage.action?pageId=84648915>`_
+ - The full list of implemented user stories and epics is available on `Frankfurt CLAMP M1 release planning <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16397735/CLAMP+R6+-+M1+Release+Planning>`_
+ - The full list of issues(bugs) solved, is available on `CLAMP R6 - Frankfurt list of solved issues(bugs) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16426873/CLAMP+R6+-+Frankfurt+list+of+solved+issues+bugs>`_
**Known Issues**
- - `CLAMP-856 <https://jira.onap.org/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties
+ - `CLAMP-856 <https://lf-onap.atlassian.net/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties
**Security Notes**
@@ -138,13 +138,13 @@ The main goal of the Frankfurt release was to:
CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
**Upgrade Notes**
- - The Upgrade strategy for Frankfurt can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_
+ - The Upgrade strategy for Frankfurt can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_
- New Docker Containers are available. the list of containers composing this release are below:
- clamp-backend-filebeat-onap: docker.elastic.co/beats/filebeat 5.5.0
- clamp-backend: nexus3.onap.org:10001/onap/clamp-backend 5.0.6
@@ -174,9 +174,9 @@ The main goal of the El Alto release was to:
**Known Issues**
- - `CLAMP-506 <https://jira.onap.org/browse/CLAMP-506>`_ Elastic Search Clamp image cannot be built anymore(SearchGuard DMCA issue)
+ - `CLAMP-506 <https://lf-onap.atlassian.net/browse/CLAMP-506>`_ Elastic Search Clamp image cannot be built anymore(SearchGuard DMCA issue)
- Due to the uncertainties with the DMCA SearchGuard issue, the ELK stack has been removed from El Alto release, meaning the CLAMP "Control Loop Dashboard" is not part of the El Alto release.
- - `CLAMP-519 <https://jira.onap.org/browse/CLAMP-519>`_ Clamp cannot authenticate to AAF(Local authentication as workaround)
+ - `CLAMP-519 <https://lf-onap.atlassian.net/browse/CLAMP-519>`_ Clamp cannot authenticate to AAF(Local authentication as workaround)
**Security Notes**
@@ -188,14 +188,14 @@ The main goal of the El Alto release was to:
*Known Vulnerabilities in Used Modules*
CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
-The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_.
+The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16399457/El+Alto+CLAMP+Security+Vulnerability+Report>`_.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
- - `Project Vulnerability Review Table for CLAMP (El Alto) <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_
+ - `Project Vulnerability Review Table for CLAMP (El Alto) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16399457/El+Alto+CLAMP+Security+Vulnerability+Report>`_
**Upgrade Notes**
@@ -222,28 +222,27 @@ The main goal of the El Alto-Early Drop release was to:
**Known Issues**
- - `CLAMP-384 <https://jira.onap.org/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state
+ - `CLAMP-384 <https://lf-onap.atlassian.net/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state
**Security Notes**
*Fixed Security Issues*
- - `OJSI-166 <https://jira.onap.org/browse/OJSI-166>`_ Port 30290 exposes unprotected service outside of cluster.
+ - `OJSI-166 <https://lf-onap.atlassian.net/browse/OJSI-166>`_ Port 30290 exposes unprotected service outside of cluster.
*Known Security Issues*
*Known Vulnerabilities in Used Modules*
-CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
-The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto Early Drop <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_.
+CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
+addressed, items that remain open have been assessed for risk and actions to be taken in future release.
+The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the
+`project in El Alto Early Drop <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16386513/CLAMP+R5+-+Early+Drop>`_.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
-
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
- - `Project Vulnerability Review Table for CLAMP (El Alto Early Drop) <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_
-
**Upgrade Notes**
New Docker Containers are available.
@@ -261,41 +260,43 @@ The Dublin release is the fourth release of the Control Loop Automation Manageme
The main goal of the Dublin release was to:
- - Stabilize Platform maturity by stabilizing CLAMP maturity matrix see `Wiki for Dublin <https://wiki.onap.org/display/DW/Dublin+Release+Platform+Maturity>`_.
+ - Stabilize Platform maturity by stabilizing CLAMP maturity matrix see `Wiki for Dublin <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16337727/Dublin+Release+Platform+Maturity>`_.
- CLAMP supports of Policy-model based Configuration Policy
- CLAMP supports new Policy Engine direct Rest API (no longer based on jar provided by Policy Engine)
- CLAMP main Core/UI have been reworked, removal of security issues reported by Nexus IQ.
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `DUBLIN RELEASE <https://jira.onap.org/projects/CLAMP/versions/10427>`_
+ - The full list of implemented user stories and epics is available on `DUBLIN RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10427>`_
This includes the list of bugs that were fixed during the course of this release.
**Known Issues**
- - `CLAMP-384 <https://jira.onap.org/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state
+ - `CLAMP-384 <https://lf-onap.atlassian.net/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state
**Security Notes**
*Fixed Security Issues*
- - `OJSI-128 <https://jira.onap.org/browse/OJSI-128>`_ In default deployment CLAMP (clamp) exposes HTTP port 30258 outside of cluster.
- - `OJSI-147 <https://jira.onap.org/browse/OJSI-147>`_ In default deployment CLAMP (cdash-kibana) exposes HTTP port 30290 outside of cluster.
- - `OJSI-152 <https://jira.onap.org/browse/OJSI-152>`_ In default deployment CLAMP (clamp) exposes HTTP port 30295 outside of cluster.
+ - `OJSI-128 <https://lf-onap.atlassian.net/browse/OJSI-128>`_ In default deployment CLAMP (clamp) exposes HTTP port 30258 outside of cluster.
+ - `OJSI-147 <https://lf-onap.atlassian.net/browse/OJSI-147>`_ In default deployment CLAMP (cdash-kibana) exposes HTTP port 30290 outside of cluster.
+ - `OJSI-152 <https://lf-onap.atlassian.net/browse/OJSI-152>`_ In default deployment CLAMP (clamp) exposes HTTP port 30295 outside of cluster.
*Known Security Issues*
*Known Vulnerabilities in Used Modules*
-CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
-The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Dublin <https://wiki.onap.org/pages/viewpage.action?pageId=64003444>`_.
+CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
+addressed, items that remain open have been assessed for risk and actions to be taken in future release.
+The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of
+the `project in Dublin <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374261/Dublin+CLAMP+Security+Vulnerability+Report>`_.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
- - `Project Vulnerability Review Table for CLAMP (Dublin) <https://wiki.onap.org/pages/viewpage.action?pageId=64003444>`_
+ - `Project Vulnerability Review Table for CLAMP (Dublin) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374261/Dublin+CLAMP+Security+Vulnerability+Report>`_
**Upgrade Notes**
@@ -316,7 +317,7 @@ none
**Known Issues**
CLAMP certificates have been renewed to extend their expiry dates
- - `CLAMP-335 <https://jira.onap.org/browse/CLAMP-335>`_ Update Certificates on Casablanca release.
+ - `CLAMP-335 <https://lf-onap.atlassian.net/browse/CLAMP-335>`_ Update Certificates on Casablanca release.
Version: 3.0.3 - maintenance release
@@ -333,7 +334,7 @@ none
**Known Issues**
one documentation issue was fixed, this issue does not require a new docker image:
- - `CLAMP-257 <https://jira.onap.org/browse/CLAMP-257>`_ User Manual for CLAMP : nothing on readthedocs.
+ - `CLAMP-257 <https://lf-onap.atlassian.net/browse/CLAMP-257>`_ User Manual for CLAMP : nothing on readthedocs.
Version: 3.0.3 (Casablanca)
---------------------------
@@ -356,7 +357,7 @@ The main goal of the Casablanca release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `CASABLANCA RELEASE <https://jira.onap.org/projects/CLAMP/versions/10408>`_
+ - The full list of implemented user stories and epics is available on `CASABLANCA RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10408>`_
This includes the list of bugs that were fixed during the course of this release.
**Known Issues**
@@ -365,15 +366,17 @@ The main goal of the Casablanca release was to:
**Security Notes**
-CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release.
-The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Casablanca <https://wiki.onap.org/pages/viewpage.action?pageId=42598587>`_.
+CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
+addressed, items that remain open have been assessed for risk and actions to be taken in future release.
+The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of
+the `project in Casablanca <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
- - `Project Vulnerability Review Table for CLAMP in Casablanca <https://wiki.onap.org/pages/viewpage.action?pageId=42598587>`_
+ - `Project Vulnerability Review Table for CLAMP in Casablanca <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_
**Upgrade Notes**
@@ -411,12 +414,12 @@ The main goal of the Beijing release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://jira.onap.org/projects/CLAMP/versions/10314>`_
+ - The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10314>`_
This includes the list of bugs that were fixed during the course of this release.
**Known Issues**
- - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work.
+ - `CLAMP-69 <https://lf-onap.atlassian.net/browse/CLAMP-69>`_ Deploy action does not always work.
The "Deploy" action does not work directly after submitting it.
@@ -426,18 +429,21 @@ The main goal of the Beijing release was to:
**Security Notes**
-CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Beijing <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_.
+CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
+addressed, items that remain open have been assessed for risk and determined to be false positive.
+The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of
+the `project in Beijing <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16275671/CLAMP+R2+-+Security+Vulnerability+Threat+Analysis>`_.
Quick Links:
- - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_
+ - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_
- `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_
- - `Project Vulnerability Review Table for CLAMP (Bejing) <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_
+ - `Project Vulnerability Review Table for CLAMP (Beijing) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16275671/CLAMP+R2+-+Security+Vulnerability+Threat+Analysis>`_
**Upgrade Notes**
- New Docker Containers are avaialble, an ELK stack is also now part of CLAMP deployments.
+ New Docker Containers are available, an ELK stack is also now part of CLAMP deployments.
**Deprecation Notes**
@@ -464,13 +470,13 @@ The main goal of the Amsterdam release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://jira.onap.org/projects/CLAMP/versions/10313>`_
+ - The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10313>`_
This is technically the first release of CLAMP, previous release was the seed code contribution.
As such, the defects fixed in this release were raised during the course of the release.
Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above.
**Known Issues**
- - `CLAMP-68 <https://jira.onap.org/browse/CLAMP-68>`_ ResourceVF not always provisioned.
+ - `CLAMP-68 <https://lf-onap.atlassian.net/browse/CLAMP-68>`_ ResourceVF not always provisioned.
In Closed Loop -> Properties CL: When opening the popup window, the first service in the list does not show Resource-VF even though in SDC there is a resource instance in the service.
@@ -478,7 +484,7 @@ The main goal of the Amsterdam release was to:
If you have multiple service available (if not create a dummy one on SDC), just click on another one and then click back on the first one in the list. The ResourceVF should be provisioned now.
- - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work.
+ - `CLAMP-69 <https://lf-onap.atlassian.net/browse/CLAMP-69>`_ Deploy action does not always work.
The "Deploy" action does not work directly after submitting it.