Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

How startPhase is currently implemented

  • startPhase is configured in composition definition element and defines the order of execution of instance elements;
  • Any instance element is executed only once;
  • All instance elements whit same startPhase are executed at same time in parallel;
  • startPhase is used by deploy and unlock; startPhase in reverse order is used by lock, undeploy and delete;

Example using the Demo. The table below shows the startPhase for each Composition Definition Element

...

The diagram below shows the flow of messages:

Note:

...

...

Alternative flow with "stage"

...

  • Still valid the startPhase definition for backward compatibility;
  • Using startPhase and stage in a composition definition is not valid;
  • stage is configured in composition definition element;
  • Any composition definition element could have different sptePhase stage for each operation: for example the order for deploy could different for migrate;
  • Any instance element could be executed more then one time; 
  • All instance elements whit same stage are executed at same time in parallel;
  • stage has not reversal order.

...

Code Block
languageyml
properties:
  stage:
    - deploy: [0,1]
    - migrate: [0,2]
    - update: [0]
    - undeploy: [10]
    - delete: [10]

All not defined operations will be set to 0.

...

Code Block
languagejava
    /**
     * Handle an update on a automation composition element.
     *
     * @param compositionElement the information of the Automation Composition Definition Element
     * @param compositionElementTarget the information of the Automation Composition Definition Element Target
     * @param instanceElement the information of the Automation Composition Instance Element
     * @param instanceElementMigrate the information of the Automation Composition Instance Element updated
     * @param stage the stage to perform
     * @throws PfModelException from Policy framework
     */
    void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
            InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate, intInteger stage) throws PfModelException;

Note: instanceElement will contain the old properties only in the first call, if required we can implement old properties for each stage.

When an instance element has completed a stepstage, not means that the full implementation execution is completed (DEPLOYED state).

It will add new method "updateAutomationCompositionElementStateupdateAutomationCompositionElementStage" as below:.

Code Block
languagejava
    /**
       * Update the statestage of a automation composition element.
     *
     * @param automationCompositionIdinstanceId the ID of the automation composition to update the state on
     * @param elementId the ID of the automation composition element to update the state on
     * @param deployState the Deploy State of the automation composition element
     * @param lockState
the Lock State of the automation composition element
     * @param stateChangeResult the indicator if error occurs
     * @param stageCompletednextStage the next stage completedto do
     * @param message the message
     */
     void updateAutomationCompositionElementStateupdateAutomationCompositionElementStage(UUID automationCompositionIdinstanceId, UUID elementId, DeployState deployState,
            LockState lockState, StateChangeResult stateChangeResult, intInteger stageCompletednextStage, String message);

Note: Participant has the control to decide what will be the next stage.


During the execution of the operation how the user is able to see the steps executed by the instance element? Same for monitoring, it needs new filed into Instance Element to store what step is executedstage that is executing for each instance element. "stage" field will be add in DB.

Code Block
languagexml
                "709c62b3-8918-41b9-a747-d21eb79c6c23": {
                    "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
                    "definition": {
                        "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElementSefAutomationCompositionElement",
                        "version": "1.2.3"
                    },
                    "participantId": "101c62b3-8918-41b9-a747-d21eb79c6c91",
                    "deployState": "DEPLOYINGMIGRATING",
                    "stage": 12,
                    "lockState": "NONELOCKED",
                    "description": "SinkSef Automation Composition Element for the Demo",
                    "message": "Stage 0 completed",