Versions Compared

Key

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

...

#PersonApproach
1

[Relates to point 3 from high-level steps]

It would be good to have async implementation only dependent on NCMP. So that it does not break or work with only few DMI plugins. 
I think a DMI plugin independent async flow would be like 
1. Once request is received, check if  dmi plugin exist. If exists, generate request uuid, send the message to the Kafka topic (or store it in DB), and send an accepted response back to client.
2. NCMP will listen to the same topic or read from the DB. Process it by calling appropriate DMI Plugins synchronously. After it receives the response back, it sends to to Kafka topic provided in the input by user. 

In this implementation, we are not dependent on the DMI implementation. 
We do need persistence for storing async request. It can be a stored in DB or Kafka, it does not matter as long as we can read it in the same order. 

The main points are
1. No dependency on the DMI for async behavior

2. No async request get lost because of pod restart or JVM crash. 


Proposed Message Format

...

Success Scenario


Code Block
languageyml
titleSuccess ScenarioDMI Event sent to NCMP
collapsetrue
DMI Event sent to NCMP
------------------------------- 

{

  "eventId"            : "9999",                                           # some generic event uuid generated by DMI Plugin
  “eventCorrelationId” : “request-009995”,                                 # for event correlation - acts as the request Id when
                                                                           # eventType=org.onap.ncmp.async-request-response-event
  "eventTime"          : "2021-11-16T16:42:25-04:00",
  "eventSource"        : "org.onap.ncmp",                                  # ??? Is this needed?
  "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
  ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events
  “eventTarget”        : “topic:client-application-topic”          ”                      # indicates where to route the event
                                                                           # - ‘topic’ is default target type


  "event": {
     “response-data-schema” : “org.onap.cps.yang-patch-json:v1”,
     “response-status” : “SUCCESS”,
     “response-code”                        # - ‘topic’ is default target type



  "event": {
     “response-data-schema” : “org.onap.cps.yang-patch-json:v1”,
     “response-status” : “SUCCESS”,
     “response-code”   : : “201”,
     “response-data” : {
            …
           <response-data-payload>
           …
     }
     }
}


Code Block
languageyml
titleNCMP Event forwarded to Client topic (in eventTarget)
collapsetrue
           <response-data-payload>
           …
     }
     }
}



NCMP Event forwarded to Client topic (in eventTarget)
----------------------------------------------------------------------

{

  "eventId"            : "33001",                                          # some generic event uuid generated by NCMP
  “eventCorrelationId” : “request-009995”,                                 # for event correlation - acts as the request Id when
                                                                           # eventType=org.onap.ncmp.async-request-response-event
  "eventTime"          : "2015-11-16T16:42:26-05:06",
  "eventSource"        : "org.onap.ncmp",                                  # The source of the event
  "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
  ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events

  "eventOrigin"        : {

        "eventId"            : "00001",                                          # some generic event uuid generated by DMI Plugin
        "eventTime"          : "2021-11-16T16:42:25-04:00",
        “eventCorrelationId” : “request-009995”,     
        "eventSource"        : "org.onap.dmi",                                   # ??? Is this needed?
        "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
        ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events
        “eventTarget”        : “topic:client-application-topic”
   }


  "event": {
     “response-data-schema” : “org.onap.cps.yang-patch-json:v1”,
     “response-status”      : “SUCCESS”,
     “response-code”        : “201”,
     “response-data”        : {
            …
           <response-data-payload>
           …
     }
  }
}


Failure Scenario


Code Block
languageyml
titleFailure Scenario
collapsetrue
DMI Event sent to NCMP
collapsetrue
DMI Event sent to NCMP
-------------------------------   

{

  "eventId"            : "9999",                                           # some generic event uuid generated by DMI Plugin
  “eventCorrelationId” : “request-009995”,                                 # for event correlation - acts as the request Id when
                                                                           # eventType=org.onap.ncmp.async-request-response-event
  "eventTime"          : "2021-11-16T16:42:25-04:00",
  "eventSource"        : "org.onap.ncmp",                                  # ??? Is this needed?
  "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
  ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events
  “eventTarget”        : “topic:client-application-topic”          ”       # indicates where to route the event
                                                                           # - ‘topic’ is default target type                                                             "event": {
     “response-data-schema” : “org.onap.cps.generic-error:v1”,
     “response-status”      : “FAILURE”,
     “response-code”        : “404”,
     “response-data”        : {
            …
           <response-data-payload-as-org.onap.ncmp.generic-error:v1>
           …
     }
   }
}


Code Block
languageyml
titleNCMP Event forwarded to Client topic (defined in eventTarget)
collapsetrue



NCMP Event forwarded to Client topic (defined in eventTarget)
----------------------------------------------------------------------

{

  "eventId"            : "33001",                                          # some generic event uuid generated by NCMP
  “eventCorrelationId” : “request-009995”,                                 # for event correlation - acts as the request Id when
                                                                           # eventType=org.onap.ncmp.async-request-response-event
  "eventTime"          : "2015-11-16T16:42:26-05:06",
  "eventSource"        : "org.onap.ncmp",                                  # The source of the event
  "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
  ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events

  "eventOrigin"        : {

        "eventId"            : "00001",                                          # some generic event uuid generated by DMI Plugin
        "eventTime"          : "2021-11-16T16:42:25-04:00",
        “eventCorrelationId” : “request-009995”,     
        "eventSource"        : "org.onap.dmi",                                   # ??? Is this needed?
        "eventType"          : "org.onap.ncmp.async-request-response-event",     # event type for async request response events
        ”eventSchema”        : “org.onap.ncmp:async-request-response-event:v1",  # event schema for async request response events
        “eventTarget”        : “topic:client-application-topic”
   }


  "event": {
     “response-data-schema” : “org.onap.cps.generic-error:v1”,
     “response-status”      : “FAILURE”,
     “response-code”        : “404”,
     “response-data”        : {
            …
           <response-data-payload-as-org.onap.ncmp.generic-error:v1>
           …
     }
  }
}

...