1 | Bulk Get Request |
Code Block |
---|
language | bash |
---|
title | NCMP batch endpoint |
---|
collapse | true |
---|
| curl --location 'http: //localhost:8080/ncmp/v1/data?topic=my-topic-name' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic Y3BzdXNlcjpjcHNyMGNrcyE=' \
--data '{
"operations": [
{
"operation": "read",
"operationId": "12",
"datastore": "ncmp-datastore:passthrough-operational",
"options": "(fields=schemas/schema)some option",
"resourceIdentifier": "parent/child",
"targetIds": [
"836bb62201f34a7aa056a47bd95a81ed",
"202acb75b4a54e43bb1ff8c0c17a8e08"
]
},
{
"operation": "read",
"operationId": "14",
"datastore": "ncmp-datastore:passthrough-running",
"targetIds": [
"ec2e9495679a43c58659c07d87025e72",
"0df4d39af6514d99b816758148389cfd"
]
}
]
}' |
| Define new get operation "getResourceDataForCmHandles" into ncmp.yml |
2 | Ack client Request |
Code Block |
---|
language | bash |
---|
title | NCMP batch endpoint response (202->Accepted) |
---|
collapse | true |
---|
| {
"requestId": "4753fc1f-7de2-449a-b306-a6204b5370b3"
} |
|
|
3 | DMI Bulk Request |
Code Block |
---|
language | bash |
---|
title | DMI service batch endpoint |
---|
collapse | true |
---|
| DMI Service 1 (POST): http://172.26.202.25:8783/dmi/v1/data?topic=my-topic-name&requestId=4753fc1f-7de2-449a-b306-a6204b5370b3 ->
[
{
"operationType": "read",
"operationId": "14",
"datastore": "ncmp-datastore:passthrough-running",
"cmHandles": [
{
"id": "ec2e9495679a43c58659c07d87025e72",
"cmHandleProperties": {
"neType": "RadioNode"
}
},
{
"id": "0df4d39af6514d99b816758148389cfd",
"cmHandleProperties": {
"neType": "RadioNode"
}
}
]
}
]
DMI Service 2 (POST) : http://172.26.202.26:8783/dmi/v1/data?topic=my-topic-name&requestId=4753fc1f-7de2-449a-b306-a6204b5370b3 ->
[
{
"operationType": "read",
"operationId": "12",
"datastore": "ncmp-datastore:passthrough-operational",
"options": "(fields=schemas/schema)some option",
"resourceIdentifier": "parent/child",
"cmHandles": [
{
"id": "836bb62201f34a7aa056a47bd95a81ed",
"cmHandleProperties": {
"neType": "RadioNode"
}
},
{
"id": "202acb75b4a54e43bb1ff8c0c17a8e08",
"cmHandleProperties": {
"neType": "RadioNode"
}
}
]
}
] |
|
|
4 | Ack NCMP Request |
Code Block |
---|
language | java |
---|
title | Response 202 |
---|
collapse | true |
---|
| |
| 202 is non-committal, meaning that there is no way for the HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing. |
5 | Kafka Messages from DMI to NCMP |
Code Block |
---|
title | Batch Event Payload Schema |
---|
collapse | true |
---|
| {
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "urn:cps:org.onap.cps.ncmp.events.async:batch-event-schema:1.0.0",
"$ref": "#/definitions/BatchDataResponseEvent",
"definitions": {
"BatchDataResponseEvent": {
"description": "The payload of batch event.",
"type": "object",
"javaType" : "org.onap.cps.ncmp.events.async.v1.BatchEvent",
"properties": {
"event": {
"description": "The content of Batch event.",
"type": "object",
"existingJavaType": "java.lang.Object",
"additionalProperties": false
}
},
"required": [
"event"
],
"additionalProperties": false
}
}
} |
Code Block |
---|
title | Batch Event Payload |
---|
collapse | true |
---|
| {
"event": {
"payload": "response of batch cm handles"
}
} |
|
|
6 | Kafka Message(s) from NCMP to Client Table
|
Code Block |
---|
title | Batch Event Payload |
---|
collapse | true |
---|
| {
"event": {
"payload": "response of batch cm handles"
}
} |
| Single response format for all scenarios bot positive and error, just using optional fields instead |
7 | Error for 4/5 → Non responding DMI, non existing CM Handles or any other error. NCMP will have to create error message detailing all cm-handle ids affect by that error. |
Code Block |
---|
title | Non responding DMI-plugin |
---|
collapse | true |
---|
| {
"timestamp":"2023-03-01T23:00:00.345-0400",
"requestId":123,
"error": "<error-message>",
"Cmhandles":["cm-1",...,"cm-n"]
} |
| Single response format for all scenarios bot positive and error, just using optional fields instead See decision # 8 |