2 * Copyright © 2020 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.nbinotifications.listener;
10 import java.util.HashMap;
12 import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
13 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
14 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
15 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmServiceBuilder;
16 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
17 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessServiceBuilder;
18 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
19 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiServiceBuilder;
20 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
21 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
22 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishTapiNotificationService;
23 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfo;
24 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoBuilder;
25 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoKey;
26 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AlarmInfoBuilder;
27 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributes;
28 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesBuilder;
29 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesKey;
30 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectName;
31 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameBuilder;
32 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameKey;
33 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TcaInfoBuilder;
34 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
35 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
36 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
40 public class NbiNotificationsListenerImpl implements NbiNotificationsListener {
41 private static final Logger LOG = LoggerFactory.getLogger(NbiNotificationsListenerImpl.class);
42 private Map<String, Publisher<NotificationProcessService>> publishersServiceMap;
43 private Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap;
44 private Map<String, Publisher<NotificationTapiService>> tapiPublisherMap;
46 public NbiNotificationsListenerImpl(Map<String, Publisher<NotificationProcessService>> publishersServiceMap,
47 Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap,
48 Map<String, Publisher<NotificationTapiService>> tapiPublisherMap) {
49 this.publishersServiceMap = publishersServiceMap;
50 this.publishersAlarmMap = publishersAlarmMap;
51 this.tapiPublisherMap = tapiPublisherMap;
55 public void onPublishNotificationProcessService(PublishNotificationProcessService notification) {
56 LOG.info("Receiving request for publishing notification service");
57 String publisherName = notification.getPublisherName();
58 if (!publishersServiceMap.containsKey(publisherName)) {
59 LOG.error("Unknown publisher {}", publisherName);
62 Publisher<NotificationProcessService> publisher = publishersServiceMap.get(publisherName);
63 publisher.sendEvent(new NotificationProcessServiceBuilder()
64 .setCommonId(notification.getCommonId())
65 .setConnectionType(notification.getConnectionType())
66 .setMessage(notification.getMessage())
67 .setOperationalState(notification.getOperationalState())
68 .setResponseFailed(notification.getResponseFailed())
69 .setServiceAEnd(notification.getServiceAEnd())
70 .setServiceName(notification.getServiceName())
71 .setServiceZEnd(notification.getServiceZEnd())
72 .build(), notification.getConnectionType().getName());
76 public void onPublishNotificationAlarmService(PublishNotificationAlarmService notification) {
77 LOG.info("Receiving request for publishing notification alarm service");
78 String publisherName = notification.getPublisherName();
79 if (!publishersAlarmMap.containsKey(publisherName)) {
80 LOG.error("Unknown topic {}", publisherName);
83 Publisher<NotificationAlarmService> publisherAlarm = publishersAlarmMap.get(publisherName);
84 publisherAlarm.sendEvent(new NotificationAlarmServiceBuilder()
85 .setConnectionType(notification.getConnectionType())
86 .setMessage(notification.getMessage())
87 .setOperationalState(notification.getOperationalState())
88 .setServiceName(notification.getServiceName())
89 .build(), "alarm" + notification.getConnectionType().getName());
93 public void onPublishTapiNotificationService(PublishTapiNotificationService notification) {
94 LOG.info("Receiving request for publishing TAPI notification");
95 String topic = notification.getTopic();
96 if (!tapiPublisherMap.containsKey(topic)) {
97 LOG.error("Unknown topic {}", topic);
100 Publisher<NotificationTapiService> publisher = tapiPublisherMap.get(topic);
101 publisher.sendEvent(new NotificationTapiServiceBuilder(transformTapiNotification(notification))
105 private NotificationTapiService transformTapiNotification(PublishTapiNotificationService notification) {
106 Map<AdditionalInfoKey, AdditionalInfo> addInfoMap = new HashMap<>();
107 if (notification.getAdditionalInfo() != null) {
108 for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfo
109 addInfo:notification.getAdditionalInfo().values()) {
110 AdditionalInfo transAddInfo = new AdditionalInfoBuilder(addInfo).build();
111 addInfoMap.put(transAddInfo.key(), transAddInfo);
114 Map<ChangedAttributesKey, ChangedAttributes> changedAttMap = new HashMap<>();
115 if (notification.getChangedAttributes() != null) {
116 for (org.opendaylight.yang.gen.v1
117 .urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes
118 changedAtt:notification.getChangedAttributes().values()) {
119 ChangedAttributes transChangedAtt = new ChangedAttributesBuilder(changedAtt).build();
120 changedAttMap.put(transChangedAtt.key(), transChangedAtt);
123 Map<NameKey, Name> nameMap = new HashMap<>();
124 if (notification.getName() != null) {
125 for (Name name:notification.getName().values()) {
126 Name transName = new NameBuilder(name).build();
127 nameMap.put(transName.key(), transName);
130 Map<TargetObjectNameKey, TargetObjectName> targetObjNameMap = new HashMap<>();
131 if (notification.getTargetObjectName() != null) {
132 for (org.opendaylight.yang.gen.v1
133 .urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName
134 targetObjectName:notification.getTargetObjectName().values()) {
135 TargetObjectName transTargetObjName = new TargetObjectNameBuilder(targetObjectName).build();
136 targetObjNameMap.put(transTargetObjName.key(), transTargetObjName);
139 LOG.info("Notification uuid = {}", notification.getUuid());
140 return new NotificationTapiServiceBuilder()
141 .setAlarmInfo(notification.getAlarmInfo() == null ? null
142 : new AlarmInfoBuilder(notification.getAlarmInfo()).build())
143 .setAdditionalText(notification.getAdditionalText())
144 .setAdditionalInfo(addInfoMap)
145 .setNotificationType(notification.getNotificationType())
146 .setChangedAttributes(changedAttMap)
147 .setEventTimeStamp(notification.getEventTimeStamp())
148 .setLayerProtocolName(notification.getLayerProtocolName())
150 .setSequenceNumber(notification.getSequenceNumber())
151 .setSourceIndicator(notification.getSourceIndicator())
152 .setTargetObjectIdentifier(notification.getTargetObjectIdentifier())
153 .setTargetObjectName(targetObjNameMap)
154 .setTargetObjectType(notification.getTargetObjectType())
155 .setTcaInfo(notification.getTcaInfo() == null ? null
156 : new TcaInfoBuilder(notification.getTcaInfo()).build())
157 .setUuid(notification.getUuid())
161 public void setPublishersServiceMap(Map<String, Publisher<NotificationProcessService>> publishersServiceMap) {
162 this.publishersServiceMap = publishersServiceMap;
165 public void setPublishersAlarmMap(Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap) {
166 this.publishersAlarmMap = publishersAlarmMap;
169 public void setTapiPublishersMap(Map<String, Publisher<NotificationTapiService>> tapiPublishersMap) {
170 this.tapiPublisherMap = tapiPublishersMap;