From 2a9a4f94de315559f6fae385f207948840e4ab95 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Tue, 8 Apr 2025 11:51:30 +0100 Subject: [PATCH] Update doc for prepare with stage Issue-ID: POLICY-5335 Change-Id: I609ae815071b0c3dd5f93f79339f4dcdab5e4bd2 Signed-off-by: FrancescoFioraEst --- docs/clamp/acm/acm-participant-guide.rst | 207 ++++++++++++++++++++- docs/clamp/acm/acm-states.rst | 17 +- docs/clamp/acm/acm-user-guide.rst | 20 -- docs/clamp/acm/allowed-operations.rst | 184 ++++++++++-------- .../acm/api-protocol/system-level-dialogues.rst | 2 +- docs/clamp/acm/clamp-csit.rst | 32 ++-- docs/clamp/acm/design-impl/clamp-runtime-acm.rst | 43 ++++- docs/clamp/acm/files/ACM-Message-Table.csv | 1 + .../AcInstanceStatesMigrationPrecheck.png | Bin 0 -> 34854 bytes .../images/acm-states/AcInstanceStatesPrepare.png | Bin 0 -> 28667 bytes .../images/acm-states/AcInstanceStatesReview.png | Bin 0 -> 29785 bytes .../acm/images/acm-states/AcInstanceSubStates.png | Bin 29963 -> 0 bytes .../states/AcInstanceStatesMigrationPrecheck.puml | 15 ++ .../plantuml/states/AcInstanceStatesPrepare.puml | 14 ++ .../plantuml/states/AcInstanceStatesReview.puml | 14 ++ .../acm/plantuml/states/AcInstanceSubStates.puml | 18 -- 16 files changed, 427 insertions(+), 140 deletions(-) create mode 100644 docs/clamp/acm/images/acm-states/AcInstanceStatesMigrationPrecheck.png create mode 100644 docs/clamp/acm/images/acm-states/AcInstanceStatesPrepare.png create mode 100644 docs/clamp/acm/images/acm-states/AcInstanceStatesReview.png delete mode 100644 docs/clamp/acm/images/acm-states/AcInstanceSubStates.png create mode 100644 docs/clamp/acm/plantuml/states/AcInstanceStatesMigrationPrecheck.puml create mode 100644 docs/clamp/acm/plantuml/states/AcInstanceStatesPrepare.puml create mode 100644 docs/clamp/acm/plantuml/states/AcInstanceStatesReview.puml delete mode 100644 docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml diff --git a/docs/clamp/acm/acm-participant-guide.rst b/docs/clamp/acm/acm-participant-guide.rst index 05532a02..55c7db10 100644 --- a/docs/clamp/acm/acm-participant-guide.rst +++ b/docs/clamp/acm/acm-participant-guide.rst @@ -140,7 +140,7 @@ AutomationCompositionElementListener: 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; + 12. void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement, int stage) 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. @@ -154,7 +154,7 @@ ParticipantParameters: ParticipantIntermediaryParameters getIntermediaryParameters() -Abstract class AcElementListenerV3 +Abstract class AcElementListenerV4 ---------------------------------- 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. @@ -163,6 +163,205 @@ Any new functionality in the future will be wrapped by this class. Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, migratePrecheck, review and prepare. +Methods: deploy, undeploy, lock, unlock, delete, review + 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 + ============================== =========================== + +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 + ============================== ====================================== + +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 + ====================== =================================================================== + +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 + ============================== ==================================================== + +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 + +Method: 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 + ============================== =========================== + stage: + the stage of the prepare that the participant has to execute + + +Abstract class AcElementListenerV3 +---------------------------------- +This abstract class is introduced to help to maintain temporarily the java backward compatibility with AutomationCompositionElementListener implemented in 8.0.1 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 AcElementListenerV3 supports the follow methods. + +.. code-block:: java + + 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, 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; + + Methods: deploy, undeploy, lock, unlock, delete, review and prepare compositionElement: ====================== ======================================= @@ -639,8 +838,8 @@ In/Out instance Properties The 'Out Properties' will be **not cleaned** by intermediary: - * during DEPLOIYNG (Out Properties will be take from last changes matching by elementId) - * during UNDEPLOING + * during DEPLOYING (Out Properties will be take from last changes matching by elementId) + * during UNDEPLOYING * during LOCKING/UNLOCKING * during UPDATING/MIGRATING/PREPARE/REVIEW/MIGRATION_PRECHECKING diff --git a/docs/clamp/acm/acm-states.rst b/docs/clamp/acm/acm-states.rst index 7a3222a5..12849e76 100644 --- a/docs/clamp/acm/acm-states.rst +++ b/docs/clamp/acm/acm-states.rst @@ -82,9 +82,22 @@ Delete Automation Composition Instance Sub State ========================================= -The sub states that an Automation Composition Instance can have are shown in the diagram below. +The sub states that an Automation Composition Instance can have are shown in the diagrams below. -.. image:: images/acm-states/AcInstanceSubStates.png +Prepare +------- + +.. image:: images/acm-states/AcInstanceStatesPrepare.png + +Review +------ + +.. image:: images/acm-states/AcInstanceStatesReview.png + +Migration-Precheck +------------------ + +.. image:: images/acm-states/AcInstanceStatesMigrationPrecheck.png How State are saved in DB ========================= diff --git a/docs/clamp/acm/acm-user-guide.rst b/docs/clamp/acm/acm-user-guide.rst index 8cc4c40f..41f521b3 100644 --- a/docs/clamp/acm/acm-user-guide.rst +++ b/docs/clamp/acm/acm-user-guide.rst @@ -435,7 +435,6 @@ Functionality covered: #. Update useState, operationalState and outProperties and send to ACM-runtime by Rest-Api. #. Read all AC instance elements information by Rest-Api. #. Log of all information for each operation. -#. Set the 'AcElementListenerV' version by properties file. Mock a participant using docker-compose --------------------------------------- @@ -545,22 +544,3 @@ All information for each operation are logged, so the developer can monitoring w 26-02-2024 09:55:38.547 [pool-4-thread-4] DEBUG o.o.p.c.a.p.s.m.h.AutomationCompositionElementHandler.deploy **- deploy call** **compositionElement: CompositionElementDto[** compositionId=6502ba5e-1939-42b0-8bd2-bf89f0d51be6, elementDefinitionId=onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement 1.2.3, inProperties={ ... }, outProperties={} **], instanceElement: InstanceElementDto[** instanceId=022b3dee-a878-4b32-8544-de86e67e7335, elementId=2d614898-4945-41c7-9127-947b401aa753, toscaServiceTemplateFragment=ToscaServiceTemplate( ... ), inProperties={ ... }, outProperties={} **]** -Set specific AcElementListenerV version ---------------------------------------- -Set 'element.handler' property in properties file in order to test a specific AcElementListenerV version. -Default value of 'element.handler' is the most recent version. - -==================== ==================== -** Property Value ** ** Abstract Class ** -==================== ==================== -AcElementHandlerV1 AcElementListenerV1 -AcElementHandlerV2 AcElementListenerV2 -AcElementHandlerV3 AcElementListenerV3 -==================== ==================== - -Example: - -.. code-block:: yaml - - element: - handler: AcElementHandlerV3 diff --git a/docs/clamp/acm/allowed-operations.rst b/docs/clamp/acm/allowed-operations.rst index 12fca00e..068e790c 100755 --- a/docs/clamp/acm/allowed-operations.rst +++ b/docs/clamp/acm/allowed-operations.rst @@ -55,90 +55,116 @@ CRUD Automation Composition Instance ------------------------------------ AC Definition is PRIMED with NO_ERROR. -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| **Action** | **deployState** | **lockState** | **stChResult** | **Description** | -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| Create | | | | Create a new AC instance | -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| Update | UNDEPLOYED | | | Update the AC Instance | -+ +-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKED | | Update the AC Instance and send update to participants | -+ +-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| | UPDATING | LOCKED | FAILED | Start Updating transition and send update to participants after UPDATING is failed | -+ +-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| | UPDATING | LOCKED | TIMEOUT | Start Updating transition and send update to participants after UPDATING got timeout | -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| Migrate | DEPLOYED | LOCKED | | Start Migrating transition and send migrate to participants | -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| | UNDEPLOYED | | | Start Deleting transition and send delete to participants | -+ +-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| Delete | DELETING | NONE | FAILED | Start Deleting transition and send delete to participants after DELETING is failed | -+ +-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ -| | DELETING | NONE | TIMEOUT | Start Deleting transition and send delete to participants after DELETING got timeout | -+------------+-----------------+---------------+----------------+--------------------------------------------------------------------------------------+ ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| **Action** | **deployState** | **lockState** | **subSate** | **stChResult** | **Description** | ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| Create | | | | | Create a new AC instance | ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| Update | UNDEPLOYED | | | | Update the AC Instance | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | | | Start Updating and send update to participants | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | UPDATING | LOCKED | | FAILED | Start Updating and send update to participants after UPDATING is failed | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | UPDATING | LOCKED | | TIMEOUT | Start Updating and send update to participants after UPDATING got timeout | ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| Migrate | DEPLOYED | LOCKED | | | Start Migrating and send migrate to participants | ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | UNDEPLOYED | | | | Start Deleting and send delete to participants | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| Delete | UNDEPLOYED | | PREPARING | FAILED | Start Deleting and send delete to participants after PREPARING is failed | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | UNDEPLOYED | | PREPARING | TIMEOUT | Start Deleting and send delete to participants after PREPARING got timeout | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| Delete | DELETING | | | FAILED | Start Deleting and send delete to participants after DELETING is failed | ++ +-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ +| | DELETING | | | TIMEOUT | Start Deleting and send delete to participants after DELETING got timeout | ++------------+-----------------+---------------+-------------+----------------+-----------------------------------------------------------------------------+ Change status of Automation Composition Instance ------------------------------------------------ -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| **Action** | **deployState** | **lockState** | **stChResult** | **Description** | -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UNDEPLOYED | | | Start Deploying transition and send deploy to participants | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYING | NONE | FAILED | Start Deploying transition and send deploy to participants after DEPLOYING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| Deploy | DEPLOYING | NONE | TIMEOUT | Start Deploying transition and send deploy to participants after DEPLOYING got timeout | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UNDEPLOYING | NONE | FAILED | Start Deploying transition and send deploy to participants after UNDEPLOYING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UNDEPLOYING | NONE | TIMEOUT | Start Deploying transition and send deploy to participants after UNDEPLOYING got timeout | -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKED | | Start Undeploying transition and send undeploy to participants | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYING | NONE | FAILED | Start Undeploying transition and send undeploy to participants after DEPLOYING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UNDEPLOYING | NONE | FAILED | Start Undeploying transition and send undeploy to participants after UNDEPLOYING is failed | -+ Undeploy +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UNDEPLOYING | NONE | TIMEOUT | Start Undeploying transition and send undeploy to participants after UNDEPLOYING got timeout| -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UPDATING | LOCKED | FAILED | Start Undeploying transition and send update to participants after UPDATING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | UPDATING | LOCKED | TIMEOUT | Start Undeploying transition and send update to participants after UPDATING got timeout | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | MIGRATING | LOCKED | FAILED | Start Undeploying transition and send update to participants after MIGRATING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | MIGRATING | LOCKED | TIMEOUT | Start Undeploying transition and send update to participants after MIGRATING got timeout | -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | UNLOCKED | | Start Locking transition and send lock to participants | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | UNLOCKING | FAILED | Start Locking transition and send lock to participants after UNLOCKING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| Lock | DEPLOYED | UNLOCKING | TIMEOUT | Start Locking transition and send lock to participants after UNLOCKING got timeout | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKING | FAILED | Start Locking transition and send lock to participants after LOCKING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKING | TIMEOUT | Start Locking transition and send lock to participants after LOCKING got timeout | -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKED | | Start Unlocking transition and send unlock to participants | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | UNLOCKING | FAILED | Start Unlocking transition and send unlock to participants after UNLOCKING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| Unlock | DEPLOYED | UNLOCKING | TIMEOUT | Start Unlocking transition and send unlock to participants after UNLOCKING got timeout | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKING | FAILED | Start Unlocking transition and send unlock to participants after LOCKING is failed | -+ +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ -| | DEPLOYED | LOCKING | TIMEOUT | Start Unlocking transition and send unlock to participants after LOCKING got timeout | -+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+ ++------------+-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| **Action** | **deployState** | **lockState** | **subSate** | **stChResult** | **Description** | ++------------+-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UNDEPLOYED | | | | Start Deploying and send deploy to participants | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYING | NONE | | FAILED | Start Deploying and send deploy to participants after DEPLOYING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| Deploy | DEPLOYING | NONE | | TIMEOUT | Start Deploying and send deploy to participants after DEPLOYING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UNDEPLOYING | NONE | | FAILED | Start Deploying and send deploy to participants after UNDEPLOYING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UNDEPLOYING | NONE | | TIMEOUT | Start Deploying and send deploy to participants after UNDEPLOYING got timeout | ++------------+-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | | | Start Undeploying and send undeploy to participants | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYING | NONE | | FAILED | Start Undeploying and send undeploy to participants after DEPLOYING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYING | NONE | | TIMEOUT | Start Undeploying and send undeploy to participants after DEPLOYING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | REVIEWING | FAILED | Start Undeploying and send undeploy to participants after REVIEWING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | REVIEWING | TIMEOUT | Start Undeploying and send undeploy to participants after REVIEWING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | MIGRATION_PRECHECKING | FAILED | Start Undeploying and send undeploy to participants after MIGRATION_PRECHECKING is failed | ++ Undeploy +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | MIGRATION_PRECHECKING | TIMEOUT | Start Undeploying and send undeploy to participants after MIGRATION_PRECHECKING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UNDEPLOYING | NONE | | FAILED | Start Undeploying and send undeploy to participants after UNDEPLOYING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UNDEPLOYING | NONE | | TIMEOUT | Start Undeploying and send undeploy to participants after UNDEPLOYING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UPDATING | LOCKED | | FAILED | Start Undeploying and send update to participants after UPDATING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | UPDATING | LOCKED | | TIMEOUT | Start Undeploying and send update to participants after UPDATING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | MIGRATING | LOCKED | | FAILED | Start Undeploying and send update to participants after MIGRATING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | MIGRATING | LOCKED | | TIMEOUT | Start Undeploying and send update to participants after MIGRATING got timeout | ++------------+-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | UNLOCKED | | | Start Locking and send lock to participants | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | UNLOCKING | | FAILED | Start Locking and send lock to participants after UNLOCKING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| Lock | DEPLOYED | UNLOCKING | | TIMEOUT | Start Locking and send lock to participants after UNLOCKING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKING | | FAILED | Start Locking and send lock to participants after LOCKING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKING | | TIMEOUT | Start Locking and send lock to participants after LOCKING got timeout | ++------------+-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | | | Start Unlocking and send unlock to participants | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | UNLOCKING | | FAILED | Start Unlocking and send unlock to participants after UNLOCKING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| Unlock | DEPLOYED | UNLOCKING | | TIMEOUT | Start Unlocking and send unlock to participants after UNLOCKING got timeout | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKING | | FAILED | Start Unlocking and send unlock to participants after LOCKING is failed | ++ +-----------------+---------------+-----------------------+----------------+---------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKING | | TIMEOUT | Start Unlocking 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 | -+---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+ ++---------------------+-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| **Action** | **deployState** | **lockState** | **subSate** | **stChResult** | **Description** | ++---------------------+-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | UNDEPLOYED | | | | Start Preparing and send prepare to participants | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| Prepare | UNDEPLOYED | | PREPARING | FAILED | Start Preparing and send prepare to participants after PREPARING is failed | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | UNDEPLOYED | | PREPARING | TIMEOUT | Start Preparing and send prepare to participants after PREPARING got timeout | ++---------------------+-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | | | Start Reviewing and send review to participants | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| Review | DEPLOYED | LOCKED | REVIEWING | FAILED | Start Reviewing and send review to participants after REVIEWING is failed | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | REVIEWING | TIMEOUT | Start Reviewing and send review to participants after REVIEWING got timeout | ++---------------------+-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | | | Start Migration-Prechecking and send Migration-Precheck to participants | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| Migration-Precheck | DEPLOYED | LOCKED | MIGRATION_PRECHECKING | FAILED | Start Migration-Prechecking and send Migration-Precheck to participants after MIGRATION_PRECHECKING is failed | ++ +-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ +| | DEPLOYED | LOCKED | MIGRATION_PRECHECKING | TIMEOUT | Start Migration-Prechecking and send Migration-Precheck to participants after MIGRATION_PRECHECKING got timeout | ++---------------------+-----------------+---------------+-----------------------+----------------+-----------------------------------------------------------------------------------------------------------------+ diff --git a/docs/clamp/acm/api-protocol/system-level-dialogues.rst b/docs/clamp/acm/api-protocol/system-level-dialogues.rst index ec03353c..0f0c0e7d 100644 --- a/docs/clamp/acm/api-protocol/system-level-dialogues.rst +++ b/docs/clamp/acm/api-protocol/system-level-dialogues.rst @@ -288,7 +288,7 @@ If the operation succeeds, the participant is required to update the result valu .. image:: ../images/system-dialogues/SuccessAcmResult.png The result value should be updated as 'FAILED' by the participants when any failures occurred. -Also in case of failures, the overall state of the composition/instance remains in any of the transitioning states (DEPLOYING, UNDEPLOYING, PRIMING, DEPRIMING, UPDATING, MIGRATING) +Also in case of failures, the overall state of the composition/instance remains in any of the transitioning states (DEPLOYING, UNDEPLOYING, PRIMING, DEPRIMING, UPDATING, MIGRATING, PREPARING, REVIEWING, MIGRATION_PRECHECKING) with the appropriate result values updated by the participant. .. image:: ../images/system-dialogues/FailedAcmResult.png diff --git a/docs/clamp/acm/clamp-csit.rst b/docs/clamp/acm/clamp-csit.rst index 72c4c59d..1fa63b28 100644 --- a/docs/clamp/acm/clamp-csit.rst +++ b/docs/clamp/acm/clamp-csit.rst @@ -26,7 +26,11 @@ ACM Integration Tests | HealthcheckAcm | Verifies the ACM runtime is up and running | Should receive a 200 success response with STATUS:UP | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | HealthcheckParticipantSim | Verifies the participant simulator is up and running | Should receive a 200 success response with STATUS:UP | -+-----------------------------------------------+--------------------------------------------------------------------------------------------------------+----------------------------+-------------------------------------------------------------------------------------------+ ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| HealthcheckApi | Verifies the policy api is up and running | Should receive a 200 success response with STATUS:UP | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| HealthcheckPap | Verifies the policy pap is up and running | Should receive a 200 success response with STATUS:UP | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | RegisterParticipants | Sends a PUT request to ACM-R to request the participants for registration | Should receive a 202 Accepted response from ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | CommissionAutomationComposition | Commissions a Tosca service template to ACM-R | Should receive a 201 created response from ACM_R | @@ -47,11 +51,13 @@ ACM Integration Tests +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | InstantiateAutomationCompositionMigrationFrom | Instantiate the Automation Composition from the service template of migration test | Should receive a 201 Accepted response from ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| FailDeployAutomationCompositionMigration | Verify the deployment failure for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | +| FailPrepareAutomationCompositionMigrationFrom | Verify the prepare failure for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| TimeoutDeployAutomationCompositionMigration | Verify the deployment is timing out for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R | +| PrepareAutomationCompositionMigrationFrom | Send Prepare request to ACM-R for the AC instance before deployment | Should receive a 202 Accepted response from ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| PrepareAutomationComposition | Send Prepare request to ACM-R for the AC instance before deployment | Should receive a 202 Accepted response from ACM-R | +| FailDeployAutomationCompositionMigration | Verify the deployment failure for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| TimeoutDeployAutomationCompositionMigration | Start deployment in timing out for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | DeployAutomationComposition | Deploy the AC instance | Should receive a 202 Accepted response from ACM-R and the state of AC instance in ACM-R should be changed to DEPLOYED | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ @@ -65,20 +71,28 @@ ACM Integration Tests +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | QueryPolicyTypes | Verify the new policy types are created by the Policy-participant in API | Should receive a 200 response with Policy type present in the available policy types | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| ReviewAutomationComposition | Review the current state of AC instance | Should receive a 202 Accepted response and the substate should be present in the AC instance data | -+-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| CheckTimeoutAutomationComposition | Verify the migration AC instance deployment is timed out | Should receive a 200 response with stateChangeResult TIMEOUT | +| CheckTimeoutAutomationComposition | Verify the deployment is timing out for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | DeployAutomationCompositionMigration | Deploy the migration AC instance after updating Participant sim to return success | Should receive a 202 Accepted status and the deploy state should be DEPLOYED in ACM-R | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SendOutPropertiesToRuntime | Update participant sim to send outProperties and verify it is updated in ACM-R | Should receive 200 response from ACM-R and the response should contain the outProperties available under AC instance | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailReviewAutomationCompositionMigrationFrom | Verify the review failure for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| ReviewAutomationCompositionMigrationFrom | Review the current state of AC instance | Should receive a 202 Accepted response and the substate should be present in the AC instance data | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | AutomationCompositionUpdate | Update the AC instance properties in ACM-R | Should receive a 200 response from ACM-R and the AC instance should contain the updated property values | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | PrecheckAutomationCompositionMigration | Precheck the Migration AC instance | Should receive a 200 response and the AC instance should provide the substate info | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | AutomationCompositionMigrationTo | Migrate the AC instance | Should receive a 200 response and the AC instance should be migrated to to the target AC definition | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailAutomationCompositionMigration | Verify the Migration failure for AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailDePrimeACDefinitionsFrom | Verify the failure of deprime in migration AC definition by updating the participant sim to fail | Should receive a 202 Accepted response and the migration AC definition in ACM-R should have stateChangeResult FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DePrimeACDefinitionsFrom | Deprime the migration AC definition from the participants | Should receive a 202 Accepted response and the migration AC definition in ACM-R should be moved to COMMISSIONED state | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | UnDeployAutomationComposition | Undeploy the AC instance | Should receive a 202 Accepted response and the AC instance in ACM-R should have the UNDEPLOYED status | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | FailUnDeployAutomationCompositionMigrationTo | Verify the failure of undeploy in migration AC instance by updating the participant sim to fail | Should receive a 202 Accepted response and the stateChangeResult of the instance in ACM-R should be FAILED | @@ -93,10 +107,6 @@ ACM Integration Tests +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | DePrimeACDefinitions | Deprime the AC definition | Should receive a 202 Accepted response and the the AC definition in ACM-R should be moved to COMMISSIONED state | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| FailDePrimeACDefinitionsFrom | Verify the failure of deprime in migration AC definition by updating the participant sim to fail | Should receive a 202 Accepted response and the migration AC definition in ACM-R should have stateChangeResult FAILED | -+-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -| DePrimeACDefinitionsFrom | Deprime the migration AC definition from the participants | Should receive a 202 Accepted response and the migration AC definition in ACM-R should be moved to COMMISSIONED state | -+-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | DePrimeACDefinitionsTo | Deprime the migration target AC definition from the participants | Should receive a 202 Accepted response and the target AC definition in ACM-R should be moved to COMMISSIONED state | +-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ | DeleteACDefinition | Delete automation composition definition | Should receive a 200 response and the AC definition should be removed in ACM-R db | diff --git a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst index 802e9a0e..9204e4c3 100644 --- a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst +++ b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst @@ -239,8 +239,8 @@ Example of DEPLOY order with Http_PMSHMicroserviceAutomationCompositionElement w In that scenario the message AUTOMATION_COMPOSITION_DEPLOY has been sent two times. -Migration using Stage -********************* +Prepare and 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. @@ -248,6 +248,38 @@ 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: map + required: false + description: A map of list indicating for each operation 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: + prepare: [0] + migrate: [0,2] + +Backward compatibility for Stage definition ++++++++++++++++++++++++++++++++++++++++++++ +Stage for migration could be defined as shown below: + .. code-block:: YAML stage: @@ -259,7 +291,7 @@ Stage is defined as shown below in the Definition of TOSCA fundamental Automatio metadata: common: true -Example where it could be used: +Example of Backward compatibility for migration: .. code-block:: YAML @@ -274,6 +306,7 @@ Example where it could be used: uninitializedToPassiveTimeout: 180 stage: [0,2] + How Stage works +++++++++++++++ In state changes in MIGRATING Automation Composition elements starts in increasing order from stage 0. @@ -396,13 +429,13 @@ Monitoring is designed to process the follow operations: - to elaborate the messages from participants - to determine the next startPhase in a AUTOMATION_COMPOSITION_DEPLOY message -- to determine the next stage in a AUTOMATION_COMPOSITION_MIGRATION message +- to determine the next stage in a AUTOMATION_COMPOSITION_MIGRATION/AUTOMATION_COMPOSITION_PREPARE message - 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 update AC subState: in a scenario that "AutomationComposition.subState" is in a kind of transitional state (example PREPARING), if all - AC elements are moved properly to NONE state, the "AutomationComposition.subState" will be updated to NONE 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 an AC instance with startPhase completed, it will be moved to the next startPhase and retry a broadcast message with the new startPhase -- to retry AUTOMATION_COMPOSITION_MIGRATION messages. if there is an AC instance with stage completed, it will be moved to the next stage and retry a broadcast message with the new stage +- to retry AUTOMATION_COMPOSITION_MIGRATION/AUTOMATION_COMPOSITION_PREPARE messages. if there is an AC instance with stage completed, it will be moved to the next stage and retry a broadcast message with the new stage - to send sync message to all participants replica: in scenario where AC instance transition is fully completed or OutProperties has been changed The solution Design timeout and reporting for all Participant message dialogues are implemented into the monitoring execution. diff --git a/docs/clamp/acm/files/ACM-Message-Table.csv b/docs/clamp/acm/files/ACM-Message-Table.csv index b3f09a7a..540b043f 100755 --- a/docs/clamp/acm/files/ACM-Message-Table.csv +++ b/docs/clamp/acm/files/ACM-Message-Table.csv @@ -73,6 +73,7 @@ AutomationCompositionMigration,ACM Runtime,Participant,Message to request update ,,,,participantId,UUID indicating the participant the message is intended for ,,,,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. +,,,,stage,The next stage that participant is supposed to receiving ,,,,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 diff --git a/docs/clamp/acm/images/acm-states/AcInstanceStatesMigrationPrecheck.png b/docs/clamp/acm/images/acm-states/AcInstanceStatesMigrationPrecheck.png new file mode 100644 index 0000000000000000000000000000000000000000..70e80f2ff86ecf6c23bd4ba518715d81999fd6c4 GIT binary patch literal 34854 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

HkDz-+b1o4)lxOgho(8)94Jo0L5w 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 Z?Tr`HI=GUrfq28)e!YWxZ|I&l`#-29t%U#p literal 0 HcmV?d00001 diff --git a/docs/clamp/acm/images/acm-states/AcInstanceStatesReview.png b/docs/clamp/acm/images/acm-states/AcInstanceStatesReview.png new file mode 100644 index 0000000000000000000000000000000000000000..543eb489d91ffdb1b5abcd4347dc21da4116bdcb GIT binary patch literal 29785 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 V4`vMRz*9*ts48kHypgjE{vX5~v~~ah diff --git a/docs/clamp/acm/plantuml/states/AcInstanceStatesMigrationPrecheck.puml b/docs/clamp/acm/plantuml/states/AcInstanceStatesMigrationPrecheck.puml new file mode 100644 index 00000000..72eeb607 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcInstanceStatesMigrationPrecheck.puml @@ -0,0 +1,15 @@ +@startuml + +[*] --> NONE:DEPLOYED +NONE:DEPLOYED --> MIGRATION_PRECHECKING: Migrate precheck +MIGRATION_PRECHECKING --> NONE:DEPLOYED: Completed +MIGRATION_PRECHECKING --> MIGRATION_PRECHECKING:DEPLOYED:FAILED: Failed +MIGRATION_PRECHECKING --> MIGRATION_PRECHECKING:DEPLOYED:TIMEOUT: Timeout +MIGRATION_PRECHECKING:DEPLOYED:FAILED --> MIGRATION_PRECHECKING: Migrate precheck +MIGRATION_PRECHECKING:DEPLOYED:TIMEOUT --> MIGRATION_PRECHECKING: Migrate precheck +NONE:DEPLOYED --> UNDEPLOYING: Undeploy +MIGRATION_PRECHECKING:DEPLOYED:FAILED --> UNDEPLOYING: Undeploy +MIGRATION_PRECHECKING:DEPLOYED:TIMEOUT --> UNDEPLOYING: Undeploy + + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcInstanceStatesPrepare.puml b/docs/clamp/acm/plantuml/states/AcInstanceStatesPrepare.puml new file mode 100644 index 00000000..89fca2f7 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcInstanceStatesPrepare.puml @@ -0,0 +1,14 @@ +@startuml + +[*] --> NONE:UNDEPLOYED +NONE:UNDEPLOYED --> PREPARING: Prepare +NONE:UNDEPLOYED --> DELETING: Delete +PREPARING --> NONE:UNDEPLOYED: Completed +PREPARING --> PREPARING:UNDEPLOYED:FAILED: Failed +PREPARING:UNDEPLOYED:FAILED --> PREPARING: Prepare +PREPARING --> PREPARING:UNDEPLOYED:TIMEOUT: Timeout +PREPARING:UNDEPLOYED:TIMEOUT --> PREPARING: Prepare +PREPARING:UNDEPLOYED:FAILED--> DELETING: Delete +PREPARING:UNDEPLOYED:TIMEOUT --> DELETING: Delete + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcInstanceStatesReview.puml b/docs/clamp/acm/plantuml/states/AcInstanceStatesReview.puml new file mode 100644 index 00000000..582400bd --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcInstanceStatesReview.puml @@ -0,0 +1,14 @@ +@startuml + +[*] --> NONE:DEPLOYED +NONE:DEPLOYED --> REVIEWING: Review +REVIEWING --> NONE:DEPLOYED: Completed +REVIEWING --> REVIEWING:DEPLOYED:FAILED: Failed +REVIEWING --> REVIEWING:DEPLOYED:TIMEOUT: Timeout +REVIEWING:DEPLOYED:FAILED --> REVIEWING: Review +REVIEWING:DEPLOYED:TIMEOUT --> REVIEWING: Review +NONE:DEPLOYED --> UNDEPLOYING: Undeploy +REVIEWING:DEPLOYED:FAILED --> UNDEPLOYING: Undeploy +REVIEWING:DEPLOYED:TIMEOUT --> UNDEPLOYING: Undeploy + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml b/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml deleted file mode 100644 index 918a03b3..00000000 --- a/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml +++ /dev/null @@ -1,18 +0,0 @@ -@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 -- 2.16.6