You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
« Previous
Version 25
Next »
References
CPS-1616
-
Getting issue details...
STATUS
Create Subscription CM Event
CPS-1776
-
Getting issue details...
STATUS
Requirements
Functional
# | Interface | Requirement | Additional Information |
---|
1 | CPS-E-08 | Event from clients to delete an ongoing subscription with the dmi's responsible for managing the underlying devices. |
|
Error Handling
# | Error Scenario | Expected behavior |
---|
Capabilities
# | Parameter | Expectation | Notes |
---|
Out-of-scope
- Working with wildcards and subscription update which will be taken care by a separate epic.
- Subscription create ( done as part of a different story )
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 so that they are able to decide that how to delete the ongoing subscription. | - subscription name + client id
- + cmhandle ids?
- + cmhandle properties?
- + datastore?
|
|
3 | The subscription delete request should be able to retry and make sure the subscriptions are deleted from the respective DMIs managing the devices. | kieran mccarthy The agenda for the next meeting. We can decide then. More on the "DELETING" stage ( if we want to have it ) |
|
Overview
- We receive an event of type : subscriptionDeleted from the client ( DME ) containing the subscription clientId and subscription name along with datastore and dataCategory details ( DMEtoNCMP )
- 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 (DME). ( Delete Subscription CM Event )
Subscription Delete Sequence Diagram

DME to NCMP
Subscription Delete Event
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" : {
"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
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":{
"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
Produced by DMI Plugins and Consumed by NCMP
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 DME
Produced by NCMP to send it to the Client-Apps
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": {
“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"
|