You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 56 Next »


Work In Progress

Under construction


CPS-391 - Getting issue details... STATUS

Guiding Principles

  1. NCMP REST Interface will follow/be inspired by RESTConf interface for easy acceptance of and transition to this interface
  2. The interface will include the concept of data-stores inspired by Network Management Datastore Architecture (NMDA) and as used in RESTConf
  3. The application should be able to easily switch between 'pass-through' and other datastores (also identical rest endpoint and responses)


Open Issues & Decisions


Description

Notes

Decision

1Priority of async calls
In Istanbul, async calls are required only in pass-through cases. NCMP does not have to handle these requests 
2Will 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 (json)

3In the URI will we distinguish between data and operations (RFC calls) as part of the path?

This only applies to pass-through

yes, we will distinguish between data and operation

4Which query parameters will NCMP support?

Parent data resource identifier can handle any path using the same query parameter 

  1. cpsPath
  2. RESTConf Path (pass-through)
  3. Proprietary Path (pass-through)
5

Yml should include return types and examples of the payload


Legacy and new API docuemtnation needs to include output examples.

Task created, see  CPS-401 - Getting issue details... STATUS

6camel 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)

See no.3 https://restfulapi.net/resource-naming/

7Insert /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
8Granularity of update scenarios (and priority)
  1. Add child and its descendants (supported in cps core)
  2. Add all list elements (supported in cps core)
  3. Replace child and its descendants (supported in cps core)
  4. Replace all list elements (pending in cps core)
  5. Update single leaf (new)
  6. Add list entry (new)

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

9There is no automatic fallback option for datastore in release IIn future releases, we hope to have the automatic fallback optionThe client will have the specify the datastore
10fields 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.
11Agree 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 
12Will we combine query capabilities with update capabilities?
We have decided not to combine query capabilities with update capabilities
13Description of header limitations

HTTP Header Limitations
Some servers put size limitations on HTTP headers, making them unsuitable for storing cmHandle information.

LIMITATION NOTE: server implementations put size limits on the headers meaning header contents should be designed carefully :
Apache - 8K
Nginx - 4K-8K
IIS - 8K-16K
Tomcat - 8K – 48K

14Will NCMP support paths for pass-through:running

The plugin will not do transformation or validation of paths in the case of pass-through:running

15Specification of path per cm handle
DMI Plugin can take cps paths or resconf paths and it needs to specify that per cm handle when cm handle is created
16What is the default path for NCMP
In NCMP default will always be cps path and depending on the adapter we can change it as needed per cm handle
17Fields parameter for datastore:operational?
The fields parameter is ignored in datastore:operational
18Is specifying the datastore mandatory?
Datastore is optional depending on the data being persisted or not


RESTCONF/NETCONF relationship



NCMP URI

NCMP URI format to follow below pattern

<OP>/ncmp/<v{v-number}>/ch/<cm-handle>/<data|operations|{ncmp-operation}>/ds/{datastore}/[rp:]{resource-path}?{query}

URI
Mandatory or Optional
<OP>the HTTP methodMandatory
ncmp /the ncmp root resourceMandatory
<v{v-number}>version of the ncmp interface <path> is the target resource URI <query> is the query parameter listMandatory
ch/<cm-handle>unique (string) identifier of a yang tree instance.Optional
<data|operations|{ncmp-action}>request category - yang data, rpc operation or a (non-modelled) ncmp api action. this could be data, operations or ncmp-actionMandatory
ds/{datastore}optional datastoreOptional
<resource-path>the path expression identifying the resource that is being accessed by the operation. If this field is not present, then the target resource is the API itself.Optional
<query>

the set of parameters associated with the RESTCONF message; see Section 3.4 of [RFC3986]. RESTCONF parameters have the familiar form of "name=value" pairs. Most query parameters are optional to implement by the server and optional to use by the client. Each optional query parameter is identified by a URI

Optional

Datastores

New datastores are defined for ncmp to access the CPS 'intent' or 'operational' datastore.
Alternatively, the request can be sent directly to the 'device' itself (bypassing CPS datastores) using one of the 'passthrough-*' datastores options as below

The new ncmp datastores required for ONAP Release I include :

1ncmp-datastores:running (RW / config=true/false)   Read/Write to the CPS "intended" store (with validation).
2ncmp-datastores:operational (RO / config=true/false)Read from the CPS "operational" store.
3ncmp-datastores:passthrough-running (RW / config=true/false)Read/Write to/from the live devices ietf-datastores:running (no local ncmp validation)


Future datastores to be supported by NCMP include :

1ncmp-datastores:passthrough-intented (RO)Read from the live devices ietf-datastores:intended
2 ncmp-datastores:passthrough-operational (RO)Read from the live devices ietf-datastores:operational

  

If datastore (ds/{datastore}) is omitted from URI, the datastore from cmhandle is used

If datastore (ds/{datastore}) is omitted from URI AND the model/moduleSet exists, the datastore defaults to ncmp-datastores:running

Yang data resource actions and RPC operations are run directly on the 'device' meaning ncmp-datastores:passthrough-running is used for these request


Different defaults for read and write 

e.g. ncmp-datastores:operational for read requests


#UsecaseNCMP DatastorePath?fields?topicQueryTime frame
1Readpassthrough-runningRESTConf Path onlyImplemented by SDNC/NodeImplemented by DMI PluginNot supportedIstanbul
2Readncmp-datastores:operational CPSPath onlyTBDTBDLimited xpath functionalityIstanbul
3Createpassthrough-runningRESTConf Path onlyN/AN/AN/AIstanbul
4Createncmp-datastores:runningCPSPath onlyN/AN/AN/A> Istanbul
5Deletepassthrough-runningRESTConf Path onlyN/AN/ANot supportedIstanbul
6Deletencmp-datastores:runningCPSPath onlyN/AN/ANot supported> Istanbul
7Updatepassthrough-runningRESTConf Path onlyN/AN/AN/AIstanbul
8Updatencmp-datastores:runningCPSPath onlyN/AN/AN/A> Istanbul
9Patchespassthrough-runningRESTConf Path onlyN/AN/AN/AIstanbul
10Patchesncmp-datastores:runningCPSPath onlyN/AN/AN/A> Istanbul
11Bulk passthrough-runningRESTConf Path onlyN/AN/AN/A> Istanbul
12Bulkncmp-datastores:runningCPSPath onlyN/AN/AN/A> Istanbul
13Actionpassthrough-runningRESTConf Path onlyN/AN/AN/AIstanbul?
14Actionncmp-datastores:runningCPSPath onlyN/AN/AN/AIstanbul?

REST API

 

#Req/usecase

REST

Method

 URI / Payload

Request/Response ExampleStatusRelease I
1

Async read of a data resource getting
specific fields from ncmp-datastores:
passthrough-running for a given
cmHandle

GET

{ncmp-root}/ncmp/v1/ch/<cm-handle>/{dataresource-identifier}?fields={fields}&topic={topicId}


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.
Accept : application/json
Always return the yang-data+json in the "data" event payload


Scenario : Read the GNBCUCPFunction for cm-handle "335ff" as passthrough

Method  : GET

URI         : {ncmp-root}/ncmp/v1/data/ch/335ff/ds/GNBCUCPFunction?fields=pLMNId;gNBId;gNBIdLength;syncStatus&topic=anr-app:anr24234234:v2

OR

{ncmp-root}/ncmp/v1/data/ch/335ff/ds/ncmp-datastores:passthrough-running?fields=_3gpp-common-managed-element:ManagedElement/_3gpp-nr-nrm-gnbcucpfunction:GNBCUCPFunction(pLMNId;gNBId;gNBIdLength)&topic=anr-app:anr24234234:v2

Header :
      Accept: application/yang-data+json

Response :
{
responseId : 323234
}

Event Response:

  {
"requestId" : "dd3434",
"data" : {
"_3gpp-common-managed-element:ManagedElement" : [
{
"id"="Kista-001",
? _3gpp-nr-nrm-gnbcucpfunction:GNBCUCPFunction : [
{
"id"="1",
"attributes" : {
"pLMNId : [ { "mcc" : "01", "mnc" : "123" }],
"gNBId" : 123,
"gNBIdLength" : 3
}
}
]
}
]
}
}



passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin


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.

Always return the yang-data+json in the "data" event payload

yes
2

Read of a data resource getting specific
fields for a given cmHandle

GET

{ncmp-root}/ncmp/v1/data/ch/<cm-handle/{data-resource-identifier}?fields={fields}

Scenario : Read the EUtranCellFDD.(administrativeState, operationalState, tac, earfcndl, cellId, physicalLayerCellId) for cmhandle "335ff" as passthrough

Method: GET

URI         :  {ncmp-root}/ncmp/v1/data/ch/335ff/ManagedElement[@id=Kista-001]/ENodeBFunction?fields=ericsson-enm-lrat:EUtranCellFDD(administrativeState;operationalState;tac;earfcndl;cellId;physicalLayerCellId)

Header :
      Accept: application/json

Response:

HTTP/1.1 200 OK
Date: Thu, 26 Apr 2021 20:56:30 GMT
Server: example-server
Content-Type: application/yang-data+json
{
"ericsson-enm-comtop:ManagedElement" : {
"managedElementId" : "Kista-001",
"ericsson-enm-lrat:ENodeBFunction" : {
"EUtranCellFDD" : [
{
"eUtranCellFDDId" : "LTE05ERBS00008-2",
"administrativeState" : "UNLOCKED",
"cellId" : 2,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 1
},
{
"eUtranCellFDDId" : "LTE05ERBS00008-3",
"administrativeState" : "UNLOCKED",
"cellId" : 3,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 3
},
{
"eUtranCellFDDId" : "LTE05ERBS00008-4",
"administrativeState" : "UNLOCKED",
"cellId" : 4,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 4
}
]
}
}
]
}

passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin

3

Read a  data resource directly from 
source (passthrough) for a cmHandle.  Only return specific field(s).

Synchronous call

GET

{ncmp-root}/ncmp/v1/data/ch//{data-resource-identifier}?fields={fields}


Accept: application/yang-data+json

Scenario : Read the EUtranCellFDD.(administrativeState, operationalState, tac, earfcndl, cellId, physicalLayerCellId) for cmhandle "335ff" as passthrough

Method  : GET

URI         :{ncmp-root}/ncmp/v1/data/ch/335ff/ManagedElement[@id=Kista-001]/ENodeBFunction?fields=ericsson-enm-lrat:EUtranCellFDD(administrativeState;operationalState;tac;earfcndl;cellId;physicalLayerCellId)

Header :
      Accept: application/yang-data+json

Response:

HTTP/1.1 200 OK 
Date: Thu, 26 Apr 2021 20:56:30 GMT 
Server: example-server 
Content-Type: application/yang-data+json

{
"ericsson-enm-comtop:ManagedElement" : {
"managedElementId" : "Kista-001",
"ericsson-enm-lrat:ENodeBFunction" : {
"EUtranCellFDD" : [
{
"eUtranCellFDDId" : "LTE05ERBS00008-2",
"administrativeState" : "UNLOCKED",
"cellId" : 2,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 1
},
{
"eUtranCellFDDId" : "LTE05ERBS00008-3",
"administrativeState" : "UNLOCKED",
"cellId" : 3,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 3
},
{
"eUtranCellFDDId" : "LTE05ERBS00008-4",
"administrativeState" : "UNLOCKED",
"cellId" : 4,
"earfcndl" : 4,
"operationalState" : "ENABLED",
"physicalLayerCellId" : 0,
"tac" : 4
}
]
}
}
]
}

passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin
Yes
4

Read a  data resource with some leaf value condition directly from the source (passthrough) for a cmHandle.  Only 
return specific field(s).

Synchronous call

GET{ncmp-root}/ncmp/v1/data/ch/<cmhandle>/{data-resource-identifier[<condition>]}?fields={fields}

Scenario : Read the LocalSctpEndpoint.(interfaceUsed==X2, sctpEndpointRef) for cmhandle "335ff" as passthrough

Method  : GET

URI 

cps-path
{ncmp-root}/ncmp/v1/query/ch/335ff//LocalSctpEndpoint[interfaceUsed=X2]?
fields=sctpEndpointRef

restconf
{ncmp-root}/ncmp/v1/data/ch/335ff?fields=ericsson- enm-comtop:ManagedElement/ericsson-enm-gnbcucp:GNBCUCPFunction
/EndpointResource/LocalSctpEndpoint(sctpEndpointRef)&scope=ericsson-enm-comtop:ManagedElement/ericsson-enm-gnbcucp:
GNBCUCPFunction/EndpointResource/LocalSctpEndpoint[interfaceUsed=X2 ]

Header
:
Accept: application/yang-data+json

Response
:
HTTP/1.1 200 OK
Date: Thu, 26 Apr 2021 20:56:30 GMT
Server: example-server
Content-Type: application/json

{
"ericsson-enm-comtop:ManagedElement" : {
"managedElementId" : "Kista-001",
"ericsson-enm-gnbcucp:GNBCUCPFunction" : {
"EndpointResource" : [
{
"endpointResourceId" : "1",
"LocalSctpEndpoint" : [
{
"localSctpEndpointId" : "3",
"sctpEndpointRef" : "some-sctp-ref"
}
]
}
]
}
}
}

passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin

5Create a data resource for a cmhandlePOST

cmp-root}/ncmp/v1/data/ch/<cm-handle>/{parent-data-resource-identifier}


     <new-yang-data-resource>
}    

Scenario : Create ericsson-nrsectorcarrier-vdu-add:NRSectorCarrier=4 under _3gpp-common-managed-element:ManagedElement=Kista-001
/_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1

Method  : POST 

URI     : {ncmp-root}/ncmp/v1/data/ch/34l5k32/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]

Header :
      Content-Type: application/yang-data+json

Body :

{
_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier" : {
"id" : 4
"attributes" : {
"userLabel : "nrSectorCar-4",
"txDirection" : "DL_AND_UL",
"configuredMaxTxPower" : "90",
"arfcnDL" : "9999999",
"arfcnUL" : "888888",
"bSChannelBwDL" : "90",
"bSChannelBwUL" : "80",
"sectorEquipmentFunctionRef" : "ManagedElement=1/...
/SectorEquipmentFunction=2"
}
}
}

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul


6

Update a data resource for a cmhandle with plain-patch update

PATCH

{ncmp-root}/ncmp/v1/data/ch/<cmhandle>/{data-resource-identifier}

{
<updated-yang-data-resource>
}

Content: application/yang-data+json

Behaves as a merge - merge with existing if it exists or create if it does not exist.

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/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]/NRSectorCarrier[@id=4]

Header :
      Content-Type: application/yang-data+json

Body :

{
       NRSectorCarrier" : {
                "id" : 4
                "attributes" : {
                        "txDirection" :  "DL_AND_UL"
               }
         }
}

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 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul



this will be treated as a merge


7Update a data resource with multiple
edits for a cmhandle with yang-patch
update
PATCH

{ncmp-root}/ncmp/v1/data/ch/<cm-handle>/{data-resource-identifier}

{
<updated-yang-data-resource>
}

Content: application/yang-data+json

If using yang-patch content then ds/ncmp-datastore-passthrough-running mus be used by rad apps until full
support is available from NCMP/CPS

Scenario : Update _3gpp-common-managed-element:ManagedElement=Kista-001/_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 with multiple operations on the tree

Method : PATCH

Header :
Content-Type: application/yang-patch+json

Body :

{
"ietf-restconf:yang-patch" : {
"patch-id" : "change-cell-and-carriers",
"edit" : [
{
"edit-id" : 1,
"operation" : "create",
"target" : "/_3gpp-nr-nrm-nrcelldu:NRCellDU=1",
"value" : {
"_3gpp-nr-nrm-nrcelldu:NRCellDU" : {
"id" : 1,
"cId" : 511,
"userLabel" : "some-cell-label",
...
}
}
},
{
"edit-id" : 2, "operation" : "create",
"target" : "/_3gpp-nr-nrm-nrcelldu:NRCellDU=2",
"value" : {
"_3gpp-nr-nrm-nrcelldu:NRCellDU" : {
"id" : 2,
"cId" : 512,
"userLabel" : "some-other-cell-label",
...
}
}
},
{
"edit-id" : 3,
"operation" : "merge",
"target" : "/_3gpp-nr-nrm-nrcelldu:NRCellDU=3",
"value" : {
"_3gpp-nr-nrm-nrcelldu:NRCellDU" : {
"cId" : 412,
"userLabel" : "yet-another-cell-label",
...
}
}
},
{
"edit-id" : 4,
"operation" : "merge",
"target" : "_3gpp-nr-nrm-nrcelldu:NRCellDU=4",
"value" : {
"_3gpp-nr-nrm-nrcelldu:NRCellDU" : {
"cId" : 412,
"userLabel" : "yet-another-cell-label",
...
}
}
}
]
}
}
Response :
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:56:30 GMT
Content-Type: application/yang-patch+json
{
"ietf-yang-patch:yang-patch-status" : {
"patch-id" : "change-cell-and-carriers",
"ok" : [null]
}
}

NOTE : Passthrough only. Not supported in ONAP Release I.


8

Delete a data resource for a cmhandle

DELETE

{ncmp-root}/ncmp/v1/data/ch/<cm-handle>/{data-resource-identifier}

Scenario: Delete 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]

Header :
Accept: application/json
Body : {}

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul for delete


9Get all cmhandles that support a given
module
GET{ncmp-root}/ncmp/v1/data/ch?module={module-name}
Content: application/json

Scenario : Get the all cmhandles that support a given module
Method : GET
URI : {ncmp-root}/ncmp/v1/data/ch?module=_3gpp-nr-nrm-gnbdufunction
Header :
Accept: application/json

Response:
{
cm-handles : [ "ew534fe", "23ft4", "434fsdf", ... ]
}



10

Get model info for CMHandle

GET

{ncmp-root}/ncmp/v1/data/ch/{cm-handle}/ietf-yang-library:modules-set

Scenario : Get the model data for CMHandle

Method  : GET

URI          :{ncmp-root}/ncmp/v1/data/ch/2334dedf/ietf-yang-library:modules-set

Header :
      Accept: application/yang-data+json

Response:

{
"ietf-yang-library:modules-set" : [ # from RFC 8525
{
"name" : "5479120c17a619545ea6aff7aa19838b036ebbd7",
"module" : [
{
"name" : "_3gpp-nr-nrm-nrsectorcarrier",
"revision" : "2020-12-09",
"namespace" : "urn:3gpp:sa5:_3gpp-nr-nrmnrnetwork-nrsectorcarrier",
"location" : "http://emsadapter.com/modules/_3gppnr-nrm-nrsectorcarrier",
"submodule" : [
{
"name" : "xxxx-module",
"revision" : "2020-12-17",
"namespace" : "urn:3gpp:sa5:xxx-module",
"submodule" : [
{
...
}
]
}
]
},
{
"name" : "ietf-yang-library",
"revision" : "2016-06-21",
"namespace" : "urn:ietf:params:xml:ns:yang:ietfyang-library"
}
]
}

passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin


ncmp-datastores:running is not supported in Istanbul for delete


11

Execute a yang action

POST

{ncmp-root}/ncmp/v1/data/ch/<cm-handle>/ds/ncmp-datastores:passthrough-running/{data-resource-identifier}/{action}
{
    input: {
                  "param1Name" : "param1Value”,
                  "param2Name" : "param2Value”
             }
}

Note : If the "action" statement 
has no "input" section, the  request 
message MUST NOT include a message-body


Method  : POST 

URI         :  {ncmp-root}/ncmp/v1/data/ch/3445fff/ds/ncmp-datastores:passthrough-operational/ManagedElement[@id=Kista-001]/brm/backup-manager[@id="configuration-system import-backup"]

Header :
      Content-Type: application/yang-data+json

Body :

Body :
{
"input" : {
"uri" : "ftp://users@14BCP04”,
"password" : "password”
}
}

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul


12

Execute an rpc operation

POST

{ncmp-root}/ncmp/v1/operations/ch//operations /ds/ncmp-datastores :passthrough-operational/{module-name}:{action}

{  
    input: {
                  "param1Name" : "param1Value”,
                  "param2Name" : "param2Value”
             }
}

Note : If there is no "input" 
section, the  request MUST NOT include a 
message-body


Method  : POST 

URI : {ncmp-root}/ncmp/v1/operations/ch/3445fff/ds/ncmp-datastores:passthrough-operational/_3gpp-common-managed-element:resetDevice (dummy action)

Header :
      Content-Type: application/yang-data+json

Body :
{
     "input" : {
           "param1Name" : "param1Value”,
           "param2Name" : "param2Value”
    }
}


Response :
HTTP/1.1 200 OK Date: Thu, 26 Jan 2017 20:56:30 GMT Server: example-server
Content-Type: application/yang-data+json

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul


13

Read descendant data resources with 
specified fields under a  given data 
resource for a given cmHandle

GET

{ncmp-root}/ncmp/v1/ch/<cm-handle>/{data-resource-identifier}?fields={fields-expression}

options 

OptionDescription
fieldsRequest a subset of the target
resource contents

Scenario : Read all NRCellDU MOs with attributes userLabel and id under the _3gpp-nr-nrm-gnbdufunction:GNBDUFunction MO

Method  : GET

URI         :{ncmp-root}/ncmp/v1/data/ch/3445fff/ManagedElement[@id=Kista-001]
/GNBCUCPFunction[@id=1]?fields=_3gpp-nr-nrm-nrcelldu:NRCellDU/attributes
(administrativeState;operationalState)

Header :
      Accept : application/yang-data+json

Response :

      HTTP/1.1 200 OK
      Date: Thu, 26 Jan 2017 20:56:30 GMT
      Server: example-server
      Content-Type: application/yang-data+json

      {
       _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 {

                                       _3gpp-nr-nrm-nrcelldu:NRCellDU=1 {
                                           "top3gpp:id" : "NR-Cell-001"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                           }
                                        },
                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=2 {
                                           "top3gpp:id" : "NR-Cell-002"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                           }
                                        },  
                                         _3gpp-nr-nrm-nrcelldu:NRCellDU=3 {
                                           "top3gpp:id" : "NR-Cell-003"
                                            "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                           }
                                        },  

                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=4 {
                                           "top3gpp:id" : "NR-Cell-004"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                           }
                                        },  

                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=5 {
                                           "top3gpp:id" : "NR-Cell-005"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                           }
                                        }
                              }
                    }

passthrough-running is supported in Istanbul using

  • RestConf Path only
  • ?fields implemented by SDNC/Node
  • ?topic implemented by DMI plugin

14

Read data resources to a given depth 
for a given cmHandle

POST

{ncmp-root}/ncmp/v1/ch/<cm-handle>{data-resource-identifier}?depth={level}


OptionDescription
depthRequest limited sub-tree depth
in the reply content
If '1' then only immediate data
resource is retrieved
If 'x' then x levels of data tree
are retrieved
'unbounded' will get the full tree
starting at the given dataresource-identifier



Method  : POST

URI         : {ncmp-root}/ncmp/v1/ch/3445fff/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]?depth=4

Header :
      Content-Type: application/yang-data+json
      Accept : application/yang-data+json

Body:

Response :

      HTTP/1.1 200 OK
      Date: Thu, 26 Jan 2017 20:56:30 GMT
      Server: example-server
      Content-Type: application/yang-data+json
 
      {
         _3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 {  
# level 1

                                       _3gpp-nr-nrm-nrsectorcarrier:
NRSectorCarrier=1 {     # level 2
                                           "top3gpp:id" : "NRSectorCarrier-1",  # level 3
                                           "attributes" : {                                    # level 3
                                                  "txDirection" : "DL_AND_UL",     # level 4
                                                  "arfcnUL" : "55555",                    # level 4
                                                   ...
                                           }
                                        },  
                                       _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=2 {
                                           "top3gpp:id" : "NRSectorCarrier-2",
                                           "attributes" : {
                                                  "txDirection" : "DL_AND_UL",
                                                  "arfcnUL" : "66666".
                                                   ...
                                           }
                                        },  

                                       _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=3{
                                           "top3gpp:id" : "NRSectorCarrier-3",
                                           "attributes" : {
                                                  "txDirection" : "DL_AND_UL",
                                                  "arfcnUL" : "77777".
                                                   ...
                                           }
                                        },  

                                       _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=4 {
                                           "top3gpp:id" : "NRSectorCarrier-4",
                                           "attributes" : {
                                                  "txDirection" : "DL_AND_UL",
                                                  "arfcnUL" : "88888".
                                                   ...
                                        },

                                     _3gpp-nr-nrm-nrcelldu:NRCellDU=1 {
                                           "top3gpp:id" : "NR-Cell-001"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                                   ...
                                           }
                                        },
                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=2 {
                                           "top3gpp:id" : "NR-Cell-002"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                                   ...
                                           }
                                        },  
                                         _3gpp-nr-nrm-nrcelldu:NRCellDU=3 {
                                           "top3gpp:id" : "NR-Cell-003"
                                            "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                                   ...
                                           }
                                        },  

                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=4 {
                                           "top3gpp:id" : "NR-Cell-004"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                                   ...
                                           }
                                        },  

                                        _3gpp-nr-nrm-nrcelldu:NRCellDU=5 {
                                           "top3gpp:id" : "NR-Cell-005"
                                           "attributes" : {
                                                  "administrativeState " : "LOCKED",
                                                  "operationalState" : "disabled"
                                                   ...
                                           }
                                        }
              }
         }

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul


15

Replace a data resource for a cmhandle

PUT

ncmp-root}/ncmp/v1/data/ch/<cm-handle>/{data-resource-identifier}

{

<yang-data-resource-identifier>

}

Scenario : Replace _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=4 txDirection
to "DL_AND_UL" under _3gpp-common-managed-element:ManagedElement=Kista001/_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 - removes all config params not specified including sub-tree if one exists

Method  : PUT

URI         : {ncmp-root}/ncmp/v1/data/ch/34l5k32/ManagedElement[@id=Kista-001]
/GNBDUFunction[@id=1]/NRSectorCarrier[@id=4]

Header :
      Accept : application/yang-data+json

Body :

{
            _3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier" : {
                 "id" : 4
                  "attributes" : {
                          "txDirection" : "DL_AND_UL"
          }
     }
}

passthrough-running is supported in Istanbul using 

  • RESTConf Path only


ncmp-datastores:running is not supported in Istanbul


16

Async Requests

GET/
POST/
PATCH
/PUT/
DELETE

{ncmp-root}/ncmp/v1/ch/<cmhandle>/data/ds/ncmp-datastores:passthrough-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.

Scenario : Async request to NCMP

Method : GET/POST/PATCH/PUT/DELETE

URI : {ncmp-root}/ncmp/v1/data/ch/de3455/ManagedElement[@id=Kista-001]/GNBDUFunction[@id=1]?topic=5G:SectorCarrierOrchestrator-0012391:12

Body :    //  Include body where required
{
       ....
}

Response   :
{
     "requestId" : "<some-requestId>"
}

response data is published on the topic identified by <topicIdentifier> keyed on request.


Event Successful Reponse :
{
"requestId" : "dd3434",
"data" : { # Example is for a GET with Accept:
application/yang-data+json
_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=1 {
_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=1 {
attributes {
"txDirection" : "DL_AND_UL",
"arfcnUL" : "55555"
}
},
_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=2 {
attributes {
"txDirection" : "DL_AND_UL",
"arfcnUL" : "66666"
}
},
_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=3{
attributes {
"txDirection" : "DL_AND_UL",
"arfcnUL" : "77777"
},
_3gpp-nr-nrm-nrsectorcarrier:NRSectorCarrier=4 {
attributes {
"txDirection" : "DL_AND_UL",
"arfcnUL" : "88888"
}
}
}
}
}
}
Event Fails Reponse :
{
"requestId" : "dd3434",
"ietf-restconf:errors" : {
"error" : [
{
"error-type" : "protocol",
"error-tag" : "unknown-element",
"error-path" : "ManagedElement[@id=Kista-001]
/GNBDUFunction[@id=1]"
"error-message" : "Data resource does not exist"
}
]
}
}



Output Specification 

?fields={fields}&topic= {topicId}

Assynchronous

?fields={fields}&topic= {topicId}

Required Task

#

Description

Notes

Decision

1

Yml update with return types with examples of the payload



2Update CPS openAPI.yml with return types

CPS-401 - Getting issue details... STATUS


References

Follow principles/patterns of RESTCONF RFC-8040 https://datatracker.ietf.org/doc/html/rfc8040
Follow principles/patterns of yang-patch RFC-8072 https://datatracker.ietf.org/doc/html/rfc8040
Follow principles/patterns of RESTCONF NMDA RFC-8527 https://datatracker.ietf.org/doc/html/rfc8527


NCMP Northbound API



  • No labels