.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2022 Nordix Foundation

.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
.. _cpsEvents:

CPS Events
##########

CPS Core
********
..
   Cps core events yet to be written


CPS-NCMP
********

Lifecycle Management (LCM) Event
================================


Overview
--------
Lifecycle management events are published as cm handle state transitions from one state to another.


LCM events and state handler
----------------------------
The LCM events are triggered under the state handler which has the following responsibilities:

#. Updating and persisting cm handle state based on the target state of the cm handle

#. Create and calls to publish the LCM event based on the cm handle state transition that occured

	**3 possible event types:**

	* Create
	* Update
	* Delete



LCM Event Schema
----------------
The current published LCM event is based on the following schema:

:download:`Life cycle management event schema <schemas/lcm-event-schema-v1.json>`

LCM Event structure
-------------------

Events header
^^^^^^^^^^^^^
*Event header prototype for all event types*

.. code-block:: json

	{
  		"eventId"                : "00001",
  		"eventCorrelationId      : "cmhandle-001",
  		"eventTime"              : "2021-11-16T16:42:25-04:00",
  		"eventSource"            : "org.onap.ncmp",
  		"eventType"              : "org.onap.ncmp.cmhandle-lcm-event.create",
  		"eventSchema"            : "org.onap.ncmp:cmhandle-lcm-event",
  		"eventSchemaVersion"	   : "1.0"
  		"event": ....
	}

Events payload
^^^^^^^^^^^^^^
Event payload varies based on the type of event.

**CREATE**

Event payload for this event contains the properties of the new cm handle created.

*Create event payload prototype*

.. code-block:: json

  "event": {
         "cmHandleId" : "cmhandle-001",
         "newValues" : {
             "cmHandleState"  : "ADVISED",
             "dataSyncEnabled" : "TRUE",
             "cmhandleProperties" : [
                          "prop1" : "val1",
                          "prop2" : "val2"
                ]
            }
       }
   }


**UPDATE**

Event payload for this event contains the difference in state and properties of the cm handle.

*Update event payload prototype*

.. code-block:: json

  "event": {
         "cmHandleId" : "cmhandle-001",
         "oldValues" : {
                 "cmHandleState"  : "ADVISED",
                 "dataSyncEnabled" : "FALSE",
                 "cmhandleProperties" : [
                          "prop1" : "val1",
                          "prop2" : "val2",
              }
          "newValues" : {
             "cmHandleState"  : "READY",
             "dataSyncEnabled" : "TRUE",
             "cmhandleProperties" : [
                          "prop1" : "updatedval1",
                          "prop2" : "updatedval2"
                   ]
            }
       }
   }


**DELETE**

Event payload for this event contains the identifier of the deleted cm handle.

*Delete event payload prototype*

.. code-block:: json

  "event": {
         "cmHandleId" : "cmhandle-001",
   }