Overview
- By each LCM state change the related notification is sent to user to notify about the state change
- When an event is registered it will be in ADVISED state
- Only the handles with ADVISED state will be picked up by a watchdog
Diagram of the possible transactions between CM-Handle states
CPS-799 Spike: Define states and state handling for CM handle
Notification details
Notification handling in code
The Event structure of the notification
Event schema
{ "$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
CPS-1104 Agree LCM Event schemas
Typical use cases which leads to state changes and trigger notification events
State changes after new Handle is registered
State changes after Handle update received
State changes happens during watchdog execution
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