...
Expand |
---|
|
*The examples in the below table refer back to the NCMP interface. The same differences apply to the data calls: - The URI prefix /dmi instead of /ncmp
The request body for each request wil include the 'additional properties' as stored for each cm-handle (hence the need for PUT over GET method) e.g.
Code Block |
---|
language | xml |
---|
title | Request Body |
---|
| Request Body : { |
"additionalProperties" : { [ "subsystemId" : "system-001" ] } |
| Usecase | REST Method | URI | Example* |
---|
1 | Add a data resource for a cmHandle | POST | {dmi-root}/dmi/v1/ch/<cmhandle>/data/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/ch/<cm-handle>/data/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/ch/<cm-handle>/data/ds/ncmp-datastore:running/{resource-identifier} { <yang-data-for-merging> } 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/ch/<cm-handle>/data/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/ch/<cm-handle>/data/ds/ncmp-datastore:operational/{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 | 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} { input: { "param1Name" : "param1Value”, "param2Name" : "param2Value” } } 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/ch/<cm-handle>/data/ds/ncmp-datastore:operational/{resource-identifier}?fields={fields-expression} Option | Description |
---|
fields | Request a subset of the target resource contents |
| see example 2 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | 8 | Read data resources with specified fields under a given data resource for a given cmHandle | PUT | {dmi-root}/dmi/v1/ch/<cm-handle>/data/ds/ncmp-datastore:operational/{resource-identifier}?fields={fields-expression}
Option | Description |
---|
fields | Request a subset of the target resource contents |
| 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/ch/{cm-handle}/data/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/ch/{cm-handle}/data/ds/ncmp-datastore:operational/{resource-identifier}?depth={level}
Option | Description |
---|
depth | Request limited sub-tree depth in the reply content If '1' then only immediate resource is retrieved If '2' then resource plus next level resources are retrieved |
| see example 12 CPS-391Spike: Define and Agree NCMP REST Interface#RESTAPI | 11 | Replace data for a CMHandle | PUT | {dmi-root}/dmi/v1/ch/<cm-handle>/data/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 |
|
...
View file |
---|
name | DMI NCMP Model Sync.pptx |
---|
height | 150 |
---|
|
This presentation illustrates the API methods #1, #3 and #4 detailed below
Expand |
---|
|
*For response output, where applicable the yang-library format and conventions are used 'as is' or extended # | Use Case | Rest Method | Service | URI | Example* |
---|
1 | DMI notifies NCMP of new , deleted or changed cmhandles DMI Plugin NCMP. Including initial registration | POST json attributes: - "dmi-plugin" resolvable servicename
- "createdcmhandles" used for initial cm handle registrations or subsequent
cmhandle creations - "updatedcmhandles"
Used for updates to cmhandles. Same structure as for create handles
- "removedcmhandles" array of cmhandles that have been deleted
from the network (no additional properties
| NCMP | {ncmp-root}/ncmp-dmi/v1/ch/ | Scenario : DMI notifies NCMP of new cmhandles Method : POST URI : {ncmp-root}/ncmp-dmi/v1/ch/ Header : Content-Type: application/json
Request Body : { "dmi-plugin" : "onap.dmi.plugin", "createdcmhandles" : [ { "cmhandle" : "rf4er5454", "additionalProperties" : { "subsystemId" : "system-001" } }, {..} ], "updatedcmhandles" : [ .. ], "removedcmhandles" : [ "node-1", "node-2" , ... ] } | 2 | Get all the registered cmhandles for a given plugin | GET | NCMP | {ncmp-root}/ncmp-dmi/v1/dmi-plugins/{plugin-id}/ch | Scenario : Get all cmhandles from NCMP for a given dmi-plugin. May be used for conciliation Method : GET URI : {ncmp-root}/ncmp-dmi/v1/dmi-plugins/{dmi-plugin}/ch Header : Content-Type: application/json
Success Response : HTTP/1.1 200 Ok Date: Thu, 26 Jan 2021 20:56:30 GMT Server: example-server { "cmhandles" : [ { "cmhandle" : "node-1", "additionalProperties" : [ "subSystem" : "system-001" ] } ] } | 3 | Get module set for a cmhandle
| PUTPOST | DMI-Plugin | {dmi-root}/dmi/v1/ch/cmhandle-001/module-sets | Header : Content-Type: application/json
Body : { "operation" : "read", "cmhandle" : "cmhandle-001", "additionalProperties" : ["subSystem" : "subsystem-001"]} Response: { "ietf-yang-library:yang-library" : [ { "module-set" : [ { "name" : "sample-module", "module" : [ { "name" : "_3gpp-nr-nrm-nrsectorcarrier", "revision" : "2020-12-09", "namespace" : "urn:3gpp:sa5:_3gpp-nr-nrm-nrnetwork-nrsectorcarrier", } ... }
| 4 | Get yang module source for a list of modules | POST | DMI-Plugin | {dmi-root}/dmi/v1/ch/<cm-handle>model
DMI PLugin will make multiple requests to xNF and combine the result in a list | Body : { "operation" : "read", "additionalProperties" : ["subSystem" : "subsystem-001"] "modules" : [ { "namespace": "urn:3gpp:sa5:_3gpp-nr-nrm-nrnetwork-nrsectorcarrier", "name": "_3gpp-nr-nrm-nrsectorcarrier", "revision": "2020-12-09" } , { ... } ] }
Response: a list yang module references and source for each
{ [ { "name" : "_3gpp-nr-nrm-nrsectorcarrier", "revision" : "2020-12-09", "namespace": "urn:3gpp:sa5:_3gpp-nr-nrm-nrnetwork-nrsectorcarrier", "name": "_3gpp-nr-nrm-nrsectorcarrier", "revision": "2020-12-09" }, "yang-source": "module pnf-sw-upgrade {\n namespace \"http://onap.org/pnf-sw-upgrade\";\n prefix upgrade;\n\n import ietf-yang-types {\n prefix yang;\n } \n\n revision 2019-12-03 {\n description\n \"initial version\";\n }\n\n container software-upgrade {\n list upgrade-package {\n key \"id\";\n leaf id {\n type string;\n } \n\n leaf current-status {\n type enumeration {\n enum \"CREATED\";\n enum \"INITIALIZED\";\n enum \"DOWNLOAD_IN_PROGRESS\";\n enum \"DOWNLOAD_COMPLETED\";\n enum \"ACTIVATION_IN_PROGRESS\";\n enum \"ACTIVATION_COMPLETED\";\n }\n description\n \"List of possible states of the upgrade\";\n }\n\n leaf state-change-time {\n type yang:date-and-time;\n mandatory false;\n description\n \"Date and time of the last state change.\";\n }\n\n leaf action {\n type enumeration {\n enum \"NONE\";\n enum \"PRE_CHECK\";\n enum \"DOWNLOAD_NE_SW\";\n enum \"ACTIVATE_NE_SW\";\n enum \"CANCEL\";\n }\n mandatory false;\n description\n \"List of possible actions for the upgrade\";\n }\n\n leaf software-version {\n type string;\n description\n \"Possible name or release version of the UP\";\n } \n\n leaf uri {\n type string;\n description\n \"A URI that points to the directory where the UP can be found.\";\n }\n\n leaf user {\n type string;\n description\n \"Indicates the user.\";\n }\n\n leaf password {\n type string;\n description\n \"Indicates the password.\";\n }\n\n leaf user-label {\n type string;\n description\n \"Free-text description of the UP.\";\n }\n\n leaf node-health {\n type string;\n description\n \"Reflect Node Health Status\";\n }\n }\n }\n}" }, {...} ] } |
|
...