You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
« Previous
Version 16
Next »
References
CPS-1616
-
Getting issue details...
STATUS
Notifications and Subscriptions Overview
CPS-1776
-
Getting issue details...
STATUS
Requirements
Functional
# | Interface | Requirement | Additional Information |
---|
|
|
|
|
|
|
|
|
Error Handling
# | Error Scenario | Expected behavior |
---|
|
|
|
Capabilities
# | Parameter | Expectation | Notes |
---|
1 | Response Time 1 Batch request | <2 seconds (average) | - Async response available on client topic
- No delay in DMI PLugin (tested/measured using stub DMI Plugin)
|
---|
2 | Batch-size | 200 cm handles | No hardcoded limit |
---|
3 | Response payload size | ~2 KB per cm handles | Performance test for capability should be tested with this average response size |
---|
4 | Supported # DMI PLugins | 10 | This might effect processing times |
---|
5 | Test Environment |
|
|
---|
6 | Concurrent request | 12 | 12 clients requests toward 1 NCMP simultaneously |
---|
7 | Request Frequency | 100 request/min | Should not affect performance, does not need to be tested |
---|
Out-of-scope
Assumptions
# | Issue | Notes | Decisions |
---|
1 | The whole subscription event is deleted |
|
|
Issues & Decisions
# | Issue | Notes | Decisions |
---|
1 | Delete the subscription from the database? | - When do we actually delete the subscription from CPS DB ? We plan to do it when we receive response from the DMI plugins and the underlying subscriptions from the devices are deleted.
|
|
2 | What do we need to send to the DMI Plugin | - subscription name + client id
- + cmhandle ids?
- + cmhandle properties?
- + datastore?
|
|
Overview
- We receive an event of type : subscriptionDeleted from the client ( EDM ) containing the subscription clientId and subscription name along with datastore and dataCategory details ( Delete Subscription CM Event )
- We check in NCMP that we have an ongoing subscription using clientId and subscriptionName.
- If we have ongoing subscription , we forward the event to dmi-plugins so that the changes are applied in the devices managed by dmi-plugin as well. ( Delete Subscription CM Event )
- Now if the dmi-plugins have applied the request then we get an event back from dmi-plugin and NCMP will process that event and based on that it will delete the ongoing subscription request from the database itself. If the response from DMI plugins is accepted ( i.e it can delete the subscriptions from the underlying devices and no subscription delete request are in PENDING or REJECTED state )Then we delete the subscriptions from the DB as well. ( Delete Subscription CM Event )
- After processing the received event from DMI , NCMP will send the final event to the client (EDM). ( Delete Subscription CM Event )
Subscription Delete Sequence Diagram

EDM to NCMP
Subscription Delete Event (Schema 1)
topic subscription
id generated by client
source "SCO-9989752"
specversion "1.0"
type subscriptionDeleted
time
dataschema org.onap.ncmp.cm.subscription:1.0.0
data
{
"data" : {
"subscription" : {
"clientID" : "SCO-9989752" ,
"name" : "cm-subscription-001"
},
"dataType" : {
"dataspace" : "ALL" ,
"dataCategory" : "CM" ,
"dataProvider" : "CM-SERVICE"
},
"predicates":{
"datastore":"passthrough-running"
}
}
"javaType" : "org.onap.cps.ncmp.events.avcsubscription1_0_0.client_to_ncmp"
|
NCMP to DMI-Plugins

Input Schema (Schema 3) - Produced by NCMP and Consumed by DMI Plugins
topic: ncmp-dmi-cm-avc-subscription-dminame1
id uuid
source "SCO-9989752"
specversion "1.0"
type subscriptionDeleted
time // ncmp will generate
dataschema org.onap.ncmp.dmi.cm.subscription:1.0.0
data
{
"data":{
"subscription":{
"clientID":"SCO-9989752",
"name":"cm-subscription-001",
"isTagged":false
},
"dataType":{
"dataspace":"ALL",
"dataCategory":"CM",
"dataProvider":"CM-SERVICE"
},
"predicates":{
"targets":[
{"id" : <cmhandleid>,
"additional-properties": ["shape":"circle"]},
{"id" : <cmhandleid>,
"additional-properties": ["shape":"triangle"]},
{"id" : <cmhandleid>,
"additional-properties": ["shape":"square"]}
],
"datastore":"passthrough-running",
"datastore-xpath-filter":"//_3gpp-nr-nrm-gnbdufunction:GNBDUFunction/_3gpp-nr-nrm-nrcelldu:NRCellDU/ | //_3gpp-nr-nrm-gnbcuupfunction:GNBCUUPFunction// | //_3gpp-nr-nrm-gnbcucpfunction:GNBCUCPFunction/_3gpp-nr-nrm-nrcelldu:NRCellCU// | //_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier//"
}
}
}
"javaType": "org.onap.cps.ncmp.events.avcsubscription1_0_0.ncmp_to_dmi"
|
DMI-Plugins to NCMP
Output Schema (Schema 4) - Produced by DMI Plugins
topic: dmi-ncmp-cm-avc-subscription
id uuid - generated by dmi-plugins
source <dmiName>
specversion "1.0"
type subscriptionDeletedStatus
time - generated by dmi
correlationid: <clientId>:<subscriptionName>
dataschema org.onap.ncmp.dmi.cm.subscription:1.0.0
data
{
"clientId":"SCO-9989752",
"subscriptionName":"cm-subscription-001",
"dmiName":"<dmiName>",
"subscriptionStatus":[
{
id : <cmhandleid>,
status : rejected | accepted | pending,
details : <some message> // only present for rejected
},
{...}
]
}
"javaType": "org.onap.cps.ncmp.events.avcsubscription1_0_0.dmi_to_ncmp"
|
Notes
- dmiName in Output Schema is populated from application.yml of DMI-plugin.
- DMI-plugin subscribes to the topic to consume Input Schema given in application.yml of DMI-plugin.
application.yml of DMI-Plugin
dmi:
service:
name: ${DMI_SERVICE_NAME:ncmp-dmi-plugin}
app:
dmi:
avc:
subscription-topic: ${DMI_CM_AVC_SUBSCRIPTION:ncmp-dmi-cm-avc-subscription-${dmi.service.name}}
|
NCMP to Client-Apps
Proposed outcome (Schema 5)
topic: subscription-response
id uuid - generated by NCMP
source <NCMP>
specversion "1.0"
type subscriptionDeletedStatus
time // NCMP would generate
correlationid: clientId:subscriptionName
dataschema org.onap.ncmp.cm.subscription:1.0.0
data
{
"data": {
“statusCode” : 207, # Some error code reflecting partial success. ** // To be discussed with the whole team
“statusMessage” : “Partially Applied Subscription”,
“additionalInfo” : {
“rejected” : [{
“details” : “faulty subscription format for target(s)”, // need to finalize the detailed message for grouping.
“targets” : [“cmhandle1”, “cmhandle2”, “cmhandle3”]
},
{
“details” : “faulty subscription format for target(s) - xyz”, // need to finalize the detailed message for grouping.
“targets” : [“cmhandle1”]
}
],
“pending” : {
“details” : “EMS/node connectivity issues, retrying”,
“targets” : [“cmhandle4”, “cmhandle5”, “cmhandle6”]
}
}
}
// we dont have to send the accepted cmhandle details.
** 202 could indicate complete failure –
"data": {
“statusCode” : 406, # Some error code reflecting complete rejection of the request
“statusMessage” : “Subscription rejected : Faulty Subscription Data”,
“additionalInfo” : {
“rejected” : {
“details” : “//NRxxCellDU is not a valid subscription type”
},
Have another for Pending CMHandles gone to accepted
"javaType": "org.onap.cps.ncmp.events.avcsubscription1_0_0.ncmp_to_client"
|