You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »



Introduction

This is considered as an extension of MDONS use case from ONAP Frankfurt release.

Key Summary T Created Updated Due Assignee Reporter P Status Resolution
Loading...
Refresh

Business Value

Design & Implementation

The scope of code change will be very limited with the existing capability at ONAP CLAMP, DCAE and POLICY components. Given the fact that FNC Virtuora MSA support has already delivered

L0/L1 alarms and PM data in VES (CEDM) (7.0 version) format. However, those delivered through TAPI APIs are retrieved from FPM server and converted into TAPI standard in Json format.

HLD

Close Loop Diagram in MDONS

MDONS Closed Loop Flow  Diagram

  1. SDC/DCAEMOD/Policy Portal design and activate policy.
  2. Policy config and activate the policy.
  3. SDC/DCAEMOD distribute the DCAE config.
  4. SDC/DCAEMOD/HOMES UI distribute the alarm correlation rules to Holmes.
  5. 3rd party domain controllers report link down alarm to DCAE
  6. DCAE will do data cleaning and filtering for the alarms
  7. DCAE keep track the data.
  8. Holmes do analysis for the alarms.
  9. Holmes notify the reroute event.
  10. Policy matching the reroute rules.
  11. Policy call SO or SDNC to delete the old services and create the new services. For the creation flow, a variable route will be recalculated.

Domain Controller APIs

MSA

MSA SPIs
 


TAPI

TAPI APIs
 


DCAE

Data Collection Diagram

RestConf Collector (RCC)

In MDONS use case, prior to subscribing to topics to get event notifications. We manually register 'DCAE' in the domain controller (DC). Once registration is successful, system can subscribe to different topics of DC to get event notification. It is mandatory to pass 'notification URL' to DC so that when event occurs it posts notification to that URL.

Alarm Notification
  • TAPI Alarm Notification[TAPI format]
TAPI Alarm Notification
{
  "notification": [
    {
      "notification-type": "ALARM_EVENT",
      "target-object-name": [
        {
          "value-name": "node-id",
          "value": "S100-NODE2"
        },
        {
          "value-name": "entity-type",
          "value": "slot"
        },
        {
          "value-name": "entity-id",
          "value": "Slot-1/4"
        }
      ],
      "source-indicator": "RESOURCE_OPERATION",
      "uuid": "76234954-30a2-11e9-a785-dd6c51454c4e",
      "event-time-stamp": "20190208220426.3Z",
      "additional-text": "Equipment Removed:Type=PIS1-PG31",
      "alarm-info": {
        "service-affecting": "SERVICE_AFFECTING",
        "probable-cause": "al-types:equipmentRemoved",
        "is-transient": false,
        "pervceived-severity": "CRITICAL"
      },
      "additional-info": [
        {
          "value-name": "location",
          "value": "NEND"
        },
        {
          "value-name": "direction",
          "value": "NA"
        }
      ],
      "target-object-identifier": "S100-NODE2:slot:Slot-1/4",
      "name": [
        {
          "value-name": "alarm-id",
          "value": "S100-NODE2slotal-types:equipmentRemovedSlot-1/4NANEND"
        }
      ]
    },
     
     ...
     ... 
  ]
}

  • OpenRoadM Alarm Notification[VES format]
MSA Alarm Notification
{
"event": {
"commonEventHeader": {
"sourceId": "owb-rdm-003",
"startEpochMicrosec": 1469528413000,
"eventId": "owb-rdm-003 1",
"reportingEntityId": "127.0.1.1",
"eventType": "fault_owb-rdm-003_lossOfSignal",
"priority": "High",
"version": 1.0,
"reportingEntityName": "agilevm",
"sequence": 0,
"domain": "fault",
"functionalRole": "rdm",
"lastEpochMicrosec": 1469528413000,
"sourceName": "owb-rdm-003"
},
"faultFields": {
"eventSeverity": "CRITICAL",
"alarmCondition": "lossOfSignal",
"faultFieldsVersion": 1.0,
"specificProblem": "lossOfSignal",
"alarmInterfaceA": "oms-1/0/0/E1",
"alarmAdditionalInformation": [
{
"name": "direction",
"value": "rx"
},
{
"name": “location",
"value": "NEND"
},
{
"name": "type",
"value": "communication"
},
{
"name": "circuit-id",
"value": "100 OMS DLLSTXRIS50 DLLSTXTAW10"
},
{
"name": "additional-detail",
"value": "sample detail"
},
{
"name": "corrective-action",
"value": "sample action"
}
],
"eventSourceType": "interface",
"vfStatus": "Active"
}
}
}

Since MSA notification is already in VES format, it could be posted directly on to DMAAP with relevant topic to be consumed by Hulmes directly. If RCC does not support such configuration, then a 1n1 attribute mirroring mapping xml file need to be designed to feed the data into the existing flow. Thus, VES Mapper plays the role of VES event validation as it is required functionality in VES collector.

MS Blueprint

This is the RCC blueprint which defines the initial configuration for alarm collection in MDONS close loop. RCC supports multiple DC connections.

configuration parameters
rcc_policy:

rcc_policy: '[{"controller_name":"VirtuoraNC","controller_restapiUrl":"167.254.204.181:8443","controller_restapiUser":"admin","controller_restapiPassword":"admin","controller_accessTokenUrl":"/rest/plat/smapp/v1/oauth/token","controller_accessTokenFile":"./etc/access-token.json","controller_accessTokenMethod":"put","controller_subsMethod":"post","controller_subscriptionUrl":"/cxf/subscriptions","controller_disableSsl":"true","event_details":[{"event_name":"MSA_Alarm_Subscription","event_description":"AlarmEvent","event_sseventUrlEmbed":"false","event_sseventsField":"null","event_sseventsUrl":"null","event_subscriptionTemplate":"./etc/MSA_Alarm_Subscription_template.json","event_unSubscriptionTemplate":"./etc/MSA_Alarm_Unsubscription_template.json","modifyData": "true","modifyMethod": "modifyMSAEvent"]}]'

RCC_Output Event

This event is the output to be posted on Dmaap by RCC and will be consumed by VES Mapper.

RCC Event
{
 "tapi-notifyid":"example-mappingfile-id.x.1",

  "notification": [
    {
      "notification-type": "ALARM_EVENT",
      "target-object-name": [
        {
          "value-name": "node-id",
          "value": "S100-NODE2"
        },
        {
          "value-name": "entity-type",
          "value": "slot"
        },
        {
          "value-name": "entity-id",
          "value": "Slot-1/4"
        }
      ],
      "source-indicator": "RESOURCE_OPERATION",
      "uuid": "76234954-30a2-11e9-a785-dd6c51454c4e",
      "event-time-stamp": "20190208220426.3Z",
      "additional-text": "Equipment Removed:Type=PIS1-PG31",
      "alarm-info": {
        "service-affecting": "SERVICE_AFFECTING",
        "probable-cause": "al-types:equipmentRemoved",
        "is-transient": false,
        "pervceived-severity": "CRITICAL"
      },
      "additional-info": [
        {
          "value-name": "location",
          "value": "NEND"
        },
        {
          "value-name": "direction",
          "value": "NA"
        }
      ],
      "target-object-identifier": "S100-NODE2:slot:Slot-1/4",
      "name": [
        {
          "value-name": "alarm-id",
          "value": "S100-NODE2slotal-types:equipmentRemovedSlot-1/4NANEND"
        }
      ]
    },
     
     ...
     ... 
  ]
}

VES Mapper

Mapping File
  • TAPI Alarm to VES Mapping template
TapiAlarm2VES
<?xml version="1.0" encoding="UTF-8"?><smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.4.xsd" xmlns:json="http://www.milyn.org/xsd/smooks/json-1.1.xsd">
  <json:reader rootName="vesevent" keyWhitspaceReplacement="-">
     <json:keyMap>
        <json:key from="date&time" to="date-and-time" />
     </json:keyMap>
  </json:reader>
  <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.VesEvent" beanId="vesEvent" createOnElement="vesevent">
     <jb:wiring property="event" beanIdRef="event" />
  </jb:bean>
  <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.Event" beanId="event" createOnElement="vesevent">
     <jb:wiring property="commonEventHeader" beanIdRef="commonEventHeader" />
     <jb:wiring property="faultFields" beanIdRef="faultFields" />
  </jb:bean>
  <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader" beanId="commonEventHeader" createOnElement="vesevent">
     <jb:expression property="version">'1.0'</jb:expression>
     <jb:expression property="eventType">'fault_OWB-RDM-NE1_equipmentFault'</jb:expression>
     <jb:expression property="eventId" execOnElement="vesevent">'QWB-RDM-NE1 23'</jb:expression>
     <jb:expression property="functionalRole">'NA'</jb:expression>
     <jb:expression property="reportingEntityName">'emf171195Cluster'</jb:expression>
     <jb:expression property="reportingEntityId">'10.249.26.175'</jb:expression>
     <jb:expression property="domain">'fault'</jb:expression>
     <jb:value property="sequence" data="0" default="0" decoder="Long" />
     <jb:value property="lastEpochMicrosec" data="1487894721807000"/>
     <jb:value property="startEpochMicrosec" data="1487894721807000"/>
     <jb:expression property="priority">'Medium'</jb:expression>
     <jb:expression property="sourceName">'OWB-RDM-NE1'</jb:expression>
     <jb:expression property="sourceId">'OWB-RDM-NE1'</jb:expression>
  </jb:bean>
  <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.FaultFields" beanId="faultFields" createOnElement="vesevent">
     <jb:value property="faultFieldsVersion" data="1.0" default="1.0" decoder="Double" />
     <jb:value property="alarmCondition" data="equipmentFault" />
     <jb:Value property="alarmInterfaceA" data="2"/>
     <jb:expression property="specificProblem">'equipmentFault'</jb:expression>
     <jb:expression property="vfStatus">'Active'</jb:expression>
     <jb:expression property="eventSeverity">'MAJOR'</jb:expression>
     <jb:expression property="eventSourcTeype">'Shelf'</jb:expression>
     <jb:wiring property="alarmAdditionalInformation" beanIdRef="alarmAdditionalInformationroot" />
  </jb:bean>
  <jb:bean class="java.util.ArrayList" beanId="alarmAdditionalInformationroot" createOnElement="vesevent">
     <jb:wiring beanIdRef="alarmAdditionalInformation" />
  </jb:bean>
  <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.AlarmAdditionalInformation" beanId="alarmAdditionalInformation" createOnElement="varbinds/element">
     <jb:value property="name" data="direction" />
     <jb:value property="value" data="tx" />
     <jb:value property="name" data="location" />
     <jb:value property="value" data="NEND" />
     <jb:value property="name" data="type" />
     <jb:value property="value" data="equipment" />
     <jb:value property="name" data="circuit-id" />
     <jb:value property="value" data="" />
  </jb:bean></smooks-resource-list>
  • MSA Data are already in VES format.  If VES Collector supports Rest API notification mode, MDONS can use VES collector for OpenRoadM data collection from domain controller.
VES Event

Mapper output as an VES event is posted back to Dmaap.

Converted VES Event
 

HOLMES

Drools Rule - Alarm Correlation

AAI APIs

Output

POLICY

Operational Policy

Apex Engine

SDNC API

CLAMP

CL Template

CL Instance

References

Page viewed times


  • No labels