2  * ============LICENSE_START=======================================================
 
   3  * ONAP : ccsdk feature sdnr wt
 
   4  * ================================================================================
 
   5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
 
   7  * ================================================================================
 
   8  * Licensed under the Apache License, Version 2.0 (the "License");
 
   9  * you may not use this file except in compliance with the License.
 
  10  * You may obtain a copy of the License at
 
  12  *     http://www.apache.org/licenses/LICENSE-2.0
 
  14  * Unless required by applicable law or agreed to in writing, software
 
  15  * distributed under the License is distributed on an "AS IS" BASIS,
 
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  17  * See the License for the specific language governing permissions and
 
  18  * limitations under the License.
 
  19  * ============LICENSE_END=========================================================
 
  22 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.impl.interfaces;
 
  24 import java.util.HashMap;
 
  26 import org.eclipse.jdt.annotation.Nullable;
 
  27 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
 
  28 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
 
  29 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.AttributeValueChangedNotification;
 
  30 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.ObjectCreationNotification;
 
  31 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.ObjectDeletionNotification;
 
  32 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.ProblemNotification;
 
  33 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPE;
 
  34 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPECRITICAL;
 
  35 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPEMAJOR;
 
  36 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPEMINOR;
 
  37 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPENONALARMED;
 
  38 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.SEVERITYTYPEWARNING;
 
  39 import org.opendaylight.yang.gen.v1.urn.onf.yang.wire._interface._2._0.rev200123.WireInterface20Listener;
 
  40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder;
 
  41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
 
  42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
 
  43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
 
  44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
 
  45 import org.slf4j.Logger;
 
  46 import org.slf4j.LoggerFactory;
 
  48 public class Onf14WireInterfaceNotificationListener implements WireInterface20Listener {
 
  50     private static final Logger log = LoggerFactory.getLogger(Onf14WireInterfaceNotificationListener.class);
 
  52     private final NetconfAccessor netconfAccessor;
 
  53     private final DeviceManagerServiceProvider serviceProvider;
 
  55     private static final Map<Class<? extends SEVERITYTYPE>,SeverityType> severityMap = initSeverityMap();
 
  57     public Onf14WireInterfaceNotificationListener(NetconfAccessor netconfAccessor,
 
  58             DeviceManagerServiceProvider serviceProvider) {
 
  59         this.netconfAccessor = netconfAccessor;
 
  60         this.serviceProvider = serviceProvider;
 
  63     private static Map<Class<? extends SEVERITYTYPE>, SeverityType> initSeverityMap() {
 
  64         Map<Class<? extends SEVERITYTYPE>, SeverityType> map = new HashMap<>();
 
  65         map.put(SEVERITYTYPECRITICAL.class,SeverityType.Critical);
 
  66         map.put(SEVERITYTYPEMAJOR.class,SeverityType.Major);
 
  67         map.put(SEVERITYTYPEMINOR.class,SeverityType.Minor);
 
  68         map.put(SEVERITYTYPEWARNING.class,SeverityType.Warning);
 
  69         map.put(SEVERITYTYPENONALARMED.class,SeverityType.NonAlarmed);
 
  74     public void onObjectDeletionNotification(ObjectDeletionNotification notification) {
 
  75         log.debug("Got event of type :: {}", ObjectDeletionNotification.class.getSimpleName());
 
  77         EventlogBuilder eventlogBuilder = new EventlogBuilder();
 
  78         eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue())
 
  80         .setCounter(notification.getCounter())
 
  81         .setNewValue("deleted")
 
  82         .setObjectId(notification.getObjectIdRef().getValue())
 
  83         .setSourceType(SourceType.Netconf)
 
  84         .setTimestamp(notification.getTimestamp());
 
  85         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
 
  86         serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
 
  87                 ObjectDeletionNotification.QNAME, notification.getTimestamp());
 
  89         log.debug("onObjectDeletionNotification log entry written");
 
  93     public void onProblemNotification(ProblemNotification notification) {
 
  94         log.debug("Got event of type :: {}", ProblemNotification.class.getSimpleName());
 
  95         FaultlogEntity faultAlarm = new FaultlogBuilder().setObjectId(notification.getObjectIdRef().getValue())
 
  96                 .setProblem(notification.getProblem()).setTimestamp(notification.getTimestamp())
 
  97                 .setNodeId(this.netconfAccessor.getNodeId().getValue()).setSourceType(SourceType.Netconf)
 
  98                 .setSeverity(mapSeverity(notification.getSeverity())).setCounter(notification.getCounter())
 
 100         serviceProvider.getFaultService().faultNotification(faultAlarm);
 
 101         serviceProvider.getWebsocketService().sendNotification( notification, netconfAccessor.getNodeId(),
 
 102                 ProblemNotification.QNAME, notification.getTimestamp());
 
 106     private SeverityType mapSeverity(@Nullable Class<? extends SEVERITYTYPE> severity) {
 
 107         return severityMap.getOrDefault(severity,SeverityType.NonAlarmed);
 
 111     public void onAttributeValueChangedNotification(AttributeValueChangedNotification notification) {
 
 112         log.debug("Got event of type :: {}", AttributeValueChangedNotification.class.getSimpleName());
 
 114         EventlogBuilder eventlogBuilder = new EventlogBuilder();
 
 115         eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue())
 
 116         .setAttributeName(notification.getAttributeName())
 
 117         .setCounter(notification.getCounter())
 
 118         .setNewValue(notification.getNewValue())
 
 119         .setObjectId(notification.getObjectIdRef().getValue())
 
 120         .setSourceType(SourceType.Netconf)
 
 121         .setTimestamp(notification.getTimestamp());
 
 122         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
 
 123         serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
 
 124                 AttributeValueChangedNotification.QNAME, notification.getTimestamp());
 
 127         log.debug("onAttributeValueChangedNotification log entry written");
 
 131     public void onObjectCreationNotification(ObjectCreationNotification notification) {
 
 132         log.debug("Got event of type :: {}", ObjectCreationNotification.class.getSimpleName());
 
 134         EventlogBuilder eventlogBuilder = new EventlogBuilder();
 
 135         eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue())
 
 136         .setAttributeName(notification.getObjectType())
 
 137         .setCounter(notification.getCounter())
 
 138         .setNewValue("created")
 
 139         .setObjectId(notification.getObjectIdRef().getValue())
 
 140         .setSourceType(SourceType.Netconf)
 
 141         .setTimestamp(notification.getTimestamp());
 
 142         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
 
 143         serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
 
 144                 ObjectCreationNotification.QNAME, notification.getTimestamp());
 
 146         log.debug("onObjectCreationNotification log entry written");