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

Interface

Requirement

Additional Information

Signoff

1

CPS-E-05e

NCMP will define (and publish) additional error information details to be implemented by DMI plugins
NCMP shall forward any such details where applicable





Characteristics

No specific characteristics but obviously the additional error information should not (significantly) impact existing throughput negatively.

Out-of-scope

  1. context-type:application/problem+json. As per decision #1 this is no longer required

Issues & Decisions

Issue

Notes

Decision

Issue

Notes

Decision

1

1

Use of context-type:application/problem+json 

@Toine Siebelink raised several concerns:

  1. when is a response exactly a 'problem'. Not clear for partial error-scenarios or answers like 'rejected' 

  2. context-type is simply the WRONG field to say anything about the status of the content it should only define formatting. 

Oct 18, 2023  @kieran mccarthy agreed during weekly stakeholder meeting will NOT be required for events (or legacy API call).
It might be used in the future 

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) 

  1. Async responses from (bulk) dataOperations 

  2. Async response from CM Data Notification Subscriptions

  3. Existing synchronous data requests

  4. (initial) Registration request responses



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/
Optional

Description

Format

(example) Value

Element

Name

Parent

Type

Mandatory/
Optional

Description

Format

(example) Value

1

Header

id



String

Mandatory

random id for cloud event header. 

UUID



2

source



String

Mandatory

source of information.
ncmp or dmi

[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.
If success contains a single element in the list.
For errors it can contain one or more id.





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