Table of Contents |
---|
...
Issue | Notes | Decision | |
---|---|---|---|
1 | How will hostname and port be provided when dmiPlugin register itself and its list of cmHandles with NCMP | The team thinks that the information should instead be provided in the form of a ‘host-name’ and a ‘port’ (there was some debate on service-name v. host-name but it was settled on host-name) e.g. "dmiPlugin" : { <host-name>, <port> } Where the host-name is unique. (the DB might assign an internal unique ID for each entry but that is just for indexing and x-referencing in a relation DB and this ID is not to be used/ exposed externally) | Instead of using ‘host-names’ and ‘ports’ parameters between java applications when in the cloud all we need is ‘service-names’ . The mapping of service-names to hosts and ports is done as part of the cloud configuration, in our case Kubernetes. And these are dynamic! The client application can then use a simple dns-lookup to connect to an instance of the service. Using service names also allows any plugin to use implement scaling as they see fit e.g. partitioning |
2 | Additional information in request body duplicates cmHandleId this is redundant information | Suggested to remove from request body to avoid possible error scenarios. | Only the one with the additionalInformation is needed and remove body |
3 | No need for Sync method, this is basic standard read operation at the root level for that cmHandle | ||
4 | Use include 'location' property when request yang-module sources | Suggestion: do include it in the request but allow dmiPlugin to decide to use it or now. Location (this leaf is called schema in older RFC7895) is not mandatory to support in YANG library and nodes may not include it. Another alternative presumably used also by ODL itself is the <get-schema> RPC. The key difference is that the YANG module definition is sent directly over the NETCONF channel, not requiring separate file servers and clients. So this is maybe one more reason that the ONAP DMI plugin currently doesn’t need the location attribute. | Location is not needed for any plugin and could only lead to ambiguity therefore will NOT be included in this request |
DMI URI
DMI URI format to follow below pattern Sandeep Shah
<OP>dmi/<vBelow table shows the proposed interface, actual implementation might deviate from this but can be accessed from
- Gerrit Source
- Read-the-docs: https://docs.onap.org/projects/onap-cps-ncmp-dmi-plugin/en/latest/design.html
DMI URI format to follow below pattern
<OP>dmi/<v{vNumber}>/ch/<cmHandle>/<data|operations|dmiAction>/ds/<datastore>/[rp:]<resourcePath>?<query>
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ “operation”: “<operation>”, // Valid operations are: “create”, “read”, “update” and “delete”. // For update, replace and patch is distinguished by the HTTP method (PUT or PATCH). "dataType": "<dataType>", “data”: { // Embedded data as a String. <data> // required for create and update operations. Optional filter-data for read-operations }, “cmHandleProperties”: { // Additional properties for CM handle previously added by DMI plugin and stored in NCMP. <properties> } } |
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Usecase | REST Method | URI | 1 | Add a data resource for a cmHandle | POST | {dmiRoot}/dmi/v1/ch/<cmhandle>/data/ds/ncmp-
Usecase | REST Method | URI | |||||
---|---|---|---|---|---|---|---|
1 | Add a data resource for a cmHandle | POST | {dmiRoot}/dmi/v1/ch/<cmhandle>/data/ds/ncmp-datastore:running/{parentDataResourceIdentifier} { Content-Type: application/json "data" payload : yang-data+json | ||||
2 | Delete a data resource for a cmHandle | PUT | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/ncmp-datastore:running/{resourceIdentifier} | ||||
3 | Patch a data resource for a cmHandle | PATCH | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/ncmp-datastore:running/{resourceIdentifier} { Content-Type: application/json "data" payload : yang-data+json | ||||
4 | Patch multiple child resources for a single cmHandle | PATCH | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/<dsName>/{resourceIdentifier} Content-Type: application/json "data" payload : yang-patch+json | ||||
5 | Execute a yang action on a cmhandle instance | POST | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/ncmp-datastore:operational/{resourceIdentifier}/{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 | {dmiRoot}/dmi/v1/operations/ch/<cmHandle>/ds/ncmp-datastore:operational/ {module-name}:{action} { input: { 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/ch/<cmHandle>/data/ds/ncmp-datastore:operational/{resourceIdentifier}?fields={fields-expression}
| ||||
8 | Read data resources with specified fields under a given data resource for a given cmHandle | PUT | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/ncmp-datastore:operational/{resourceIdentifier}?fields={fields-expression}
| ||||
9 | Get data resource with 'fileds' for a cmhandle with a given scope condition | PUT | {dmiRoot}/dmi/v1/ch/{cmHandle}/data/ds/ncmp-datastore:operational/{resourcepath}?fields={fields}&scope={scope} | ||||
10 | Read descendant nodes to a given depth for a given cmHandle | PUT | {dmiRoot}/dmi/v1/ch/{cmHandle}/data/ds/ncmp-datastore:operational/{resourceIdentifier}?depth={level}
| ||||
11 | Replace data for a CMHandle | PUT | {dmiRoot}/dmi/v1/ch/<cmHandle>/data/ds/ncmp-datastore:running/{resourceIdentifier} {data : { .... the complete tree config to be replaced }} |
...
View file | ||||
---|---|---|---|---|
|
Expand | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||
Below table shows the proposed interface, actual implementation might deviate from this but can be accessed from
*For response output, where applicable the yang-library format and conventions are used 'as is' or extended
|
...