Versions Compared

Key

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

...

#

Issue

Notes 

Decision

1Which operation(s) need support for multiple cm handles?
  1. Get
  2. Create
  3. Update (Put)
  4. Patch
  5. Delete

if many what is the priority?

agreed with kieran mccarthy 

Only Get (read)

(in future other operations might be support batch option too)

2

Which datasources should be supported?

Do we need to support passthrough-only no-cached() data only ?
(maybe just start with that, support cached data bulk request later)

agreed with kieran mccarthy :

all passthrough datastores will be supported

Not implemented (yet) response, for non passthrough datastores 

3URL  pattern for NCMP bulk endpoints

Existing : /v1/ch/{cm-handle}/data/ds/{datastore-name}

CPS Proposed : /v1/batch/data/ds/{datastore-name}

      ( include cm handles into payload / body and leave datastore into url)

-----------------------------------------------------------------------------------------------------------------------

Meeting : kafka message schema & batch interface extension

POST http://localhost:8080/ncmp/v1/batch&topic=my-topic-name

{
              operations: [
                             {
                                           operation: read,
                                           datastore: "...",
                                           options: "...",
                                           resourceIdentifier: "...",
                                           cmhandleIds: [4, 6]
                             },
                             {
                                           operation: read,
                                           datastore: "...",
                                           options: "...",
                                           resourceIdentifier: "...",
                                           cmhandleIds: [1, 2, 3]
                             }
              ]
}

agreed with kieran mccarthy : Follow the existing interfaces as much as possible for consistency and efficiency

------------------------------------------------------------------------------------------------------------

4keep datastore, topic and optional parameters in the URL itself instead into body.

CPS prefers keep interface similar as single cm handle interface (consistency and cost)

Existing : ...&topic=topicParamInQuery

agreed with kieran mccarthy : Follow the existing interfaces as much as possible for consistency and efficiency

5

support in ONAP DMI-plugin


agreed with Toine Siebelink : ONAP plugin can respond with not implemented yet code,

6

Response always Async ie. topic is compulsory ?

Assume topic is compulsory (defined in OPenApi) → Response therefore wil be 400 if not supplied

Agreed with kieran mccarthy :

Topic is optional but system will respond with 'Not implemented (yet when not specified or blank

7Should NCMP Amalgamate Async responses from DMI-Plugin before forwarding ?step 6 in flow diagram

Agreed with kieran mccarthy : NCMP wil only forward to client topic no handling tracking or any responses or status of request

8Handle non responding dmi-plugin

Agreed with kieran mccarthy :
No response for 4b then send an error response to the topic given by client

9Should (can) NCMP check if 'MyTopic' specified by client existConsider Access Control too. For now NCMP can log error. Client is responsible for topic setup

Agreed with kieran mccarthy :
NCMP can log error when forward to 'client topic' Security not in scope (yet)

10How to handle non-existing CM-Handles (id)

Suggestions

  1. Silently ignore
  2. (initial) error response
    1. should we combine all errors in one message?

Agreed with kieran mccarthy :

Additional error (messages) response with all cm-handles that cannot be resolved, also a separate error message wil be sent for each failed DMI

11

Overlap/clash with Deutsche Telekom user story:

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1377
?!


discussed in weekly ONAP meeting the DT user story is affect CPS-Core interface (not NCMP) and the requirement is to execute a query over ALL cm-handles (cached  only?!) instead of a given list of cm-handles (~anchors)

12

Schema of bulk response


Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1556

1) Agreement required on the structure of the response.  Please see response structure below.
2) Does 'eventTime' field which holds the timestamp of the bulk response event,  required or can it be dropped?


Code Block
titleSchema of bulk response
collapsetrue
{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "urn:cps:org.onap.cps.ncmp.events:bulk-response-event-schema:v1",
  "$ref": "#/definitions/BulkResponseEvent",
  "definitions": {
    "BulkResponseEvent": {
      "description": "The payload for bulk response event.",
      "type": "object",
      "properties": {
        "eventId": {
          "description": "The unique id identifying the event generated by DMI for this bulk response event.",
          "type": "string"
        },
        "eventCorrelationId": {
          "description": "The request id passed by NCMP for this bulk response event.",
          "type": "string"
        },
        "eventTime": {
          "description": "The time of bulk response event. The expected format is 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.",
          "type": "string"
        },
        "eventType": {
          "description": "The type of bulk response event.",
          "type": "string"
        },
        "eventSchema": {
          "description": "The event schema for bulk response event.",
          "type": "string"
        },
        "eventSchemaVersion": {
          "description": "The event schema version for bulk response event.",
          "type": "string"
        },
        "event": {
        "$ref": "#/definitions/Event"
        }
      },
      "required": [
        "eventId",
        "eventCorrelationId",
        "eventTime",
        "eventType",
        "eventSchema",
        "eventSchemaVersion"
      ]
    },
    "Event": {
      "description": "The bulk response event content.",
      "type": "object",
      "existingJavaType": "java.lang.Object"
    }
  }
}


Code Block
titleSample bulk response
collapsetrue
{
  "eventId": "4cb32729-85e3-44d1-aa6e-c923b9b059a5",
  "eventCorrelationId": "68f15800-8ed4-4bae-9e53-27a9e03e1911",
  "eventTime": "2023-03-28T14:29:23.876+0000",
  "eventType": "org.onap.cps.ncmp.event.model.BulkResponseEvent",
  "eventSchema": "urn:cps:org.onap.cps.ncmp.event.model.BulkResponseEvent",
  "eventSchemaVersion": "v1",
  "event": {
    "payload": "response of batch cm handles"
  }
}



13

Schema for Bulk Response event forwarding to client specified  topic

CPS-1557 - NCMP : forward bulk response messages to client topic

Not keeping the 'eventTarget' which comes from the BulkResponseEvent.

Note:  Will consider  'eventTarget', If it finalized the schema from

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1556

Code Block
titleSchema of bulk response
collapsetrue
{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "urn:cps:org.onap.cps.ncmp.events:async-bulk-response-event-schema:v1",
  "$ref": "#/definitions/AsyncBulkResponseEvent",
  "definitions": {
    "AsyncBulkResponseEvent": {
      "description": "The payload for bulk response event.",
      "type": "object",
      "properties": {
        "eventId": {
          "description": "The unique id identifying the event generated by DMI for this bulk response event.",
          "type": "string"
        },
        "eventCorrelationId": {
          "description": "The request id passed by NCMP for this bulk response event.",
          "type": "string"
        },
        "eventTime": {
          "description": "The time of bulk response event. The expected format is 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.",
          "type": "string"
        },
        "eventType": {
          "description": "The type of bulk response event.",
          "type": "string"
        },
        "eventSchema": {
          "description": "The event schema for bulk response event.",
          "type": "string"
        },
        "eventSchemaVersion": {
          "description": "The event schema version for bulk response event.",
          "type": "string"
        },
        "event": {
        "$ref": "#/definitions/Event"
        }
      },
      "required": [
        "eventId",
        "eventCorrelationId",
        "eventTime",
        "eventType",
        "eventSchema",
        "eventSchemaVersion"
      ]
    },
    "Event": {
      "description": "The bulk response event content.",
      "type": "object",
      "existingJavaType": "java.lang.Object"
    }
  }
}



Code Block
titleSample bulk response
collapsetrue
{
  "eventId": "4cb32729-85e3-44d1-aa6e-c923b9b059a5",
  "eventCorrelationId": "68f15800-8ed4-4bae-9e53-27a9e03e1911",
  "eventTime": "2023-03-28T14:29:23.876+0000",
  "eventType": "org.onap.cps.ncmp.event.model.AysncBulkResponseEvent",
  "eventSchema": "urn:cps:org.onap.cps.ncmp.event.model.AysncBulkResponseEvent",
  "eventSchemaVersion": "v1",
  "event": {
    "payload": "response of batch cm handles"
  }
}

<Note. use green for closed issues, yellow for important ones if needed>

Implementation

Bulk Request Message Flow

Gliffy Diagram
macroId5966a68a-1641-430a-8c78-27c938f06e15
displayNameCm Handle Batch Message Flow
nameCm Handle Batch Interface Design
pagePin21

Message Flow details



14

How NCMP would  to forward response? (Response data : ref.  message flow #6)

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1556

    1. Do we need to send only one response containg all the requested cm handles ?
    2. Send single response for each cm handle?
    3. Single response message per dmi plugin?

<Note. use green for closed issues, yellow for important ones if needed>

Implementation

Bulk Request Message Flow

Gliffy Diagram
macroId5966a68a-1641-430a-8c78-27c938f06e15
displayNameCm Handle Batch Message Flow
nameCm Handle Batch Interface Design
pagePin21

Message Flow details

Flow Step

Short description

Message Details

Notes

1

Bulk Get Request


Code Block
title/v1/batch/data/ds/{datastore-name}
collapsetrue
body:
["cm-1",...,"cm-n"]


Code Block
titleExample CURL cmd : curl --location --request POST
collapsetrue
'http://

Flow Step

Short description

Message Details

Notes

1

Bulk Get Request

Code Block
title/v1/batch/data/ds/{datastore-name}
collapsetrue
body:
["cm-1",...,"cm-n"]
Code Block
titleExample CURL cmd : curl --location --request POST
collapsetrue
'http://localhost:8080/ncmp/v1/batch/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=parent/child%26options=(a=1,b=2)&topic=my-topic-name&options=(fields=schemas/schema)' \
--header 'Authorization: Basic Y3BzdXNlcjpjcHNyMGNrcyE=' \
--header 'Content-Type: application/json' \
--data '[ "40137a9771f84459affa795fa1d633ab", "f5a92ec7a7db4d6fbb0e0ce2803a86cc" ]'


Define new get operation "getResourceDataForCmHandles" into ncmp.yml

2Ack Client Request


Code Block
titleResponse 200
collapsetrue
{"requestId":"123"}



3DMI Bulk Request


Code Block
title/v1/ch/batch/data/ds/{datastore-name}&topic=topicParamInQuery
collapsetrue
body: {"Cmhandles":["cm-1",...,"cm-n"],"requestId":123}


The DMI PLugin should be told (included in request) the client topic so that NCMP does not have to 'remember' to relation between request id and client topic!



4Ack Client Request


Code Block
titleResponse 202
collapsetrue



5Kafka Messages from DMI to NCMP


Code Block
titleTopic: ncmp-async-m2m
collapsetrue
Message Details TBD



6Kafka Message(s) from NCMP to Client 
Table


Code Block
titleTopic: <client topic>
collapsetrue
Message Details TBD



7Alternative for 4/5 → Non responding DMI. NCMP will have to create error message detailing cm-handles
See decision # 8 and 9
8

Response message structure ? (Flow no. 5)

Non responding DMI-plugin 


Code Block
titleNon responding DMI-plugin 
collapsetrue
{
  "timestamp":"2023-03-01T23:00:00.345-0400", 
  "requestId":123,
  "error": "DMI Service Unavailable, {service-name}",
  "Cmhandles":["cm-1",...,"cm-n"]
  }



9

Response message structure ? (Flow no. 5)

Non existing cm handles


Code Block
titleNon existing cm handles
collapsetrue
{
	"timestamp":"2023-03-01T23:00:00.345-0400",
    "requestId":123,
	"error":"Cm-Handle not found",
	"Cmhandles":["cm-1",...,"cm-n"]
}



10Non Ready cm handles


Code Block
titleNon READY existing cm handles
collapsetrue
{
	"timestamp":"2023-03-01T23:00:00.345-0400",
    "requestId":123,
	"error":"Cm-Handle not in READY state.",
	"Cmhandles":["cm-1",...,"cm-n"]
}



11URL  pattern for DMI-Plugin bulk endpoints

Existing DMI endpoints are : 

/v1/ch/{cmHandle}/data/ds/{datastore-name}

datastore-name:

  1. ncmp-datastore:passthrough-operational
  2. ncmp-datastore:passthrough-running

 ...&topic=topicParamInQuery

CPS Proposed :

/v1/ch/batch/data/ds/{datastore-name}

 ...&topic=topicParamInQuery

cm handle ids and requestid into body

Proposed JIRAs :

endpoints

Existing DMI endpoints are : 

/v1/ch/{cmHandle}/data/ds/{datastore-name}


datastore-name:

  1. ncmp-datastore:passthrough-operational
  2. ncmp-datastore:passthrough-running

 ...&topic=topicParamInQuery


CPS Proposed :

/v1/ch/batch/data/ds/{datastore-name}

 ...&topic=topicParamInQuery

cm handle ids and requestid into body



Proposed JIRAs :

3ONAP Jira1555155681558
#ComponentDescriptionJIRAsEstimate
1DMI-PluginAccept  datastore name as param into URL 

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1550

5 Days
2NCMP Expose REST endpoint to accept collection of cm handles for GET operation (Passthrough only)

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1553

15 Days
3DMI-PluginExpose endpint for ONAP not impl. and Stub impl. for testing/demo

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1555

5 Days
4Stubbed DMI-PluginInclude code to send response messages to internal kafka topic with delay 
#ComponentDescriptionJIRAsEstimate
1DMI-PluginAccept  datastore name as param into URL 

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-15501556

5 10 Days
25NCMP Expose REST endpoint to accept collection of cm handles for GET operation (Passthrough only)Forward response messages to client given kafka topic

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-15531557

15 5 Days
6NCMP DMI-PluginExpose endpint for ONAP not impl. and Stub impl. for testing/demoHandle non-existing cm handles

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution

Jira
server

serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-

1583

5 Days
74Stubbed DMI-PluginInclude code to send response messages to internal kafka topic with delay NCMP Error handling for non-ready cm handle state

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-

1614

10 5 Days
58NCMP Forward response messages to client given kafka topicHandle non responding DMI-Plugin

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-15571558

5 Days
69NCMP NCMPNCMP: Update existing REST endpoint that accepts bulk request for GET operationHandle non-existing cm handles

Jira
Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1583

5 Days7NCMP Error handling for non-ready cm handle state

serverONAP Jiraresolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-16141535

5 DaysTBD
10NCMP MI-PluginHandle non responding DMI-Plugin : Update endpoint to accept bulk request

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-

1536

5 DaysTBD
911CSIT test for demo

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1560

5 Days

...