Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

DMI URI format to follow below pattern 

<OP> dmi<OP>dmi/<v{v-number}>/<data|operations|dmi-action>/ch/<cmHandle>  <cmHandle>/ds/{datastore}/[rp:]<resource-path>?<query>

...


UsecaseREST MethodURIExample
1Add a data resource for a cmHandlePOST

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


2Delete a data resource for a cmHandlePUT{dmiroot}/dmi/v1/data/ch/<cm-handle>/{resource-identifier}
3Patch a data resource for a cmHandlePATCH

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

{
<yang-data-for-merging>
}

Content-Type: application/json

"data" payload : yang-data+json


4Patch multiple child resources for a single cmHandlePATCH

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


Content-Type: application/json

"data" payload : yang-patch+json


5Execute a yang action on a cmhandle instancePOST

dmi-root}/dmi/v1/data/ch/<cm-handle>/{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


6Execute an rpc operationPOST

{dmi-root}/dmi/v1/operations/ch/<cm-handle>/ {module-name}:{action}

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

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


7Read a filtered set of data under a data resource for a cmHandlePUT

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

OptionDescription
fieldsRequest a subset of the target
resource contents



8Read data resources with specified fields under a given data resource for a given cmHandlePUT

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


OptionDescription
fieldsRequest a subset of the target
resource contents



9Get data resource with 'fileds' for a cmhandle with a given scope conditionPUT{dmi-root}/dmi/v1/data/ch/{cm-handle}/{resourcepath}?fields={fields}&scope={scope}
10Read descendant nodes to a given depth for a given cmHandlePUT

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


OptionDescription
depthRequest 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



11Replace data for a CMHandlePUT

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

{

   data : {

            .... the complete tree config to be replaced

           }

}



DMI Inventory



Use CaseRest MethodURIExample
1DMI registers a new data source with NCMP POST

{ncmp-root}/ncmp/v1/dmi-plugin/
{
    "dmi-plugin-id : { dmi-plugin-id }
     "dmi-source-id" : { unique-data-source-id }
}


dmi-plugin-id should be resolvable service name ink8s DNS


2Delete a data source from NCMP DMI Plugin NCMPDELETE{ncmp-root}/ncmp/v1/dmi-pluigin/ { dmi-plugin-id}/dmi-source/ { unique-data-source-id }
3NCMP 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}


Content-Type: application/json

Note - the following will refresh ALL dmi data sources managed by a dmi plugin
{dmi-root}/v1/dmi-source?topic={topic-id}


4Notify 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?)

Model API



Use CaseRest MethodURIExample
1Get model (module
set) for cmhandles
PUT

{dmi-root}/dmi/v1/model/ch/<cm-handle>


GET Request with body


The HTTP libraries of certain languages (notably JavaScript) don’t allow GET requests to have a request body. In fact, some users are surprised that GET requests are ever allowed to have a body.

...