- CPS-390Getting issue details... STATUS
DMI URI
DMI URI format to follow below pattern Sandeep Shah
<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> |
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