Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Algorithm for CM Subscription Delete ( TBD )  

  1. Capture Incoming subscriptionId from the client.
  2. Query the existing subscriptions we are tracking using the subscriptionId we got from the Cm Subscription Delete request.
  3. Populate the cmSubscriptionCache with the relevant details ( this will be later used to send the response and manage the subscription ) using the above query we did.
  4. Now check if the details we have are ALL the last subscribers or not.
    1. if all are NOT the last subscribers then we can right away delete it from the DB and send back the response to the client without sending any request to the DMI.
    2. if we have mixed records then we need to make a call to the DMI for the "last lights out" to get Acceptance from DMI.DMI 
  5. if DMI accepts it , then whatever we have in the cache can be used to DELETE the rows from the DB ( similar to what we did for create )
  6. Once the rows are deleted then we can send back the response to the client and clear up the cache ( for ACCEPTED/REJECTED )

...

  1. DME to NCMP Cm Subscription Delete Request


    Name

    Parent

    Type

    Example

    Mandatory ?

    Notes

    1idheaderString
    Y
    2versionheaderString 1.0Y
    3

    source

    headerStringDMEY
    4

    type

    headerStringsubscriptionDeleteRequestY
    5

    dataschema

    headerURIorg.onap.ncmp.cm.subscription:1.0.0Y
    6

    data


    Object
    Y
    7

    subscriptionId

    dataStringcm-subscription-001Y
    8

    predicates

    dataObject
    N


    Example

    Code Block
    titleDME to NCMP Cm Subscription Delete Request
    linenumberstrue
    collapsetrue
    id : random-UUID
    version : "1.0"
    source : "DME"
    type : "subscriptionDeleteRequest",
    dataschema : org.onap.ncmp.cm.subscription:1.0.0  {
      "data": {
        "subscriptionId": "unique subscription id" // mandatory
    }



  2. NCMP to DMI-Plugin Subscription Request


    Name

    Parent

    Type

    Example

    Mandatory ?

    Notes

    1idheaderString
    Y
    2versionheaderString 1.0Y
    3

    source

    headerStringDMEY
    4

    type

    headerStringsubscriptionDeleteRequestY
    5

    dataschema

    headerURIorg.onap.ncmp.dmi.cm.subscription:1.0.0Y
    6

    correlationid

    headerStringsubscriptionId#dmiPluginNameYConcatenation of subscriptionId and dmi plugin name
    7

    data


    Object
    Y
    8

    cmHandles

    dataArray
    Y
    9

    cmhandleId

    cmHandlesString
    Y
    10

    privateProperties

    cmHandlesMap
    N
    11

    predicates

    dataArray
    N
    12

    targetFilter

    predicatesArray of String
    Ylist of cm handle ids
    13

    scopeFilter

    predicatesObject
    N
    14

    datastore

    scopeFilterString
    Yncmp-datastore:passthrough-operational OR ncmp-datastore:passthrough-running 
    15

    xpathFilter

    scopeFilterArray of String
    Y


    Example

    Code Block
    titleNCMP to DMI-Plugin Subscription Request
    linenumberstrue
    collapsetrue
    id : random UUID
    version : 1.0
    source : "NCMP"
    type : "subscriptionDeleteRequest"
    dataschema : org.onap.ncmp.dmi.cm.subscription:1.0.0
    correlationId ( concatenation of subscriptionId and dmi-plugin-name with a separator)
     
    {
      "data": {
        "cmhandles" : [ // mandatory
        {
            "cmHandleId": "cmhandle1",
            "private-properties": {...}
        },
        {
            "cmHandleId": "cmhandle2",
            "private-properties": {...}
        },
        {
            "cmHandleId": "cmhandle3",
            "private-properties": {...}
        }
        ]
        "predicates": [
        {
            “targetFilter” :  [“cmHandle1”, “cmHandle2”, "cmhandle3"], // mandatory
            "scopeFilter" : {
               "datastore": “ncmp-datastore:passthrough-operational or ncmp-datastore:passthrough-running", // optional. default is passthrough-operational
               "xpath-filter": list of valid xpaths  // mandatory
          }
        },  
        {
            “targetFilter” :  [“cmHandle1”, “cmHandle2”, "cmhandle3"],
            "scopeFilter" : {
               "datastore": “ncmp-datastore:passthrough-operational or ncmp-datastore:passthrough-running", // optional. default is passthrough-operational
               "xpath-filter": list of valid xpaths  *
          }
        }
      ]
    }



  3. DMI-Plugin to NCMP Cm Subscription Delete Response


    Name

    Parent

    Type

    Example

    Mandatory ?

    Notes

    1idheaderString
    Y
    2versionheaderString 1.0Y
    3

    source

    headerStringDMEY
    4

    type

    headerStringsubscriptionDeleteResponseY
    5

    dataschema

    headerURIorg.onap.ncmp.dmi.cm.subscription:1.0.0Y
    6

    correlationid

    headerStringsubscriptionId#dmiPluginNameYConcatenation of subscriptionId and dmi plugin name
    7

    data


    Object
    Y
    8

    statusCode

    dataString
    Y1 - Accept the subscription request
    104 - Reject the subscription request
    9

    statusMessage

    dataString
    Y

    ACCEPTED

    REJECTED


    Example

    Code Block
    titleDMI-Plugin to NCMP Cm Subscription Delete Response
    linenumberstrue
    collapsetrue
    id : random UUID
    version : "1.0"
    source : <dmi-plugin-name>
    type : "subcriptionDeleteResponse"
    dataschema : org.onap.ncmp.dmi.cm.subscription:1.0.0
    correlationid : ( concatenation of subscriptionId and dmi-plugin-name with a separator)
    {
    "data" : {
       "statusCode": "1/104",  // mandatory
       "statusMessage" : "ACCEPTED/REJECTED" // mandatory
     }
    }



  4. NCMP to DME Cm Subscription Delete Response


    Name

    Parent

    Type

    Example

    Mandatory ?

    Notes

    1idheaderString
    Y
    2versionheaderString 1.0Y
    3

    source

    headerStringDMEY
    4

    type

    headerStringsubscriptionDeleteResponseY
    5

    dataschema

    headerURIorg.onap.ncmp.cm.subscription:1.0.0Y
    6

    correlationid

    headerStringsubscriptionIdY
    7

    data


    Object
    Y
    8

    subscriptionId

    dataString
    Y
    9

    acceptedTargets

    dataArray of String
    N
    10

    rejectedTargets

    dataArray of String
    N
    11

    pendingTargets

    dataArray of String
    N


    Example

    Code Block
    titleNCMP to DME Cm Subscription Delete Response
    linenumberstrue
    collapsetrue
    id : random UUID
    version : "1.0"
    source : "NCMP"
    type : "subcriptionDeleteResponse",
    dataschema : org.onap.ncmp.cm.subscription:1.0.0,
    correlationid : <subscriptionId> {
      "data": {
            "subscriptionId": "sample-subscription-id", // mandatory
            "acceptedTargets" : ["ch-1", ...], // optional
            "rejectedTargets" : ["ch-1", ...], // optional
            "pendingTargets" : ["ch-1", ...],  // optional
      }
    }




...