CPS-1865: Common Error Reporting with Additional Details
References
CPS-1865: Error Handling for various cmhandle operations. Open
Requirements
Functional
Interface | Requirement | Additional Information | Signoff | |
---|---|---|---|---|
1 | CPS-E-05e | NCMP will define (and publish) additional error information details to be implemented by DMI plugins |
Characteristics
No specific characteristics but obviously the additional error information should not (significantly) impact existing throughput negatively.
Out-of-scope
context-type:application/problem+json. As per decision #1 this is no longer required
Issues & Decisions
Issue | Notes | Decision | ||
---|---|---|---|---|
1 | 1 | Use of context-type:application/problem+json | @Toine Siebelink raised several concerns:
| Oct 18, 2023 @kieran mccarthy agreed during weekly stakeholder meeting will NOT be required for events (or legacy API call). |
2 | Scope | Scope need to be clearly defined. it could cover both existing and new (ongoing impl) interfaces I suggest we build it up and this epic can continue in future releases. With different priorities for different user stories. Candidates (not a compleet list)
| ||
3 | 3 | 'other' ie. undefined keys v. predefined(and documented) keys | if 'other' is a key-value pair with any name the schema cannot be defined to have at least one predefined key-value in the map (retryAfter). It has to be either free for all map entries OR a defined structure! At best we can desribe the map if it is NOT defined in the schema but then we need to hardcode validation! | Oct 24, 2023 @Csaba Kocsis retryAfter is NOT an entry in the 'other' map but a stand-alone property under correctiveAction |
Impl. Proposal
Additional Error Info Structure
Rows 1-15 describe the exiting data structure
Rows 16-20 are the proposed additional (error) fields
Element | Name | Parent | Type | Mandatory/ | Description | Format | (example) Value | |
---|---|---|---|---|---|---|---|---|
1 | Header | id | String | Mandatory | random id for cloud event header. | UUID | ||
2 | source | String | Mandatory | source of information. | [ncmp | dmi ] | ncmp | ||
3 | specversion | String | Mandatory | cloud event version spec | fixed value | 1.0 | ||
4 | type | String | Mandatory | type of event | fixed value | org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent | ||
5 | dataschema | String | Mandatory | data schema | fixed value | urn:cps:org.onap.cps.ncmp.events.async:data-operation-event-schema:1.0.0 | ||
6 | correlationid | String | Mandatory | ncmp generated request if. | UUID | |||
7 | Payload | data | Object | Mandatory | The actual data payload. Details will be provided below. | |||
8 | responses | data | Object[] | Mandatory | An array of batch responses which contains both success and failure | |||
9 | operationId | responses[i] | String | Mandatory | Used to distinguish multiple operations using same handle ids | |||
10 | ids | responses[i] | String[] | Mandatory | Id's of the cmhandles. | |||
11 | resourceIdentifier | responses[i] | String | Optional | Optional 'resource path' provided by the DMI Plugin | Depends on DMI Plugin Impl. | ||
12 | options | responses[i] | Map<String,Object> | Optional | Additional 'options' provided by the DMI Plugin | Depends on DMI Plugin Impl. | ||
13 | statusCode | responses[i] | Integer | Mandatory | ||||
14 | statusMessage | responses[i] | String | Mandatory | ||||
15 | result | responses[i] | Object | Optional | application/yang-data+json | |||
16 | 16 | errorInfo | responses[i] | Object | Optional | additional error information for debug and retry purposes, present in case of failure error code | <name> | |
17 | 17 | message | errorInfo | String | Optional | message coming from EMS or node | ||
18 | 18 | correctiveAction | errorInfo | Object | Optional | key-value pairs of possible recourse action the client can take in case of error | ||
19 | 19 | retryAfter | correctiveAction | Integer | Optional | seconds to wait before retry | 60 | |
20 | 20 | other | correctiveAction | Map<String,object> | Optional | non-specific key-value pairs driven by ems or node |