Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introduction

This page given an high level overview of Notifications used by CPS/NCMP for communication wit system outside CPS/NCMP about data changes.
There are also notifications used for asynchronous  method calls but there are kept out this overview for the sake of simplicity.

Issues and Decisions

Issue

Notes

Decision

Topic names

  • for now, between [#13b, #2 and #12] only #12 is/can be changed that won’t impact clients

  • #12 is a starting point to be changed as part of ‘inventory-events’ topic as it was requested and not used by any client at the moment

  • ‘inventory-events’ relates to all events that is related to the meta-data of a cm handle

Topic env naming convention

  • Current topic envs cannot be change and needs agreement with topic

  • from here on, spring default naming convention will be used based on the application.yaml hierarchy structure

Schema names

  • to be proposed and agreed with stakeholders

Schema File names

Schema file names will be based on schema names

Producer vs Consumer

Consumer overpowers Producers

No use of term Publisher no more - use Producer instead

Schema folder structure


See also: CPS-1489: Overview of Kafka Topics in CPS Components

Component Diagram

Gliffy
macroId968c4ebd-26d8-425e-b89d-e858df3851f3
displayNameUpdated CPS Notifications Overview
nameCPS Notifications Overview
pagePin27
version36


Event Descriptions

...

#

Description

Source

Topic

Destination

Trigger

R12 Work Item

Cloud
Event

Notes

1

CPS Temporal, Removed5

(a)

DmiAsyncRequestResponseEvent

(NCMP-Async Event)

DMI

ncmp-async-m2m

NCMP

DMI async request response

No

1(b)

NcmpAsyncRequestResponseEvent

(NCMP-Async Event)

NCMP

Client target topic

External (NCMP) Clients

DMI async request response

No

1(c)

DataOperationEvent

(NCMP-Async Event)

DMI

ncmp-async-m2m

NCMP

Batch data operation

Yes

1(d)

DataOperationEvent

(NCMP-Async Event)

NCMP

Client target topic

External (NCMP) Clients

Yes

2

NCMP CM-Handle LCM (LifeCycle Management) events

NCMP

ncmp-events

External (NCMP) Clients

NCMP CM-Handle State Change
(registration use-case)

N/A

No*

  1. See also CM-Handle State Changes and Notifications Overview

  2. On by default, can be disabled using notification.enabled

  3. AlternateId has been added (Spring 2024)

  4. *Cloud Version Pending (blocked by Ericsson as it is backward incompatible) see https://gerrit.onap.org/r/c/cps/+/137080

3

CPS-Core Data AVC

CPS-Core

Priyank Maheshwari to update

External Clients

Data Change & CPS-Core Subscription

#7

No

Any client can subscribe to CPS-Core for any data subscription. The subscription wil include the topic to be used

6

VES Event

ONAP Devices


ONAP DMI Plugin

Change on Device

#7

No

  1. Open issue: how to translate an ONAP device ID to a CM Handle ID?!

Not implemented

7(a)

Subscription Notification Event

Suggestion: ‘subscription maintenance’

DME
(Data Mgmt and Exposure)

subscription

NCMP

User driven? CRUD operation Notification Subscriptions

#6b

Yes

See also

The source can be anything that is authorized and knows the subscription event schema. It will be up to the encapsulating 'product' e.g. ONAP to decide if applications should use this interface directly. 

From NCMP perspective this is an access control challenge – If you are authorized to write to the cm-avc-subscription topic, NCMP will react

7(b)

NCMP

ncmp-dmi-cm-avc-subscription

DMI

7(c)

DMI

dmi-ncmp-cm-avc-subscription

NCMP

7(d)

NCMP

subscription-response

DME

8

Proprietary AVC

Proprietary Devices

N/A

Proprietary DMI Plugin

Change on Device

N/A

No

Irrelevant to ONAP Solution might not even by an 'event'. As long as it can be converted into a DMI Data AVC (#5)

9

VES Event

ORAN Devices


Proprietary DMI Plugin

Change on Device


No

Similar to #6 above. Main fields:

  • href → can be mapped to cm-handle by plugin (without additional information from other fields)

  • path → can be mapped to xpath by plugin 

Not implemented

11

TrustLevel Changes

DMI

dmi-device-heartbeat

NCMP



Yes


12

Inventory Event

NCMP

ncmp-inventory-events

External Clients



Yes

April 2024,: Only used to forward TrustLevel Changes

13(a)

DMI-CM Event

DMI/Devices

dmi-cm-events

NCMP

Any change in the configuration in the devices


Yes

This is to notify NCMP about any CM change that happened in the network.

This event is also supposed to be used together with the Cm Subscriptions( to route to the defined topic - future work )

13(b)

Cm Data Change

NCMP

cm-events

*tbd

External Clients

Any change in the configuration in the devices and NCMP forwards to this topic


Yes

Whatever event is received from 13a is been forwarded by NCMP to external clients.

BatchOperation

NCMP

Client Provided Topic

External Clients



Yes


previously #10 (see old diagram)

NCMP Data AVC (forwarding #5)

NCMP

  • determined by ncmp-subscription(s) 

  • 0-n topics possible*

External (NCMP) Clients

DMI Data AVC on passthrough datastore & NCMP Subscription

#6a

No

The notifications should be on the set of topics specified by the union of all relevant subscriptions. This is why there is a difference between the subscription model (visible to a client/subscriber) and the subscription model used internally – The notification should not need to calculate, only look up the set of topics to emit on.
One cm-handle can have 0-many topics
The 'predicate' information is only to be forwarded to the DMI Plugin does not need to be stored (TBC with kieran mccarthy )

4CPS-Core Data AVCCPS-Core
  • determined by cps-core-subscription(s) 
  • 0-n topics possible*
External ClientsData Change & CPS-Core Subscription#7No

Any client can subscribe to CPS-Core for any data subscription. The subscription wil include the topic to be used

previously #3 (see old diagram)

DMI Data AVC (Attribute Value Change)

DMI-Plugin

TBD

NCMP

Depends on DMI-Plugin

  • ONAP: VES Events from Device

#6a
#7

Yes

  1. Format (schema) of the Event is defined by (in) NCMP

  2. Topic names is defined by NCMP

  3. For passthrough datastore NCMP will emit a NCMP Data AVC (#3). Do we need to check tHE Datastore or just the cache enabled flag?

  4. If data is cached this event should lead to a CPS-Core(Cache) update and a CPS-Core Data AVC (#4)

6VES EventONAP DevicesONAP DMI PluginChange on Device#7No
  1. Open issue: how to translate an ONAP device ID to a CM Handle ID?!
7Notification Subscription EventDME
(Data Mgmt and Exposure)cm-avc-subscriptionNCMPUser driven? CRUD operation Notification Subscriptions#6bYes

See also

The source can be anything that is authorized and knows the subscription event schema. It will be up to the encapsulating 'product' e.g. ONAP to decide if applications should use this interface directly. 

From NCMP perspective this is an access control challenge – If you are authorized to write to the cm-avc-subscription topic, NCMP will react

8Proprietary AVCProprietary DevicesN/AProprietary DMI PluginChange on DeviceN/ANoIrrelevant to ONAP Solution might not even by an 'event'. As long as it can be converted into a DMI Data AVC (#5)9VES EventORAN DevicesProprietary DMI PluginChange on DeviceNo

Similar to #6 above. Main fields:

  • href → can be mapped to cm-handle by plugin (without additional information from other fields)
  • path → can be mapped to xpath by plugin 
10BatchOperationNCMPExternal ClientsYes11TrustLevel ChangesDMINCMPYes12NCMP-AVC EventNCMPExternal ClientsYes

April 2024,: Only used to forward TrustLevel Changes

Component Diagram

previoulsy #5 (see old diagram)


NCMP (Northbound)

event #

1(b)

1(d)

2

12

13(b)

7(d)

topic name

client provided topic

client provided topic

ncmp-events

ncmp-inventory-events

cm-events

subscription-response

topic env

-

-

LCM_EVENTS_TOPIC

  • use spring default naming convention

NCMP_CM_EVENTS_TOPIC

CM_SUBSCRIPTION_NCMP_OUT_TOPIC

topic yaml

-

-

app.lcm.events.topic

app.ncmp.avc.inventory-events-topic

app.ncmp.avc.cm-events-topic

app.ncmp.avc.cm-subscription-ncmp-out

event name

NcmpAsyncRequestResponseEvent

DataOperationEvent

CM handle LCM Event

Inventory Event

CM Data Change

Subscription Notification Event?

schema id

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

urn:cps:org.onap.cps.ncmp.events.async:data-operation-event-schema:1.0.0

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

urn:cps:org.onap.cps.ncmp.events:inventory-event-schema:1.0.0

urn:cps:org.onap.cps.ncmp.events:avc-event-schema:1.0.0

urn:cps:org.onap.cps.ncmp.events:cm-notification-subscription-ncmp-out-event-schema:1.0.0

schema folder

schemas/

schemas/async/

schemas/ncmp/avc/

/schemas/dmi/cm-events/

schemas/ncmp/avc/

schema file name

ncmp-async-request-response-event-schema-v1.json

data-operation-event-schema-1.0.0.json

lcm/lcm-event-schema-v1.json

inventory-event-schema-1.0.0.json

avc-event-schema-1.0.0.json

ncmp-out-event-schema-1.0.0.json

Producer package

org.onap.cps.ncmp.impl.data.async

org.onap.cps.ncmp.impl.data.async

org.onap.cps.ncmp.impl.inventory.sync.lcm.

org.onap.cps.ncmp.utils.events.

org.onap.cps.ncmp.impl.cmnotificationsubscription.cmavc.

org.onap.cps.ncmp.impl.cmnotificationsubscription.ncmp.

Producer

AsyncRestRequestResponseEventConsumer

Forwarded by

DmiAsyncRequestResponseEventConsumer

DataOperationEventConsumer

Forwarded by

DataOperationEventConsumer

LcmEventsService(calls Events publisher)

new: call it producer

CmAvcEventPublisher

new: call it

inventoryEventProducer

Forwarded by

CmAvcEventConsumer

NcmpOutEventProducer

<TBD>Producer

CPS → Client Apps

event #

3

topic name

cps-data-updated-events

topic env

CPS_CHANGE_EVENT_TOPIC

topic yaml

app.cps.data-updated.topic

event name

CPS Data AVC (Other DS)

schema id

urn:cps:org.onap.cps:data-updated-event-schema:1.0.0

schema folder

/schemas/cps.dataupdated/

schema file name

cps-data-updated-event-schema-1.0.0.json

Producer

org.onap.cps.events.CpsDataUpdateEventsService

DME → NCMP

event #

7

topic name

subscription

topic env

CM_SUBSCRIPTION_NCMP_IN_TOPIC

topic yaml

app.ncmp.avc.cm-subscription-ncmp-in

event name

Subscription Notification

schema id

urn:cps:org.onap.cps.ncmp.events:cm-notification-subscription-ncmp-in-event:1.0.0

schema folder

schemas/ncmp/avc/

schema file name

ncmp-in-event-schema-1.0.0.json

Consumer

org.onap.cps.ncmp.impl.cmnotificationsubscription.ncmp.NcmpInEventConsumer

NCMP → DMI(s)

event #

7(b)

topic name

ncmp-dmi-cm-avc-subscription

topic env

CM_SUBSCRIPTION_DMI_IN_TOPIC

topic yaml

app.ncmp.avc.cm-subscription-dmi-in

event name

Subscription Notification Event?

schema id

urn:cps:org.onap.cps.ncmp.events:cm-notification-subscription-dmi-in-event-schema:1.0.0

schema folder

schemas/ncmp/avc/

schema file name

dmi-in-event-schema-1.0.0.json

Consumer

org.onap.cps.ncmp.impl.cmnotificationsubscription.dmi.DmiInEventProducer

DMI(s) → NCMP

event #

1(a)

1(c)

7(c)

11

13(a)

topic name

ncmp-async-m2m

ncmp-async-m2m

dmi-ncmp-cm-avc-subscription

dmi-device-heartbeat

dmi-cm-events

topic env

NCMP_ASYNC_M2M_TOPIC

NCMP_ASYNC_M2M_TOPIC

CM_SUBSCRIPTION_DMI_OUT_TOPIC

DMI_DEVICE_HEARTBEAT_TOPIC

DMI_CM_EVENTS_TOPIC

topic yaml

app.ncmp.async-m2m

app.ncmp.async-m2m

app.ncmp.avc.cm-subscription-dmi-out

app.dmi.device-heartbeat.topic

app.dmi.cm-events.topic

event name

NCMP-Async Event

DmiAsyncRequestResponseEvent

NCMP-Async Event

DataOperationEvent

Subscription Notification Event?

TrustLevel

CM Data Change

schema id

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

urn:cps:org.onap.cps.ncmp.events.async:data-operation-event-schema:1.0.0

urn:cps:org.onap.cps.ncmp.events:cm-notification-subscription-dmi-out-event-schema:1.0.0

urn:cps:org.onap.cps.ncmp.events:device-trust-level-event-schema:1.0.0

urn:cps:org.onap.cps.ncmp.events:avc-event-schema:1.0.0

schema folder

schemas/

schemas/async/

schemas/ncmp/avc/

schemas/dmi/device-heartbeat/

/schemas/dmi/cm-events/

schema file name

dmi-async-request-response-event-schema-v1.json

data-operation-event-schema-1.0.0.json

dmi-out-event-schema-1.0.0.json

device-trust-level-event-schema-1.0.0.json

avc-event-schema-1.0.0.json

*event is consumed as is

Consumer

org.onap.cps.ncmp.impl.data.async.AsyncRestRequestResponseEventConsumer

org.onap.cps.ncmp.impl.data.async.DataOperationEventConsumer (consumes and forwards)

org.onap.cps.ncmp.impl.cmnotificationsubscription.dmi.DmiOutEventConsumer

org.onap.cps.ncmp.impl.inventory.trustlevel.DeviceTrustLevelMessageConsumer

org.onap.cps.ncmp.impl.cmnotificationsubscription.cmavc.CmAvcEventConsumer

**Old diagram
Old Component DiagramImage Added