Table of Contents |
---|
Overview
- Each LCM state change triggers a notification to the user to notify about the state change
- When a cm handle is registered it will be in 'ADVISED' state and data-sync will be set to false by the module-sync watchdog
- If the user wants to enable data-sync - it has to enable it on its dedicated API endpoint
- Only the handles with enabled data-sync will be picked up by the data-sync watchdog
- If the handles are to be deleted during update then their states will be set to 'DELETING' before the deletion happens, then after it to 'DELETED'
- If the data-sync watchdog starts to work with on a cm Handle state transitions to 'READY' or 'LOCKED' whether data-sync succeeded or failed respectively
Diagram of the possible transactions between CM-Handle states
Excerpt Include | ||||
---|---|---|---|---|
|
Notification details
Notification handling in code
Embed draw.io Diagram | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
The Event structure of the notification
Event schema
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "urn:cps:org.onap.ncmp.cmhandle.lcm-event:v1", "$ref": "#/definitions/LcmEvent", "definitions": { "Values": { "description": "Values that represents the state of a cmHandle", "type": "object", "properties": { "dataSyncEnabled":{ "description": "Whether data sync enabled", "type": "boolean" }, "cmHandleState": { "description": "State of cmHandle", "type": "string", "enum": ["ADVISED", "READY", "LOCKED", "DELETING", "DELETED"] }, "cmHandleProperties": { "description": "cmHandle properties", "type": "object", "default": null, "existingJavaType": "java.util.List<java.util.Map<String,String>>", "additionalProperties": false } }, "additionalProperties": false }, "Event": { "description": "The Payload of an event", "type": "object", "properties": { "cmHandleId": { "description": "cmHandle id", "type": "string" }, "oldValues": { "$ref": "#/definitions/Values" }, "newValues": { "$ref": "#/definitions/Values" } }, "required": [ "cmHandleId" ], "additionalProperties": false }, "LcmEvent": { "description": "The payload for LCM event", "type": "object", "javaType" : "org.onap.ncmp.cmhandle.event.lcm.LcmEvent", "properties": { "eventId": { "description": "The unique id identifying the event", "type": "string" }, "eventCorrelationId": { "description": "The id identifying the event", "type": "string" }, "eventTime": { "description": "The timestamp when original event occurred", "type": "string" }, "eventSource": { "description": "The source of the event", "type": "string" }, "eventType": { "description": "The type of the event", "type": "string" }, "eventSchema": { "description": "The schema that this event adheres to", "type": "string" }, "eventSchemaVersion": { "description": "The version of the schema that this event adheres to", "type": "string" }, "event": { "$ref": "#/definitions/Event" } }, "required": [ "eventId", "eventCorrelationId", "eventTime", "eventSource", "eventType", "eventSchema", "eventSchemaVersion", "event" ], "additionalProperties": false } } } |
Event examples
Excerpt Include | ||||
---|---|---|---|---|
|
Typical use cases which leads to state changes and trigger notification events
State changes after new cm Handle is registered
Gliffy Diagram | ||||||||
---|---|---|---|---|---|---|---|---|
|
State changes after cm Handle update received
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
State changes happens during data-sync watchdog execution
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
Source materials
Important links to related Spikes and Implementation proposals
(From latest to older ones)
- CPS-1104 Agree LCM Event schemas
- CPS-1119: Define the Initial Data Sync State on each cmhandle registration request
- CPS-1034 Publish LCM Events on Cmhandle State Change(NcmpEventsCmHandleStateHandler)
- Workshop: CM-Handle States & Locking
- CPS-909 Separate NCMP endpoint for cm-handle properties and cm-handle state
- CPS-1014 Yang module update with DataStoreSyncState
- CPS-875 Cm Handle State: Java Enum State Machine
- CPS-877: Exclude any CM-Handles from queries/operations that are not in state 'READY'
- CPS-875 CM Handle State: Watchdog-process that syncs 'ADVISED' CM Handles
- CPS-872 CM Handle State: define and agree new dmi-registry yang model supporting States
- CPS-799 Spike: Define states and state handling for CM handle