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.NonNull;
27 import org.eclipse.jdt.annotation.Nullable;
28 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
29 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
30 import org.opendaylight.mdsal.dom.api.DOMNotification;
31 import org.opendaylight.mdsal.dom.api.DOMNotificationListener;
32 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.AirInterface20Listener;
33 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.AttributeValueChangedNotification;
34 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.ObjectCreationNotification;
35 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.ObjectDeletionNotification;
36 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.ProblemNotification;
37 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPE;
38 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPECRITICAL;
39 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPEMAJOR;
40 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPEMINOR;
41 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPENONALARMED;
42 import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.SEVERITYTYPEWARNING;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
51 public class Onf14AirInterfaceNotificationListener implements AirInterface20Listener, DOMNotificationListener {
53 private static final Logger log = LoggerFactory.getLogger(Onf14AirInterfaceNotificationListener.class);
55 private final NetconfAccessor netconfAccessor;
56 private final DeviceManagerServiceProvider serviceProvider;
58 private static final Map<Class<? extends SEVERITYTYPE>,SeverityType> severityMap = initSeverityMap();
60 public Onf14AirInterfaceNotificationListener(NetconfAccessor netconfAccessor,
61 DeviceManagerServiceProvider serviceProvider) {
62 this.netconfAccessor = netconfAccessor;
63 this.serviceProvider = serviceProvider;
66 private static Map<Class<? extends SEVERITYTYPE>, SeverityType> initSeverityMap() {
67 Map<Class<? extends SEVERITYTYPE>, SeverityType> map = new HashMap<>();
68 map.put(SEVERITYTYPECRITICAL.class,SeverityType.Critical);
69 map.put(SEVERITYTYPEMAJOR.class,SeverityType.Major);
70 map.put(SEVERITYTYPEMINOR.class,SeverityType.Minor);
71 map.put(SEVERITYTYPEWARNING.class,SeverityType.Warning);
72 map.put(SEVERITYTYPENONALARMED.class,SeverityType.NonAlarmed);
77 public void onObjectDeletionNotification(ObjectDeletionNotification notification) {
78 log.debug("Got event of type :: {}", ObjectDeletionNotification.class.getSimpleName());
80 EventlogBuilder eventlogBuilder = new EventlogBuilder();
81 eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue()).setAttributeName("")
82 .setCounter(notification.getCounter()).setNewValue("deleted")
83 .setObjectId(notification.getObjectIdRef().getValue()).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()).setSourceType(SourceType.Netconf)
97 .setTimestamp(notification.getTimestamp())
98 .setNodeId(this.netconfAccessor.getNodeId().getValue())
99 .setSeverity(mapSeverity(notification.getSeverity())).setCounter(notification.getCounter())
101 serviceProvider.getFaultService().faultNotification(faultAlarm);
102 serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
103 ProblemNotification.QNAME, notification.getTimestamp());
107 private SeverityType mapSeverity(@Nullable Class<? extends SEVERITYTYPE> severity) {
108 return severityMap.getOrDefault(severity,SeverityType.NonAlarmed);
112 public void onAttributeValueChangedNotification(AttributeValueChangedNotification notification) {
113 log.debug("Got event of type :: {}", AttributeValueChangedNotification.class.getSimpleName());
115 EventlogBuilder eventlogBuilder = new EventlogBuilder();
116 eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue())
117 .setAttributeName(notification.getAttributeName()).setCounter(notification.getCounter())
118 .setNewValue(notification.getNewValue()).setObjectId(notification.getObjectIdRef().getValue())
119 .setSourceType(SourceType.Netconf).setTimestamp(notification.getTimestamp());
120 serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
121 serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
122 AttributeValueChangedNotification.QNAME, notification.getTimestamp());
123 log.debug("onAttributeValueChangedNotification log entry written");
127 public void onObjectCreationNotification(ObjectCreationNotification notification) {
128 log.debug("Got event of type :: {}", ObjectCreationNotification.class.getSimpleName());
130 EventlogBuilder eventlogBuilder = new EventlogBuilder();
131 eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue()).setAttributeName(notification.getObjectType())
132 .setCounter(notification.getCounter()).setNewValue("created")
133 .setObjectId(notification.getObjectIdRef().getValue()).setSourceType(SourceType.Netconf)
134 .setTimestamp(notification.getTimestamp());
135 serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
136 serviceProvider.getWebsocketService().sendNotification(notification, netconfAccessor.getNodeId(),
137 ObjectCreationNotification.QNAME, notification.getTimestamp());
138 log.debug("onObjectCreationNotification log entry written");
142 public void onNotification(@NonNull DOMNotification notification) {