...
Usecase | REST Method | URI | Example | |||||
---|---|---|---|---|---|---|---|---|
1 | Add a data resource for a cmHandle | POST | {dmi-root}/dmi/v1/data/ch/<cmhandle>/ds/ncmp-datastore:running/{parent-data-resource-identifier} { <new-yang-data-resource> } Content-Type: application/json "data" payload : yang-data+json | see example 4 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
2 | Delete a data resource for a cmHandle | PUT | {dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:running/{resource-identifier} | see example 7 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
3 | Patch a data resource for a cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:running/{resource-identifier} { Content-Type: application/json "data" payload : yang-data+json | see example 5 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
4 | Patch multiple child resources for a single cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:running/{resource-identifier} Content-Type: application/json "data" payload : yang-patch+json | see example 6 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
5 | Execute a yang action on a cmhandle instance | POST | dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:operational/{resource-identifier}/{action} input: { } Note : If the "action" statement has no "input" section, the request message MUST NOT include a message-body | see example 10 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
6 | Execute an rpc operation | POST | {dmi-root}/dmi/v1/operations/ch/<cm-handle>/ds/ncmp-datastore:operational/ {module-name}:{action} { Note: If there is no "input" section, the request MUST NOT include a message-body | see example 11 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
7 | Read a filtered set of data under a data resource for a cmHandle | PUT | {dmiroot}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:operational/{resource-identifier}?fields={fields-expression}
| |||||
8 | Read data resources with specified fields under a given data resource for a given cmHandle | PUT | {dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:operational/{resource-identifier}?fields={fields-expression}
| see example 12 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
9 | Get data resource with 'fileds' for a cmhandle with a given scope condition | PUT | {dmi-root}/dmi/v1/data/ch/{cm-handle}/ds/ncmp-datastore:operational/{resourcepath}?fields={fields}&scope={scope} | see example 2 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
10 | Read descendant nodes to a given depth for a given cmHandle | PUT | {dmi-root}/dmi/v1/data/ch/{cm-handle}/ds/ncmp-datastore:operational/{resource-identifier}?depth={level}
| see example 12 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | ||||
11 | Replace data for a CMHandle | PUT | {dmi-root}/dmi/v1/data/ch/<cm-handle>/ds/ncmp-datastore:running/{resource-identifier} { data : { .... the complete tree config to be replaced } } | see example 12 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI |
...
Use Case | Rest Method | URI | Example | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | DMI registers a new data source with NCMP notifies NCMP of new , deleted or changed cmhandles DMI Plugin NCMP | POST | {ncmp-root}/ncmp/v1/dmi-plugin/ dmi-plugin-id should be resolvable service name ink8s DNS Scenario : Register/Create a new dmich/ | Scenario : DMI notifies NCMP of new cmhandles-plugin data source in NCMP Method : POST URI : {ncmp-root}/ncmp/v1/ dmi-pluginch/Content Content-Type: application/json-id " : "service system: sample-service5555", //should be resolvable sevicename in"dmi-source-id" : "sample" } Success Response : HTTP/1.1 409 Conflict Date: Thu, 26 Jan 2021 20:56:30 GMT Server: example-server { "error" : { "error-type" : "protocol", "error-tag" : "data exists", "error-message" : "Datasource service:sample-service/sample already registered/created" } } An error will tell the DMI Plugin that this datasource has already been processed - no need to recover the cmhandles again. | 2 | Delete a data source from NCMP DMI Plugin NCMP | k8s DNS | ||||||||||||||||||||||||||
2 | Get all the registered cmhandles for a given plugin | GETDELETE | {ncmp-root}/ncmp/v1/dmi-pluiginplugins/{ dmi-plugin-id}/dmi-source/ { unique-data-source-id } Scenario DELETE URI ch | Scenario : Get all cmhandles from NCMP for a given dmi-plugin. May be used/cmhandle-source /dmi- pluigin/service:sample-service/plugins/{dmi-source/sample-dmi-source plugin}/ch: {} Success Response : :409 Conflict 200 Ok"error" : { "error-type" : "protocol", "error-tag" : "data exists", "error-message" : "Datasource service:sample-service/sample-dmi-source already registered/created" } } An error will tell the DMI Plugin that this datasource has already been processed - no need to recover the cmhandles again. | 3 | GET | "cmhandles" : [ | ||||||||||||||||||||||||||
3 | Notify of change to CMHandle(s) | - | Topic : 'NCMP_INVENTORY' / sync request topic | Topic : NCMP_INVENTORY | 4 | Notify of change to CMHandle(s) | Topic : 'NCMP_INVENTORY' / sync request topic The topic name should come from Data Catalog OR should DMI registry store the topic from the initial NCMP sync request?) | { | cmhandle-001rf4er5454", | subsystemIdsystem-001" | targetId-001Subnetwork=Stockholm,MeContext=Kista,ManagedElement=Kista001" | }, | cmhandle-002dfget656", | subsystemIdsystem-001" | targetIdSubnetwork=Stockholm,MeContext=Kista, | .... | . | ], | # array of cmhandles | "updatedcmhandles"that | :have | #been | Fordeleted | example | cmhandle | has | got | rehomes | tofrom | athe | newnetwork. | system... | |
4 | Sync the model to NCMP | PUT | {dmi-root}/dmi/v1/sync/ch/<cmhandle> | Scenario : NCMP requests sync of cmhandle yang tree{ "cmhandle" : "cmhandle-003", "additionalProperties" : { "subsystemId" : "subsystemId-001" "targetId additionalProperties" :"targetId-001" } {}, { " cmhandlesubsystemId" : "cmhandle sample- 004subsystemId" ,"additionalProperties" : "targetId"{ : "Subnetwork=Stockholm,MeContext=Kista,ManagedElement=1""subsystemId" }"subsystemId-001" "targetId" 2017 20:"targetId-002"} 56:30 GMT Server: example-server } ... Content-Type: application/yang-data-json... {], "removedcmhandles" :_3gpp-common-managed-element:ManagedElement ["cmhandle-005", .... ], # array of cmhandles that have been deleted {from the network..."migratedcmhandles" _3gpp-nr-nrm-gnbdufunction:GNBDUFunction : ["cmhandle" : "cmhandle-005"id=1,"additionalProperties" :nrsectcarr3gpp:NRSectorCarrier=1 { # level{ 2subsystemId _3gpp-common-top:id" : "subsystemId NRSectorCarrier- 0011" , # level 3targetId attributes" :"targetId-001" } { # level 3}, {"cmhandle txDirection" : "cmhandle-006 DL_AND_UL", # level 4"additionalProperties "arfcnUL" : "55555", # level 4{ "subsystemId" : "subsystemId-001" "targetId" : "targetId-002"...... ... |
Use Case | Rest Method | URI | Example | |
---|---|---|---|---|
1 | Get model (module set) for cmhandles | PUT | {dmi-root}/dmi/v1/model/ch/<cm-handle> | Scenario : Get the model data for a given cmhandle Method : PUT URI : {dmi-root}/dmi/v1/model/ch/cmhandle-001?fields=ietf-yang-library:modules-set Header : Body : { |
...