Versions Compared

Key

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

Jira Legacy
serverSystem Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keyCPS-1034


#

Issue

Notes/Jira

Decision

1Agree on a solutionproceed with Solution#2 as it would be more scalable.

Implementation Proposal

...

Problem Statement :  

To publish the NcmpEvent when there is a change in the cmHandleState ( state transition )

...

  • We have to introduce a detail field in the NcmpEvent payload which can contain the previous state and other details.
  • We have to publish an event on public properties update ( even though we dont have any state change ???? ) 

...

  1. Use code triggers
  2. Any other solution ? Common State Handler


Solution #1 : Code Triggers

...

  • Create a cmHandleState handler which takes in the cmHandleState transition event
    --  Responsible for identifying the state transition
    --  Based on state transition call the relevant methods to create the NcmpEvent accordingly.


  • Identify the trigger points in the code where the actual state transitioning is happening and call the handler from there and provide the type of transition.


    Overview

...

Image Added

2. Solution #2

Responsibilities of the state handlers

  • Accept : cmHandleId and other common params.
  • Set the object to the required state.
  • Persist the new state.
  • Send the correct event about the state change.


  • Identify the input and output params.
    I/P : examine the existing code , identify the commonalities and then propose.


Current State Transition:

  1. Create Registration (NEW to ADVISED)
  2. Module Sync Success ( ADVISED TO READY)
    Fail (ADVISED TO LOCKED)
  3. Retry ( LOCKED TO ADVISED ) 
  4. Deleting ( ADVISED to DELETING , READY to DELETING, LOCKED to DELETING )  / separate us **
  5. Deleted ( DELETING to DELETED )  separate us **  
    Jira Legacy
    serverSystem Jira
    columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
    keyCPS-1120


At a high level the method signature should like below.

Code Block
languagejava
titleState Handler
    /**
     * Responsible for handling the state transition and publishing the lcm event if required.
     *
     * @param cmHandleId          cm handle id
     * @param yangModelCmHandle   cm handle represented as Yang Model
     * @param targetCmHandleState target cm handle state
     */
    void updateState(final String cmHandleId, final YangModelCmHandle yangModelCmHandle,
            final CmHandleState targetCmHandleState);



References

CPS-799 Spike: Define states and state handling for CM handle

...