...
Restconf Notification
This is the Route/LinkId sttatus Termination Point (TP) / Route status notification example from SOTN Controller to Restconf data collector, where "eventTime", "tp-id" and "oper-status" will be used in downstream logic.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
"ietf-restconf:notification": { "eventTime": "2018-07-28T09:15:03.924Z", "ietf-yang-push:push-change-update": { "subscription-id": 1, "datastore-changes": { "ietf-yang-patch:yang-patch": { "patch-id": "d1d08ce8-b24d-4efb-a0e7-7b835642f2f1", "edit": [ { "edit-id": "0", "operation": "merge", "target": "/network=providerId%2F5555%2FclientId%2F6666%2FtopologyId%2F11/node=example-node/ietf-network-topology:termination-point=14", "value": { "ietf-network-topology:termination-point": [ { "supporting-termination-point": [ { "network-ref": "providerId/5555/clientId/6666/topologyId/33", "node-ref": "node-ref-example", "tp-ref": "33488898" } ], "ietf-eth-te-topology:svc": { "client-facing": "true", "supported-classification": { "transparent": "true" } }, "ietf-te-topology:te": { "admin-status": "up", "interface-switching-capability": [ { "encoding": "lsp-encoding-ethernet", "max-lsp-bandwidth": [ { "priority": "7", "te-bandwidth": { "ietf-eth-te-topology:eth-bandwidth": "1000000" } } ], "switching-capability": "switching-l2sc" } ], "oper-status": "updown", "inter-domain-plug-id": "51000" }, "ietf-te-topology:te-tp-id": "1", "tp-id": "11234" } ] } } ] } } } } |
Route Alarm Message
This is the message definition at output of Restconf collector to DMAAP with topic of adds one attribute, "notify_oid", to the above JSON data, and publishes it to DMAAP topic RESTCONF_ALARM_TOPIC.
...
language | text |
---|---|
title | Restconf Collector Output (JSON) |
collapse | true |
...
This added attribute is used by Universal VES Adapter (Mapper) to identify that this JSON data is from Restconf.
Questions (To be answered):
- Universal VES Adapter reads all data from a single DMaaP topic, which is specified in / UniversalVesAdapter / src / main / resources / application.properties and defined in / UniversalVesAdapter / src / main / resources / dme2 / consumer.properties. We should publish Restconf data to the general topic, instead of a specific one, RESTCONF_ALARM_TOPIC.
- If we do publish the data to a Restconf specific topic, Mapper should be tell that the data is from Restconf, and we do not need to add this "notify_oid" attribute.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "notify_oid" : "example-mappingfile-id.x.1", "ietf-restconf:notification": { "eventTime": "2018-07-28T09:15:03.924Z", "ietf-yang-push:push-change-update": { "subscription-id": 1, "datastore-changes": { "ietf-yang-patch:yang-patch": { "patch-id": "d1d08ce8-b24d-4efb-a0e7-7b835642f2f1", "edit": [ { "edit-id": "0", "operation": "merge", "target": "/network=providerId%2F5555%2FclientId%2F6666%2FtopologyId%2F11/node=example-node/ietf-network-topology:termination-point=14", "value": { "ietf-network-restconftopology:notificationtermination-point": [ { "eventTime": "2018-07-28T09:15:03.924Z", "ietfsupporting-yang-push:push-change-update": { termination-point": [ { "subscription-id": 1, "datastore-changes": { "ietf-yang-patch:yang-patch": {network-ref": "providerId/5555/clientId/6666/topologyId/33", "patch-id": "d1d08ce8-b24d-4efb-a0e7-7b835642f2f1", "editnode-ref": [ "node-ref-example", { "edittp-idref": "033488898", "operation": "merge", } "target": "/network=providerId%2F5555%2FclientId%2F6666%2FtopologyId%2F11/node=example-node/ietf-network-topology:termination-point=14", ], "value": { "ietf-eth-networkte-topology:termination-pointsvc": { [ {"client-facing": "true", "supportingsupported-termination-pointclassification": [{ {"transparent": "true" } "network-ref": "providerId/5555/clientId/6666/topologyId/33", }, "node-ref": "node-ref-example", "ietf-te-topology:te": { "tp-ref": "33488898" "admin-status": "up", } "interface-switching-capability": [ ], { "ietf-eth-te-topology:svc": { "client-facingencoding": "truelsp-encoding-ethernet", "supported-classification "max-lsp-bandwidth": [ { "transparent": "true" { } "priority": "7", }, "ietf-te-topology:tebandwidth": { "admin-status "ietf-eth-te-topology:eth-bandwidth": "up",1000000" "interface-switching-capability": [} { } "encoding": "lsp-encoding-ethernet" ], "max-lsp-bandwidth": [switching-capability": "switching-l2sc" } { ], "priorityoper-status": "7down", "inter-domain-plug-id": "51000" "te-bandwidth": { }, "ietf-eth-te-topology:ethte-tp-bandwidthid": "10000001", "tp-id": "1234" } } ] } } } ], ] "switching-capability": "switching-l2sc"} } } } } } |
Universal VES Adapter (Mapper)
Mapper reads Restconf data from DMaaP topic RESTCONF_ALARM_TOPIC, and uses Smooks to convert it into a standard VES format.
Mapper uses the Restconf2VES.xml to map the Restconf data to VES data. The Restconf2VES.xml could be uploaded to DCAE at the closed loop deployment from DCAE Designer. For now, it will be manually uploaded to the mapper at the closed loop instantiation.
Mapping XML Restconf2VES.xml
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#... ]for illustration, not a working version "oper-status": "up", “varbinds:”: [{ “name”: "inter-domain-plug-id": "51000" }“network-ref”, “value”: "ietf-te-topology:te-tp-id": "1",“$network-ref” "tp-id": "1" }, } { ] “name” : “node-ref", } “value”: } “$node-ref” ] }, } } } } { “name”: |
VES MAPPER
The Restconf2VES.xml could be uploaded to DCAE at the closed loop deployment from DCAE Designer. For now, it will be manually uploaded to the mapper at the closed loop instantiation.
Mapping XML
...
language | text |
---|---|
title | Restconf2VES.xml |
collapse | true |
UVA subscribes RESTCONF_ALARM_TOPIC on DMAAP.
Route Status Alarm
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{“tp-ref”, "event": {“value”:“$tp-ef”, }, "commonEventHeader": { "sourceId": "example-target", // 'target' from the restconf notification. “name”: “te-tp-id”, "startEpochMicrosec": 1413378172000000,“value”: “$te-tp-id” }, "eventId": "ab305d54-85b4-a31b-7db2-fb6b977766", "sequence": 0, "domain": "fault", { "lastEpochMicrosec": 1413378172000033, “name”: “tp-id”, "eventName": "Fault_Route_Status", "sourceName"“value”: "example-target", // 'Target' from the restconf notification.“$tp-id” }, "priority": "High", "version": 3.0, { "reportingEntityName": "Domain_Contorller" “name”: }, “inter-domain-plug-id”, "faultFields": { "eventSeverity"“value”: "CRITICAL", “$inter-domain-plug-id” "alarmCondition": "Route_Down", } "faultFieldsVersion": 2.0, ] "specificProblem": "Fault_SOTN_Service_Status", } |
The following is how the resulted VES event data looks like. The event will be published to DMaaP topic unauthenticated.SEC_FAULT_OUTPUT, to be consumed by Holmes.
VES Event
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "event": { "alarmAdditionalInformationcommonEventHeader": [{ "sourceId": "example-target", // 'target' {from the restconf notification. "namestartEpochMicrosec": "linkId"1413378172000000, "eventId": "ab305d54-85b4-a31b-7db2-fb6b977766", "sequence": 0, "valuedomain": "example-linkIdfault", }"lastEpochMicrosec": 1413378172000033, "eventName": "Fault_Route_Status", { "sourceName": "example-target", // 'Target' from the "name": "nodeId",restconf notification. "priority": "High", "version": 3.0, "valuereportingEntityName": "example-nodeIdDomain_Contorller" }, }, "faultFields": { "eventSeverity": "CRITICAL", { "namealarmCondition": "topologyIdRoute_Down", "faultFieldsVersion": 2.0, "specificProblem": "Fault_SOTN_Service_Status", "valuealarmAdditionalInformation": "example-topologyId" [ }, { "name": "tp-id", "value": "example-tp-id1234" } ] "eventSourceType": "other", "vfStatus": "Active" } } } |
...
DCAE Blueprints
The initial/default configuration of restconf collector and Holmes are specified in the following micro-service blueprints.
...