Requirements
- Entity with unique name
- contains properties
- filterable (logical and between properties), pagable(size: 10, 20, 50, 100), sortable (multiple properties,ascending, descending, default)
- properties have unique names per entity (not translated - will be translated through seperate service if neccessary)
- CRUD (Create, Read, Update, Delete)-functionalities
- auth required, token based (has to be optimized - maybe independent from odl)
- export function
- additional result information:
- page number (1..n, if requested page>n page=n)
- page size (number of current filtered elements)
- result size (number of all elements for filter)
- payload: JSON (no '-' for properties, entities)
- yang spec !
- Language
- Localization
- change events via websocket (needs subscription for this entity)
Further points&questions:
Entities:
- NetworkElementConnection (filter: isRequired:boolean, connectionState: enum<string>)
- NetworkElementConnectionLog
NetworkElementConfiguration(only proxy for restconf) → implemented in APIGateway- FaultCurrent
- FaultLog
- (Log)
- PMData15m
- PMData24h
- MediatorServer
- Inventory
- Maintenance
- Status
Request-Url:
POST /restconf/operations/data-provider:{lowercase(REQ_METHOD)}-{entity}[-list]
e.g.:
POST /restconf/operations/data-provider:read-mediator-server-list POST /restconf/operations/data-provider:create-mediator-server POST /restconf/operations/data-provider:update-mediator-server POST /restconf/operations/data-provider:delete-mediator-server
for default request-methods:
CREATE, READ, UPDATE, DELETE
Filter-Object:
{ "input":{ "filter":[{ "property":"<property-name>", "filtervalue":"<filter-string>" }], "sortorder":[{ "property":"<property-name", "sortorder":"ascending|descending" } ], "pagination":{ "size":20, "page":1 } } }
Request Entity-Example:
POST /restconf/operations/data-provider:get-entity { "input":{ "filter":[], "sortorder":[], "pagination":{ "size":20, "page":1 } } } Response: { "output": { "page": 1, "totalSize": 3, "data": [ { "_id": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded", "nodeName": "Sim2230", "counter": "2", "timeStamp": "2017-01-01T01:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }, { "_id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded", "nodeName": "Sim2231", "counter": "3", "timeStamp": "2017-01-01T02:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }, { "_id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost", "nodeName": "Sim2230", "counter": "4", "timeStamp": "2017-01-01T03:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "signalLost", "severity": "Major", "type": "ProblemNotificationXml" } ] } }
POST /restconf/operations/data-provider:get-entity { "entity":"fault", "filter":[], "sortorder":[{ "property":"timeStamp", "sortorder":"descending" }, { "property":"nodeName", "sortorder":"ascending" }], "pagination":{ "size":20, "page":1 } } Response: { "page": 1, "totalSize": 3, "data": [ { "_id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost", "nodeName": "Sim2230", "counter": "4", "timeStamp": "2017-01-01T03:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "signalLost", "severity": "Major", "type": "ProblemNotificationXml" }, { "_id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded", "nodeName": "Sim2231", "counter": "3", "timeStamp": "2017-01-01T02:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }, { "_id": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded", "nodeName": "Sim2230", "counter": "2", "timeStamp": "2017-01-01T01:00:00.0Z", "objectId": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" } ] }
Table Screenshot Examples
Table footer
Fault
Log