...
Description | Notes | Decision | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1 | Priority of async calls | In Istanbul, async calls are required only in pass-through cases. NCMP does not have to handle these requests | |||||||||
2 | Will we use the data node wrapper on GET rest operations? | Currently, we wrap the response of GET operations using the data node wrapper. | we should mainly support yang-data/json the default option for NCMP should be yang but we want to support both options - yang and the data node wrapper for pass through - yang data operational - data node | ||||||||
3 | In the URI will we distinguish between data and operations (RFC calls) as part of the path? | e.g. http://localhost:8080/ncmp/api/v1/data http://localhost:8080/ncmp/api/v1/operation | This only applies to pass-through yes, we will distinguish between data and operation | ||||||||
4 | Which query parameters will NCMP support? | Parent data resource identifier can handle any path using the same query parameter
| |||||||||
5 | Yml should include return types and examples of the payload |
| |||||||||
6 | camel case or dash in URI | We will use a dash for param names e.g. cm-handle (although it has since been agreed we use 'ch' in this particular case) | |||||||||
7 | Insert /resource-path in front of the resource path to prevent ambiguous paths | <OP>/ncmp/<v{v-number}>/ch/<cm-handle>/<data|operations|{ncmp-operation}>/ds/{datastore}/[rp:]{resource-path}?{query} | Optionally insert the resource path ('rp:') if it clashes with the current | ||||||||
8 | Granularity of update scenarios (and priority) |
| Priority is pass-through only so it depends on the RETSConf protocol that is supported. In Jakarta or if required by other projects more fine-grained 'operation' datastore update options can be implemented | ||||||||
9 | There is no automatic fallback option for datastore in release I | In future releases, we hope to have the automatic fallback option | The client will have the specify the datastore | ||||||||
10 | fields is a rest conf option, investigate is it fully supported by onap | Supported in pass-through for ONAP DMI plugin but depending on the support by the actual target. The intention is to increase support 'fields' in future requirements following RFC-8040 for operational datastore etc. | |||||||||
11 | Agree on URI syntax | Proposed syntax by CPS team <OP>/ncmp/<v{v-number}>/ch/<cm-handle>/<data|operations|{ncmp-operation}>/ds/{datastore}/[rp:]{resource-path}?{query} | review completed and proposed URI agreed | ||||||||
12 | will we combine query capabilities with update capabilities? | we have decided not to combine query capabilities with update capabilities |
RESTCONF/NETCONF relationship
...
# | Usecase | NCMP Datastore | Path | ?fields | ?topic | Query | Time frame |
---|---|---|---|---|---|---|---|
1 | Read | passthrough-running | RESTConf Path only | Implemented by SDNC/Node | Implemented by DMI Plugin | Not supported | Istanbul |
2 | Read | ncmp-datastores:operational | CPSPath only | TBD | TBD | Limited xpath functionality | Istanbul |
3 | Create | passthrough-running | RESTConf Path only | N/A | N/A | N/A | Istanbul |
4 | Create | ncmp-datastores:running | CPSPath only | N/A | N/A | N/A | > Istanbul |
5 | Delete | passthrough-running | RESTConf Path only | N/A | N/A | Not supported | Istanbul |
6 | Delete | ncmp-datastores:running | CPSPath only | N/A | N/A | Not supported | > Istanbul |
7 | Update | passthrough-running | RESTConf Path only | N/A | N/A | N/A | Istanbul |
8 | Update | ncmp-datastores:running | CPSPath only | N/A | N/A | N/A | > Istanbul |
9 | Patches | passthrough-running | RESTConf Path only | N/A | N/A | N/A | Istanbul |
10 | Patches | ncmp-datastores:running | CPSPath only | N/A | N/A | N/A | > Istanbul |
11 | Bulk | passthrough-running | RESTConf Path only | N/A | N/A | N/A | > Istanbul |
12 | Bulk | ncmp-datastores:running | CPSPath only | N/A | N/A | N/A | > Istanbul |
13 | Action | passthrough-running | RESTConf Path only | N/A | N/A | N/A | Istanbul? |
14 | Action | ncmp-datastores:running | CPSPath only | N/A | N/A | N/A | Istanbul? |
REST API
# | Req/usecase | REST Method | URI / Payload | Header Parameters | Request/Response Example | Status |
---|---|---|---|---|---|---|
1 | Read a data resource directly from change to not passthrough | GET | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{dataresource-identifier}?fields={fields}&topic={topicId} | Accept: application/json | Scenario : Read the GNBCUCPFunction for cm-handle "335ff" as Method : GET URI : {ncmp-root}/ncmp/v1/ch/335ff/ds/ncmp-datastores:passthrough-running//GNBCUCPFunction?fields=pLMNId;gNBId;gNBIdLength;syncStatus&topic=anr-app:anr24234234:v2 Header : Response : Event Response: { [ } | passthrough-running is supported in Istanbul using
Note 'topic' and 'fields' are only supported in passthrough mode at this time (ONAP Release I). If not passthrough then an exception is thrown from NCMP at this time. |
2 | Read a data resource directly from source (passthrough) for a cmHandle. Only return specific field(s). Synchronous call | GET | {ncmp-root}/ncmp/v1/ch//ds /ncmp-datastores:passthrough-running/{data-resource-identifier}?fields={fields} | Accept: application/json | Scenario : Read the EUtranCellFDD.(administrativeState, operationalState, tac, earfcndl, cellId, physicalLayerCellId) for cmhandle "335ff" as passthrough |
Method: GET URI : {ncmp-root}/ncmp/v1/ch/335ff/ds/ncmp-datastores:passthrough-running//EUtranCellFDD?fields=administrativeState;operationalState;tac;earfcndl;cellId;physicalLayerCellId Header : Response: HTTP/1.1 200 OK { [ | passthrough-running is supported in Istanbul using
| |||||||||
3 | ALTERNATIVE OUTPUT TO ABOVE Read a data resource directly from Synchronous call | GET | {ncmp-root}/ncmp/v1/ch//ds /ncmp-datastores:passthrough-running/{dataresource-identifier}?fields={fields} | Accept: application/json | Scenario : Read the EUtranCellFDD.(administrativeState, operationalState, tac, earfcndl, cellId, physicalLayerCellId) for cmhandle "335ff" as passthrough Method : GET URI : {ncmp-root}/ncmp/v1/ch/335ff/ds/ncmp-datastores: Header : Response: HTTP/1.1 200 OK { [ OR "/ManagedElement[@id="Kista-001"]/ENodeBFunction[@id="1"] OR "xpath": "/ManagedElement[@id="Kista-001"]/ENodeBFunction | passthrough-running is supported in Istanbul using
| ||||
4 | Read a data resource with some leaf value condition directly from the source (passthrough) for a cmHandle. Only Synchronous call | GET | {ncmp-root}/ncmp/v1/data/ch //ds/ncmp-datastores: passthrough-running/{data-resourceidentifier[]}?fields={fields} &topic={topicId} | ContentType: application/json | Scenario : Read the LocalSctpEndpoint.(interfaceUsed==X2, sctpEndpointRef) for cmhandle "335ff" as passthrough Method : GET URI : {ncmp-root}/ncmp/v1/ch/335ff/ds/ncmp-datastores: Header : Response: HTTP/1.1 200 OK { [ } OR
| passthrough-running is supported in Istanbul using
| ||||
5 | Create a data resource for a cmhandle | POST | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{parent-data-resource-identifier} { OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cmhande>/ { | ContentType: application/json | Scenario : Create ericsson-nrsectorcarrier-vdu-add:NRSectorCarrier=4 Method : POST URI : {ncmp-root}/ncmp/v1/ch/34l5k32/ds/ncmp-datastores:passthrough-running/ManagedElement Header : Body : { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
6 | Update a data resource for a cmhandle | PATCH | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds { OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cmhande>/ { | ContentType: application /yang-data+json | Scenario : Update ericsson-nrsectorcarrier-vdu-add:NRSectorCarrier=4 txDirection to "DL_AND_UL" under _3gpp-common-managed-element:ManagedElement=Kista-001/_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 Method : PATCH URI :{ncmp-root}/ncmp/v1/data/ch/34l5k32/ds/ncmp-datastores:passthrough-running/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]/NRSectorCarrier[@id=4] Header : Body : { NOTE : If not passthrough then ALL attributes MUST be supplied for the patch at this time. Otherwise, other attributes are removed from CPS. | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul this will be treated as a merge | ||||
7 | Delete a data resource for a cmhandle | DELETE | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data-resource-identifier} OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cmhande>/{data-resource-identifier} | ContentType: application /json | Scenario : Create ericsson-nrsectorcarrier-vdu-add:NRSectorCarrier=4 under _3gpp-common-managed-element:ManagedElement=Kista-001 /_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 Method : DELETE URI : {ncmp-root}/ncmp/v1/data/ch/34l5k32/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]/NRSectorCarrier[@id=4] OR {ncmp-root}/ncmp/v1/ch/34l5k32//NRSectorCarrier[@id=4] Header : Accept: application/json Body : {} | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul for delete | ||||
8 | Get model (module set) for CMHandle | GET | {ncmp-root}/ncmp/v1/model/<handleId> | Accept: application/ yang- data+json | Scenario : Get the model data for CMHandle with id "335ff" Method : GET URI : {ncmp-root}/ncmp/v1/model/335ff Header : Response: { "ietf-yang-library:modules-state" : { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul for delete | ||||
9 | Create a data resource for a cmhandle | POST | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{parent-data-resource-identifier} { OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cmhande>/ { | Content- Type: application /yang- data+json | Scenario : Create ericsson-nrsectorcarrier-vdu-add:NRSectorCarrier=4 Method : POST URI :{ncmp-root}/ncmp/v1/data/ch/34l5k32/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1] Header : Body : { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
10 | Delete a data resource for a cmHandle | DELETE | {ncmp-root}/ncmp/v1/ch/<handleId>/ds/ncmp- OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cmhande>/{parent-data-resource-identifier} | Content-Type: application/yang- data+json | Scenario : Delete NRSectorCarrier=4 Method : DELETE URI : {adapter-root}/ncmp/v1/ch/34l5k32/_3gpp-commonmanaged-element:ManagedElement=Kista-001/_3gpp-nr-nrmgnbdufunction:GNBDUFunction=1/_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=[@id=4] | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul for delete | ||||
11 | Update a data resource for a cmHandle | PATCH | {ncmp-root}/ncmp/v1/data/<cm-handle>/ds/ncmp- OR with datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/ | Content-Type: application/yang- data+json | Scenario : Add NRSectorCarrier=4 to GNBDUFunction=1 if it doesn't already exist Method : PATCH URI : {ncmp-root}/ncmp/v1/ch/d32455f/_3gpp-commonmanaged-element:ManagedElement=Kista-001/_3gpp-nr-nrmgnbdufunction:GNBDUFunction=1 Header Body { _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 : { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
12 | Multiple edits under a target data | PATCH | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data-resource-identifier} OR using datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/{data-resource-identifier} | Content-Type: application/yang- patch+json | Scenario : Make multiple updates under the GNBDUFunction=1 data resource Method : PATCH URI : {ncmp-root}/ncmp/v1/ch/32rf234/_3gpp-common- Header : Body : { "ietf-restconf:yang-patch" : { Response : HTTP/1.1 200 OK { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
13 | Execute a yang action | POST | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data- Note : If the "action" statement OR using datastores defaults {ncmp-root}/ncmp/v1/ch { "param1Name" : } | Content-Type: application/yang- data+json | Method : POST URI : {ncmp-root}/ncmp/v1/ch/3445fff/_3gpp-common- Header : Body : | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
14 | Execute an rpc operation | POST | {ncmp-root}/ncmp/v1/ch/<cm-handle>/operations/ds/ncmp-datastores :passthrough-running/{module-name}:{action} { Note : If there is no "input" OR using datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/operations/{module-name}:{action} { | Content-Type: application/yang- data+json | Method : POST URI : {ncmp-root}/ncmp/v1/ch/3445fff/operations/_3gpp- Header : Body : | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
15 | Read a filtered set of data under a data | GET | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data- options
OR using datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/data/{data-resource-identifier}?fields={fields-expression} | Accept: application /yang-data +json | Scenario : Read GNBDUFunction=1.userLabel and NRSectorCarrier with Method : GET URI : {ncmp-root}/ncmp/v1/ch/3fsdfr3/_3gpp-common- {ncmp-root}/ncmp/v1/ch/3fsdfr3/ManagedElement=Kista-001 Header : Body: Response : HTTP/1.1 200 OK _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 { "userLabel" : "myGnodeBFunction-1", _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=1 { _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=3{ _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=4 { } } | passthrough-running is supported in Istanbul using
| ||||
16 | Read descendant data resources with | GET | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds options
OR using datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/{data-resource-identifier}?fields={fields-expression} | Accept: application /yang-data+ json | Scenario : Read all NRCellDU MOs with attributes userLabel and id under Method : GET URI : {ncmp-root}/ncmp/v1/cm-handle/3445fff/_3gpp-common- Header : Response : HTTP/1.1 200 OK { _3gpp-nr-nrm-nrcelldu:NRCellDU=1 { _3gpp-nr-nrm-nrcelldu:NRCellDU=4 { _3gpp-nr-nrm-nrcelldu:NRCellDU=5 { | passthrough-running is supported in Istanbul using
| ||||
17 | Read data resources to a given depth | POST | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data-
OR using datastores defaults {ncmp-root}/ncmp/v1/data/<cm-handle>/{data- | Accept: application /yang- data+json | Method : POST URI : {ncmp-root}/ncmp/v1/ch/3445fff/_3gpp-common- Header : Body: Response : HTTP/1.1 200 OK _3gpp-nr-nrm-nrsectorcarrier: _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=3{ _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=4 { _3gpp-nr-nrm-nrcelldu:NRCellDU=1 { _3gpp-nr-nrm-nrcelldu:NRCellDU=4 { _3gpp-nr-nrm-nrcelldu:NRCellDU=5 { | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
18 | Create or replace the target data | PUT | {ncmp-root}/ncmp/v1/ch/<cm-handle>/ds/{datastore}/{data-resource-identifier} OR using datastores defaults {ncmp-root}/ncmp/v1/ch/<cm-handle>/{data-resource-identifier} | Accept: application /yang-data+ json | Method : PUT URI : {ncmp-root}/v1/ch/3445fff/_3gpp-common-managed- Header : Body : | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
19 | Get data for list of CMHandles | PUT | {ncmp-root}/ncmp/v1/ds/{datastore}/{data-resource-identifier} OR using datastores defaults {ncmp-root}/ncmp/v1/{data-resource-identifier} | Accept: (yangData contains | Scenario Get the NRCellDU=Cell-001 data for multiple cmhandles Method : PUT URI : {ncmp-root}/ncmp/v1/ds/ncmp-datastores:passthrough-running? Header : Body : Response : HTTP/1.1 200 OK "response" : [ "top3gpp:id" : "NR-Cell-001" }, _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 { "_3gpp-nr-nrm-nrcelldu:NRCellDU=NR- "top3gpp:id" : "NR-Cell-001" } } }, _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 { "_3gpp-nr-nrm-nrcelldu:NRCellDU=NR-Cell- } { "ietf-restconf:errors" : { } } ] | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
20 | Read resource data (with 'fields') for list | POST | {ncmp-root}/ncmp/v1/ds/{datastore}/{data-resource-identifier} OR {ncmp-root}/ncmp/v1/{data-resource-identifier} | Accept: (yangData contains | Scenario Get the and select attributes GNBDUFunction.id of NRSectorCarrier and NRCellDUs Method : POST URI : {ncmp-root}/ncmp/v1//NRSectorCarrier?fields=top3gpp:id;_3gpp- Header : Body: { Response : HTTP/1.1 200 OK "response" : [ "yangData" : { "_3gpp-nr-nrm-nrsectorcarrier: "_3gpp-nr-nrm-nrsectorcarrier: "_3gpp-nr-nrm-nrsectorcarrier: "_3gpp-nr-nrm-nrcelldu:NRCellDU=1" : { "_3gpp-nr-nrm-nrcelldu:NRCellDU=4" : { "_3gpp-nr-nrm-nrcelldu:NRCellDU=5" : { } } }, { " : " cmHandle 1232", "data" : { "_3gpp-nr-nrm-nrsectorcarrier: "_3gpp-nr-nrm-nrsectorcarrier: } }, { "_3gpp-nr-nrm-nrsectorcarrier: "_3gpp-nr-nrm-nrcelldu:NRCellDU=1" : { } }, { " : " cmHandle 1234", "yangData" : { _3gpp-nr-nrm-gnbdufunction: "_3gpp-nr-nrm-nrcelldu:NRCellDU=1 { } } ] } | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
21 | Execute a yang action on multiple | POST | {ncmp-root}/ncmp/v1/data/{data-resource-identifier}/{action} input: { Note : If the "action" statement has no | Content-Type: (yangData | Method : POST URI : {ncmp-root}/ncmp/v1/data/_3gpp-common-managed-element: Header : Body : "yangData" : { Response Success HTTP/1.1 202 Accepted //EMPTY BODY Error Response : HTTP/1.1 202 Accepted response : [ { 1232", "yangData" : { ietf.org/html/rfc6241#section-4.3 "error-type" : "protocol", 1234", "yangData" : { "error" : [ | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
22 | Execute an rpc operation on multiple | POST | {ncmp-root}/ncmp/v1/operations/{module-name}: { Note : If there is no "input" section, the request MUST NOT include a | Content-Type: application/json | Method : POST URI :{ncmp-root}/ncmp/v1/operations/_3gpp-common-managedelement:ManagedElement=Kista-001/_3gpp-nr-nrm-gnbdufunction: Header : Body : operation : "action", | passthrough-running is supported in Istanbul using
ncmp-datastores:running is not supported in Istanbul | ||||
23 | GET/ POST/ PATCH /PUT/ DELETE | {ncmp-root}/ncmp/v1/ch/ /data/ds/ncmp-datastores:passthrough-running/ {xpath}?topic=<dmaap-topic-Identifier> {ncmp-root}/ncmp/v1/ch/ /data/ds/ncmp-datastores:running/{xpath}?topic=<dmaap-topic-Identifier> **Async communication channel is DMaaP Immediate response with a requestId is sent to the caller and the CRUD request is executed asynchronously where data is returned via the provided topic identifier. | Accept : application/json | Scenario : Async request to NCMP Method : GET/POST/PATCH/PUT/DELETE URI : {ncmp-root}/ncmp/v1/ch/de3455/data/ds/ncmp-datastores: Body : // Include body where required Response : response data is published on the topic identified by <topicIdentifier> |
Output Specification
?fields={fields}&topic= {topicId}
...