CPS Events Structure

CPS Events Structure

Overview

https://lf-onap.atlassian.net/browse/CPS-1628

  • This page gives a description of CPS events including their fields

  • Events will be split into events and Headers

Issues & Decisions

#

Description

Notes

Decision

#

Description

Notes

Decision

1

No Event properties defined for DMI AVC Event

@Priyank Maheshwari will need to specify  and agreed event structure for DMI AVC Event with stakeholders  ie. provide Jira ticket

 

Event Body should be compatible with RFC8641

@kieran mccarthy has confirmed.

@Priyank Maheshwari created JIRA to create the event body schema. 

2

Bulk Operation events details have not yet be defined (just headers)

@Sourabh Sourabh to provide Jira tickets

https://lf-onap.atlassian.net/browse/CPS-1658

3

Should all the events have same Headers

 

@kieran mccarthy Apr 26, 2023 Possibly Common (base) set of headers but mandatory aspect might differ. In practice we might need a separate headers (schema?) for each event

4

Clarify the format of the version eventSchemaVersion

v1 or 1.0

ex: 1.0.0 (without 'v')

@kieran mccarthy to check ORAN preference

@kieran mccarthy confirms through email on May 12, 2023 to use semantic versioning which ORAN follows https://semver.org.

5

What to do with additional event headers (from DMI Plugins)

 

@kieran mccarthy  Apr 26, 2023 if DMI produce additional headers NCMP will discard those i.e. not included in forwarded events

6

Event(Content) field in DMI Async Request Response Event has inconsistent name (compared with other schemas)

  1. Add V2 file

  2. Deprecate V1

  3. Support both versions for a while

  4. Delete the V1 version (after some time)

CPS Team Apr 27, 2023 Create a V2 of the schema and rename eventContent as event data. Do it as part of the schema addition.

7

NCMP Async Request Response Event (#5) contains both an Event and ForwardedEvent

ForwardedEvent is not wrapped inside Event but question now is if we need 2 events at all?!

@Sourabh Sourabh  and @RAVITEJA KARUMURI (EST)  can check how it is actually working and then we decide (create a JIRA ticket)

Wiki for the Study on NCMPAsyncRequestResponse event schema

Conclusion: events not designed as proposed, very inconsistent. Never go a bug because these async events aren't used at all (confirmed by Csaba Koscis) Instead bulk request wil be used for topology use cases.

May 10, 2023 @kieran mccarthy and team agreed to:

  1. Temporary disable the legacy async request feature (task created: https://lf-onap.atlassian.net/browse/CPS-1694)

  2. As part of a lower priority work items (but during Montreal) fiX related events with learnings from the new batch-usecase. (task created https://lf-onap.atlassian.net/browse/CPS-1693)

8

Dmi Data AVC Event, use of eventSource field

@Priyank Maheshwari wanted to store 'datastore' in this field but @kieran mccarthy explained it to use for different purposes

@kieran mccarthy Clients can use this field as per their requirements. 

9

Can Headers be described with 'schema's owned and managed by NCMP 

POC to follow. https://lf-onap.atlassian.net/browse/CPS-1657

Defining header schema.

Integration of header with kafka.

Naming and versioning convention for the header schemas. 'id' 

Does the headers schema have a version too?!

 

May 3, 2023 @Priyank Maheshwari confirmed headers can be described with a separate schema.

Both header schema's and event schemas will be published on https://docs.onap.org/projects/onap-cps/en/latest/cps-events.html

Header schema name and version will be maintained in the 'id' metadata field of header's schema . 

10

Depending #10 can schema inherit/extend a common schema for common headers

Commonly define them and then define what are mandatory(required) or optional as per the schema extending it.

If a field is not used in the extended schema then it should be able to handle it.

extend the POC (on #9) to cover this.

May 9, 2023  @Priyank Maheshwari did the POC and the conclusion of that was that :-

  • One schema can extend the other schema.

  • We cannot override the mandatory/optional parameter from the Parent schema. 

May 9, 2023 @Toine Siebelink agrees to go ahead with separate schema/headers per event.  There will be some duplication but it will have its advantage when versioning. 

11

Is anyone using Async Request feature?

See https://lf-onap.atlassian.net/browse/CPS-1660 we need to re-design event  #4 (Covers Point 6 as well) and #5 in a backward incompatible way. If no-one is using this feature right now (suspected) we can do this more easily/cheaper!

May 3, 2023 @Csaba Kocsis confirmed this is not used by Ericsson currently. No plans to use soon for single-cmhandle requests either (TBC). Need to decide priority (@Csaba Kocsis to find out of fiXing the legacy schema(s)
See decision on issue #7

12

Do we need additionalProperties for DMI ASync Data Request respondes (events #4, #5)

The original code populates a framework defined 'additionalProperties' field with a singel key-value pair: "response-data",{<json data>}. No other (private) properties are added either in DMI PLugin or NCMP code. The name is just coincidence and misleading. In fact this 'additionalProperties' field should NOT have been used at all!

No, the new schema should NOT add  'additionalProperties' field at all use 'additionalProperties:no' in the schema

13

AVC Subscription Event (DMI → NCMP) (events #3)

  • Want to understand what 'data' is datatype referring to under Subscription Event?

    • What value comes under 'schemaName' & 'SchemaVersion' of Datatype definition under AVC Subscription Event?

    • Reconfirmation needed on 'schemaName' & 'SchemaVersion'  should be in the payload?

 @kieran mccarthy Jun 7, 2023 this issue is now no longer relevant as the decision was to use CNCF Cloud Events instead as per decision #14

14

Align headers with CNCF Cloud Events

Using standard headers as defined by Cloud Events and possibly common header extension See Table below, CNFC Cloud Event alignment
CPS will use Cloud Events  3PP for all current and legacy events to ensure common format

May 23, 2023 @kieran mccarthyand @Toine Siebelink  agreed on general idea but exact list of common headers need to be agreed 
Jira (first impl.) to be added! 

https://lf-onap.atlassian.net/browse/CPS-1717

15

During the meeting we saw that the Header fields were prefiXed with "ce_" so we need to check if we are ok with that.

assume "ce_" can be used as all user of the CNCF lib will get this behavior, will check if it can be replaced with no prefix at all. 
@Sourabh Sourabh and @Priyank Maheshwari concluded a cloud events specific serializer is used that add this prefix and cannot easily be changed (also that would be inconsistent use of this library) 

CPS Team recommend to accept this prefix and simply document that this prefer is required when filtering on kafka headers defined by CloudEvenst standard.

Jun 7, 2023  team agreed with  @kieran mccarthy to accept "ce_" prefix on serialzied CE defined headers. 
Note. Event(s) documentation in RTD should mentioned this  clearly too

16

Do will still need/ can we still use schemas for header details with CNCF library ?! 

How to publish info about non-standard headers like correlationid ?

Meeting on May 31, 2023  Team agreed refer to CNFC doc. and add list of extensions in RTD documentation. (key and value constraints)

17

Inconsistent casing convention for header fields v. json data fields

Just observing. All header ion CNCF are lowercase whereas json field are camelCase. Don't want to change but want to make sure agree...

Meeting on May 31, 2023  Team agreed this is the way it is and @Toine Siebelink will update to CPS Style section: Contribution and Development#CommonStyleConventions

18

Confirm 'source'. is to be added to ALL events (declared mandatory for CNFC events)

 

@kieran mccarthy Jun 7, 2023 confirm is is compulsory and a value will need to be set for all event definition. in NCMP a default value of 'ncmp' can be used if no other source is applicable. @Toine Siebelink will update this page were needed to add this field and default value

Event Overview

#

Short Name

Source

Destination

Impl. Status

Notes

Full Schema Name

Diagram Ref.

#

Short Name

Source

Destination

Impl. Status

Notes

Full Schema Name

Diagram Ref.

1

LCM Event

NCMP

Client Apps

In Use

Life Cycle Management Events, when cmHandles are added or removed

cps:org.onap.ncmp.cmhandle.lcm-event:v1

CM-Handle State Changes and Notifications Overview#Notificationhandlingincode

2

DMI Data AVC Event

DMI

NCMP

Implemented, Not in use

Attribute Value Change in configuration management (CM) data.

cps:org.onap.cps.ncmp.events:avc-event-schema:v1

5 in CPS Data Notifications Overview#ComponentDiagram

3

AVC Subscription Create Event

Client 

NCMP & DMIs

Implemented, Not in use

Create Event Only

cps:org.onap.cps.ncmp.events:avc-subscription-event:v1

7 in CPS Data Notifications Overview#ComponentDiagram

4

DMI Async Request Response Event

DMI

NCMP

In Use

DMI passes response onto Kafka topic specified by client.

cps:org.onap.cps.ncmp.events:dmi-async-request-response-event-schema:v1

3b → 4a in CPS-821 Spike: Support Async read-write operations on CPS-NCMP interface#ProposedDesign

5

NCMP Async Request Response Event

NCMP

Client Apps

In Use

Forward No.4 to client specified topic

cps:org.onap.cps.ncmp.events:ncmp-async-request-response-event-schema:v1

4b → 5 in CPS-821 Spike: Support Async read-write operations on CPS-NCMP interface#ProposedDesign

6

Bulk Response Event (Internal)

DMI

NCMP

In Progress

Internal Kafka topic

cps:org.onap.cps.ncmp.event:dmi-async-bulk-response-event-schema:v1

5 in CPS-1515: Spike: Support Multiple CM-Handles for NCMP Get Operation (Data operations)#BulkRequestMessageFlow

7

Bulk Response Event (Client)

NCMP

 Client Apps

In Progress

Forwarding the DMI responses to the client topic

cps:org.onap.cps.ncmp.event:ncmp-async-bulk-response-event-schema:v1

6 in CPS-1515: Spike: Support Multiple CM-Handles for NCMP Get Operation (Data operations)#BulkRequestMessageFlow

#1 LCM Event (NCMP → Client Apps)

Description

LCM (Life Cycle Management) Event. Sent by NCMP when the state of a CM Handle changes. For diagram see CM-Handle State Changes and Notifications Overview#Notificationhandlingincode

Current LCM Event Object

Field

Type

Description

Header

Payload

Notes

CloudEvents Mapping

Field

Type

Description

Header

Payload

Notes

CloudEvents Mapping

eventID

string

The unique id identifying the event

X

 

Mandatory

standard (id)

eventCorrelationId

string

The id identifying the event.  In LCMEvent this is always a cmhandleId

X

 

Optional
(extension fields will be optional now)

extension (correlationid)

eventTime

string

The timestamp when original event occurred

X

 

Mandatory

standard (time)

eventSource

string

The source of the event

X

 

Mandatory

standard (source)

eventType

string

The type of the event

X

 

Mandatory

standard (type)

eventSchema

string

The schema that this event adheres to. 

X

 

Mandatory e.g. cps:org.onap.ncmp.cmhandle.lcm-event:1.0.0

standard (dataschema)

eventSchemaVersion

string

The version of the schema that this event adheres to

X

 

Mandatory e.g v1.0

N/A included in 'dataschema'

event

Event

The payload of an event

 

X

Mandatory

standard (data)

N/A

N/A

The version of CNCF Specification

X

 

Specified by CNCF (value hardcoded)

standard (specversion)

Type:Event (cps:org.onap.ncmp.cmhandle.lcm-event:v1)

Field

Type

Description

Header

Payload

Notes

Field

Type

Description

Header

Payload

Notes

cmHandleId

string

cmHandle id

 

X

 

oldValues

Values

Values that represents the state of a cmHandle

 

X

Defined by values object below

newValues

Values

Values that represents the state of a cmHandle

 

X

Defined by values object below

Type:Values

Field

Type

Description

Header

Payload

Field

Type

Description

Header

Payload