Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
# | Issue | Notes/Jira | Decision |
---|---|---|---|
1 | Agree on a solution | proceed 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 )
Scenarios to keep in mind
- 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 ???? )
Potential Solutions
- Use code triggers
- 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
...
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:
- Create Registration (NEW to ADVISED)
- Module Sync Success ( ADVISED TO READY)
Fail (ADVISED TO LOCKED) - Retry ( LOCKED TO ADVISED )
- Deleting ( ADVISED to DELETING , READY to DELETING, LOCKED to DELETING ) / separate us **
- Deleted ( DELETING to DELETED ) separate us **
Jira Legacy server System Jira columnIds issuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 4733707d-2057-3a0f-ae5e-4fd8aff50176 key CPS-1120
At a high level the method signature should like below.
Code Block | ||||
---|---|---|---|---|
| ||||
/**
* 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
CPS-858 Define Notifications on CM Handle Add (Ready) & Delete