Create 'bulk' version for org.onap.cps.ncmp.rest.controller.NetworkCmProxyController#getResourceDataForCmHandle to support multiple cm-handles (~ multiple anchors in in CPS-Core)
References
CPS-1515 - Spike: Support multiple CM-Handles for NCMP Get Operation
Requirements
Functional
Interface | Requirement | Addtional Information | |
---|---|---|---|
REST NCMP-xx | Support batch read operation using an asynchronous response to client specified topic | payload includes list of cm handle ids | |
REST DMY-yy | Support batch read operation using an asynchronous response to client specified topic | payload includes list of (associated for this plugin) cm handles ids with their public properties | |
Error handling
Error Scenario | Expected behavior | |
---|---|---|
DMI Not respond to initial synchronous request with normal HTTTP timeout | Special Error message send to client topic detailing cm-handles |
Capabilities
Parameter | Expectation | Notes |
---|---|---|
Response Time 1 request | <2 seconds |
|
Batch-size | 200-300 cm handles | No hardcoded limit |
Response payload size | ?? KB | Performance test for cabilitie should be tested with this average response size |
Environment |
Out-of-scope
- support for multiple resource identifies in one batch operation
- cache data: only passthrough datastores will be supported (see decision #2)
Assumptions
# | Assumption | Notes |
---|---|---|
1 | "fields" and "scope" are proprietary options or not in the scope of this analysis. | agreed with kieran mccarthy , these are optional parameters (name-value pairs) not interpreted by NCMP but can be interpreted by proprietary plugins |
2 | same xpath (resourceIdentifierInQuery) for all cm handles or different for each cm handle | agreed with kieran mccarthy , if different resources are required on the same cm-handle the client wil send another (batch) request |
Issues & Decisions
# | Issue | Notes | Decision |
---|---|---|---|
1 | Which operation(s) need support for multiple cm handles? |
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 ? | agreed with kieran mccarthy all passthrough datastores will be supported Not implemented (yet) response, for other datastores |
3 | URL 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) | agreed with kieran mccarthy |
4 | keep 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 |
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 |
7 | Should 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 |
8 | Handle non responding dmi-plugin | Agreed with kieran mccarthy | |
9 | Should (can) NCMP check if 'MyTopic' specified by client exist | ||
10 | Overlap with Deutsche Telekom | Sourabh Sourabh discussed Lee Anjella Macabuhay who confirmed there s no overlap | TBD |
<Note. use green for closed issues, yellow for important ones if needed>
Implementation
Bulk Request Message Flow
Message Flow details
Flow Step | Short description | Message Details | Notes |
---|---|---|---|
1 | Bulk Get Request | Define new get operation "getResourceDataForCmHandles" into ncmp.yml | |
2 | Ack Client Request | ||
3 | DMI Bulk Request | The DMI PLugin should eb told the client topic so that NCMP does have to 'remember' to relation between request id and client topic! | |
4 | Ack Client Request | ||
5 | Kafka Messages from DMI to NCMP | ||
6 | Kafka Message(s) from NCMP to Client | ||
7 | Alternative for 4/5 → Non responding DMI. NCMP will have to create error message detailing cm-handles | See decision # 8 |