ODLUX DB API

ODLUX DB API

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)

  • Term "Mountpoint" code consolidation

    • Server: The terms "mountpoint", "mountpoint-id" (different writings)  and "node-name" will be consolidated and replaced by the single term "node-id" in the code and in the database types.

    • ODLUX Apps: There are different names used for the same id. Should be consolidated to "Nodename"

  • Filter specification according to UX-Framework Tablefilter

Further points&questions:   

Entities: 

  • NetworkElementConnection (filter: isRequired:boolean, connectionState: enum<string>)

    • connection-state=enum("connected","mounted","unmounted","connecting","disconnected",("idle"))

  • 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: (See UX-Framework Tablefilter)

Each answer contains "output" to specify the request related to the table behind:

"output": { "pagination":{      "size":20, <-- Number of requested objects "page":1, <-- Page delivered back "total": 3 <-- Total number of Objects in overall list       }, { <-- List of objects on this page. Number of objects are the really available one's on this page. Could be less requested.

Request Entity-Example:

POST /restconf/operations/data-provider:read-faultcurrent-list { "input":{ "filter":[], "sortorder":[], "pagination":{ "size":20, "page":1 } } } Response: { "output": { "pagination":{      "size":20,      "page":1, "total": 3       }, "data": [ { "id": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded", "node-id": "Sim2230", "counter": "2", "timestamp": "2017-01-01T01:00:00.0Z", "object-id": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }, { "id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded", "node-id": "Sim2231", "counter": "3", "timestamp": "2017-01-01T02:00:00.0Z", "object-id": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }, { "id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost", "node-id": "Sim2230", "counter": "4", "timestamp": "2017-01-01T03:00:00.0Z", "object-id": "LP-MWPS-TTP-RADIO", "problem": "signalLost", "severity": "Major", "type": "ProblemNotificationXml" } ] } }



POST /restconf/operations/data-provider:read-faultcurrent-list { "filter":[], "sortorder":[{ "property":"timeStamp", "sortorder":"descending" }, { "property":"nodeName", "sortorder":"ascending" }], "pagination":{ "size":20, "page":1 } } Response: { "pagination":{      "size":20,      "page":1, "total": 3       }, "data": [ { "id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost", "node-id": "Sim2230", "counter": "4", "timestamp": "2017-01-01T03:00:00.0Z", "object-id": "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", "object-id": "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", "object-id": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" } ] }



Entities

NetworkElementConnection (network-element-connection)

{ "id": "safnoincaosnf", "node-id": "sim2", "host": "10.20.5.2", "port": 12600, "status": "connected", "core-model-capability":"2017-03-20", "device-type":"wireless transport", "is-required":true, "node-details": { "available-capabilites": [ { "capability-origin": "device-advertised", "capability": "urn:ietf:params:netconf:base:1.0" } ], "unavailable-capabilities": [ { "capability": "(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system", "failure-reason": "unable-to-resolve" } ] } }



create: (create-network-element-connection)

POST /restconf/operations/data-provider:create-network-element-connection { "input": { "node-id": "sim2", "host": "10.20.5.2", "port": 12600, "username":"user", "password":"password", "is-required":true } }

ConnectionLog (connectionlog)

{ "id":"AW0kpBcp8r4e_0bbEEpk", "node-id":"sim1", "status":"connected", "timestamp":"2019-09-12T08:43:16.6Z" }

FaultCurrent (faultcurrent)

{ "id": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded", "node-id": "Sim2230", "counter": "2", "timestamp": "2017-01-01T01:00:00.0Z", "object-id": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }

FaultLog (faultlog)

{ "id": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded", "node-id": "Sim2230", "counter": "2", "timestamp": "2017-01-01T01:00:00.0Z", "object-id": "LP-MWPS-TTP-RADIO", "problem": "rslIsExceeded", "severity": "Critical", "type": "ProblemNotificationXml" }

PMData15m (pmdata-15m)

PMData24h (pmdata-24h)

MediatorServer (mediator-server)

read (read-mediator-server-list)

(POST /restconf/operations/data-provider:read-mediator-server-list)

{ "input":{ "id":"safasfnoiinf_ubdazgf", "url":"https://10.45.44.223:7590", "name":"test mediator server" } }
create (create-mediator-server)

POST /restconf/operations/data-provider:create-mediator-server

{ "input":{ "url":"https://10.45.44.223:7590", "name":"test mediator server" } }
delete (delete-mediator-server)

POST /restconf/operations/data-provider:delete-mediator-server

{ "input":{ "id":"safasfnoiinf_ubdazgf" } }
update: (update-mediator-server)

POST /restconf/operations/data-provider:update-mediator-server

{ "input":{ "id":"safasfnoiinf_ubdazgf", "url":"https://10.45.44.223:7590", "name":"test mediator server" } }

Inventory (inventory)

{ "id":"uadnaisd_sadfniv", "tree-level": 1, "parent-uuid": "SHELF-1.1.0.0", "node-id": "sim2", "uuid": "CARD-1.1.8.0", "contained-holder": [ ], "manufacturer-name": null, "manufacturer-identifier": "ONF-Wireless-Transport", "serial": "sd-dsa-eqw", "date": "2008-10-21T00:00:00.0Z", "version": "unknown", "description": "WS/DS3", "part-type-id": "unknown", "model-identifier": "model-id-s3s", "type-name": "p4.module" }

Maintenance (maintenance)

{ "id":"sim2", "node-id": "sim2", "object-id-ref": "", "problem": "" "description": "", "start": "2008-10-21T00:00:00.0Z", "end": "2008-10-21T00:00:00.0Z", "active": false }

Status 

{ "faults":{ "critical":5, "major":0, "minor",0, "warnings:3 } }

Architecture





Table Screenshot Examples

Table footer

Fault



Log





Language (deferred)

things to translate:

  • table-header

  • header

  • menu-title

  • inline text



/GET /lang /GET /lang/{lang-code}/entity/{entity-name} /GET /lang/{lang-code}/app/{app-name}



lang-code examples:

  • en-US

  • de-DE

  • de-AT

  • fr-FR

key-spec: 

  • only uppercase + underscore

  • not too long

  • single words and complete sentences

{ "ROWS_PER_PAGE":"Rows per page", "ERROR_MSG_SERVER_UNREACHABLE":"The server is currently unreachable", "CURRENT_PAGE_RANGE_FORMAT":"{1}-{2} of {3}" }