Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
DMI URI
DMI URI format to follow below pattern
<OP> dmi/ <v{v-number}> / <data|operations|dmi-action> / ch /<cmHandle> /ds/{datastore} / [rp:]<resource-path> ?<query>
<OP> | mandatory | the HTTP method |
dmi | mandatory | the dmi root resource |
<v{v-number}> | mandatory | version of the dmi interface is the target resource URI is the query parameter list |
<data|operations|dmi-action> | mandatory | yang data, rpc operation or a (non-modelled) ncmp api action |
<cmHandle> | mandatory | unique (string) identifier of a yang tree instance. |
{datastore} | optional | optional datastore |
<resource-path> | optional | 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. |
<query> | optional | 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 |
Datastore
If datastore (ds/{datastore}) is not included in the URL then the request is defaulted to ncmp-datastore:running/operational.
If the cmhandle metadata indicates that data is not synched in CPS then the request is forwarded to the dmi-plugin
RESTCONF/NETCONF relationship
Usecase | REST Method | URI | Example | |
---|---|---|---|---|
1 | Add a data resource |
for a cmHandle | POST | dmi-root}/dmi/v1/data/ch/<cm-handle>/{parent-data-resource-identifier} { <new-yang-data-resource> } Content-Type: application/json "data" payload : yang-data+json | |
2 | Delete a data |
resource for a |
cmHandle | PUT | {dmiroot}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} | |
3 | Patch a data |
resource for a |
cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} { Content-Type: application/json "data" payload : yang-data+json | |
4 |
Patch multiple child |
resources for a |
single cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} Content-Type: application/json "data" payload : yang-patch+json | |
5 | Execute a yang |
action on a |
cmhandle instance | POST | dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier}/{action} input: { Note : If the "action" statement has no "input" section, the request message MUST NOT include a message-body | |
6 | Execute an rpc |
operation | POST | {dmi-root}/dmi/v1/operations/ch/<cm-handle>/ {module-name}:{action} { Note : If there is no "input" section, the request MUST NOT include a message-body | |
7 | Read a filtered set |
of data under |
a data resource for |
a cmHandle | PUT | dmiroot}/dmi/v1/data/ch/<cm-handle>/{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>/{resource-identifier}?fields={fields-expression}
| ||||||
9 | Get data resource with 'fileds' for a cmhandle with a given scope condition | PUT | {dmi-root}/dmi/v1/data/ch/{cm-handle}/{resourcepath}?fields={fields}&scope={scope} | |||||
10 | Read descendant nodes to a given depth for a given cmHandle | PUT | {dmi-root}/dmi/v1/data/ch/{cm-handle}/{resource-identifier}?depth={level}
| |||||
11 | Replace data for a CMHandle | PUT | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} { data : { .... the complete tree config to be replaced } } |
DMI Inventory
Use Case | Rest Method | URI | Example | |
---|---|---|---|---|
1 | DMI registers a new data source with NCMP | POST | {ncmp-root}/ncmp/v1/dmi-plugin/ dmi-plugin-id should be resolvable service name ink8s DNS | |
2 | Delete a data source from NCMP DMI Plugin NCMP | DELETE | {ncmp-root}/ncmp/v1/dmi-pluigin/ { dmi-plugin-id}/dmi-source/ { unique-data-source-id } | |
3 | NCMP requests cmhandles for a datasource (may be refresh of existing datasource or for a newly registered datasource) NCMP DMI plugin | GET | {dmi-root}/v1/dmi-source/{unique-data-source-id}?topic={topic-id}
Note - the following will refresh ALL dmi data sources managed by a dmi plugin | |
4 | Notify of change to CMHandle(s) | Topic : 'NCMP_INVENTORY' / sync request topic Topic name should come from Data Catalog OR should DMI registry store the topic from the initialNCMP sync request?) |
Use Case | Rest Method | URI | Example | ||||
---|---|---|---|---|---|---|---|
1 | Get model (module set) for cmhandles | PUT | {dmi-root}/dmi/v1/model/ch/<cm-handle> | 12 | 13 | 14
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
...