Versions Compared

Key

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

...

  • 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>)
  • NetworkElementConfiguration (only proxy for restconf) → implemented in APIGateway
  • FaultCurrent
  • FualtLog
  • (Log)
  • PMData
  • MediatorServer
  • Inventory
  • Maintenance
  • Status

Request-Url:

Code Block
POST /restconf/operations/data-provider:{lowercase(REQ_METHOD)}-{entity}[-list]

e.g.:

Code Block
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:

Code Block
languagejs
{
  "filter":[{
     “property":"<property-name>",
     "filtervalue":"<filter-string>"
  }],
  "sortorder":[{
      "property":"<property-name",
      "sortorder":"ascending|descending"
    }
  ],
  "pagination":{
     "size":20,
     "page":1     
  }
}

Request Entity-Example:

  • 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:

Code Block
POST /restconf/operations/data-provider:{lowercase(REQ_METHOD)}-{entity}[-list]

e.g.:

Code Block
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:

Code Block
"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:

Code Block
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": [
        {
Code Block
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",
            "objectIdid": "Sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded",
            "problemnode-id": "rslIsExceededSim2230",
            "severitycounter": "Critical2",
            "typetimestamp": "ProblemNotificationXml"
        }2017-01-01T01:00:00.0Z",
        {
            "_"object-id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded",
            "nodeNameproblem": "Sim2231rslIsExceeded",
            "counterseverity": "3Critical",
            "timeStamptype": "2017-01-01T02:00:00.0Z",
ProblemNotificationXml"
        },
     "objectId": "   {
            "id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded",
            "problemnode-id": "rslIsExceededSim2231",
            "severitycounter": "Critical3",
            "typetimestamp": "ProblemNotificationXml"
 2017-01-01T02:00:00.0Z",
       },
        {
            "_"object-id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost",
            "nodeNameproblem": "Sim2230rslIsExceeded",
            "counterseverity": "4Critical",
            "timeStamptype": "2017-01-01T03:00:00.0Z",
ProblemNotificationXml"
        },
       "objectId": " {
            "id": "Sim2230/LP-MWPS-TTP-RADIO/signalLost",
            "problemnode-id": "signalLostSim2230",
            "severitycounter": "Major4",
            "typetimestamp": "ProblemNotificationXml"2017-01-01T03:00:00.0Z",
        }
    ]
  }
}
Code Block
POST /restconf/operations/data-provider:get-entity
{
  "entity":"fault",
  "filter":[],
  "sortorder":[{
"object-id": "LP-MWPS-TTP-RADIO",
            "propertyproblem": "timeStampsignalLost",
     "sortorder       "severity": "descendingMajor",
   },
   { 
     "propertytype":"nodeName",
     "sortorder":"ascendingProblemNotificationXml"
  }],
  "pagination":{
    "size":20,}
    "page":1]
  }
}


Code Block
POST /restconf/operations/data-provider:read-faultcurrent-list

Response:

{
  "filter":[],
  "pagesortorder":[{
 1,
    "totalSizeproperty": 3"timeStamp",
     "datasortorder": ["descending"
   },
   { 
 {
            "_idproperty": "Sim2230/LP-MWPS-TTP-RADIO/signalLost"nodeName",
            "nodeNamesortorder": "Sim2230ascending",
  }],
  "pagination":{
    "size":20,
    "counterpage": "4",1
  }
}

Response:

{
    "pagination":{
       "size":20,
       "timeStamppage": "2017-01-01T03:00:00.0Z"1,
	   "total": 3    
     },
    "objectIddata": "LP-MWPS-TTP-RADIO", [
        {
            "problemid": "Sim2230/LP-MWPS-TTP-RADIO/signalLost",
            "severitynode-id": "MajorSim2230",
            "typecounter": "ProblemNotificationXml4",
        },
        {"timestamp": "2017-01-01T03:00:00.0Z",
            "_object-id": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded",
            "nodeNameproblem": "Sim2231signalLost",
            "counterseverity": "3Major",
            "timeStamptype": "2017-01-01T02:00:00.0Z",
ProblemNotificationXml"
        },
       "objectId": "LP-MWPS-TTP-RADIO", {
            "problemid": "Sim2231/LP-MWPS-TTP-RADIO/rslIsExceeded",
            "severitynodeName": "CriticalSim2231",
            "typecounter": "ProblemNotificationXml3",
        },
        {"timestamp": "2017-01-01T02:00:00.0Z",
            "_object-id": "Sim2230/LP-MWPS-TTP-RADIO/",
            "problem": "rslIsExceeded",
            "nodeNameseverity": "Sim2230Critical",
            "countertype": "2"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)

Code Block
{
    "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)

Code Block
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)

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

FaultCurrent (faultcurrent)

Code Block
{
	"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)

Code Block
{
	"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)

Code Block

PMData24h (pmdata-24h)

Code Block

MediatorServer (mediator-server)

read (read-mediator-server-list)

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

Code Block

{	
	"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

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

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

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

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

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

Inventory (inventory)

Code Block
{
	"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)

Code Block
{
	"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 

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

Architecture

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameWeb Client interfaces
simpleViewerfalse
width
diagramWidth531
revision1

PlantUML Macro
@startuml
autonumber 

title Odlux Client Web server communication, remove item

actor "Web client" as Cl
entity Server as Server
entity "Elasticsearch Api" as EsCl
control "Elasticsearch Database" as EsDb
' control "Mountpoint register service" as MRS
' entity "SDN-Controller" as SDNC

Cl->Server: remove mountpoint
Server->EsCl: DEL from database
EsCl->EsDb: Start DEL within DB
EsCl->Server: 200 OK
Server->Cl: 200 OK
EsDb->EsDb: Finish DEL task

'CA->CA: create trusted certificate <b>trusted-ca</b>
'SDNC->SDNC: generate  <b>controller-private-key</b>
'SDNC->CA: certificate signign request
'CA-->SDNC: return <b>controller-cert</b>\nreturn <b>trusted-ca</b>
'group netconf-keystore 
'SDNC->SDNC: <b>add-keystore-entry(controller-private-key)</b>
'SDNC->SDNC: <b>add-private-key(controller-private-key, controller-cert)</b>
'SDNC->SDNC: <b>add-trusted-certificate(trusted-ca)</b>



Table Screenshot Examples

Table footer

Image Added

Fault


Image Added

Log

Image Added



Language (deferred)

things to translate:

  • table-header
  • header
  • menu-title
  • inline text


Code Block
/GET   "timeStamp": "2017-01-01T01:00:00.0Z",
            "objectId": "LP-MWPS-TTP-RADIO",
            "problem": "rslIsExceeded",
            "severity": "Critical",
            "type": "ProblemNotificationXml"
        }
    ]
}

Table Screenshot Examples

Table footer

Image Removed

Fault

Image Removed

Log

/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
Code Block
{
  "ROWS_PER_PAGE":"Rows per page",
  "ERROR_MSG_SERVER_UNREACHABLE":"The server is currently unreachable",
  "CURRENT_PAGE_RANGE_FORMAT":"{1}-{2} of {3}"

}

...