X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=nbinotifications%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnbinotifications%2Flistener%2FNbiNotificationsListenerImpl.java;h=797fca71966b61d8a654fd07b591a7127982022c;hb=refs%2Fchanges%2F38%2F97438%2F40;hp=37b4c0181618044108e0d79435ca70ad5a7fa102;hpb=a42f0622facd28922e10152929790fe5b0d0a11f;p=transportpce.git diff --git a/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/listener/NbiNotificationsListenerImpl.java b/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/listener/NbiNotificationsListenerImpl.java index 37b4c0181..797fca719 100644 --- a/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/listener/NbiNotificationsListenerImpl.java +++ b/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/listener/NbiNotificationsListenerImpl.java @@ -7,27 +7,48 @@ */ package org.opendaylight.transportpce.nbinotifications.listener; +import java.util.HashMap; import java.util.Map; import org.opendaylight.transportpce.nbinotifications.producer.Publisher; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsListener; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishTapiNotificationService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfo; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoKey; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AlarmInfoBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributes; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesKey; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectName; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameKey; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TcaInfoBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NbiNotificationsListenerImpl implements NbiNotificationsListener { private static final Logger LOG = LoggerFactory.getLogger(NbiNotificationsListenerImpl.class); - private final Map> publishersServiceMap; - private final Map> publishersAlarmMap; + private Map> publishersServiceMap; + private Map> publishersAlarmMap; + private Map> tapiPublisherMap; public NbiNotificationsListenerImpl(Map> publishersServiceMap, - Map> publishersAlarmMap) { + Map> publishersAlarmMap, + Map> tapiPublisherMap) { this.publishersServiceMap = publishersServiceMap; this.publishersAlarmMap = publishersAlarmMap; + this.tapiPublisherMap = tapiPublisherMap; } @Override @@ -67,4 +88,85 @@ public class NbiNotificationsListenerImpl implements NbiNotificationsListener { .setServiceName(notification.getServiceName()) .build(), "alarm" + notification.getConnectionType().getName()); } + + @Override + public void onPublishTapiNotificationService(PublishTapiNotificationService notification) { + LOG.info("Receiving request for publishing TAPI notification"); + String topic = notification.getTopic(); + if (!tapiPublisherMap.containsKey(topic)) { + LOG.error("Unknown topic {}", topic); + return; + } + Publisher publisher = tapiPublisherMap.get(topic); + publisher.sendEvent(new NotificationTapiServiceBuilder(transformTapiNotification(notification)) + .build(), topic); + } + + private NotificationTapiService transformTapiNotification(PublishTapiNotificationService notification) { + Map addInfoMap = new HashMap<>(); + if (notification.getAdditionalInfo() != null) { + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfo + addInfo:notification.getAdditionalInfo().values()) { + AdditionalInfo transAddInfo = new AdditionalInfoBuilder(addInfo).build(); + addInfoMap.put(transAddInfo.key(), transAddInfo); + } + } + Map changedAttMap = new HashMap<>(); + if (notification.getChangedAttributes() != null) { + for (org.opendaylight.yang.gen.v1 + .urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes + changedAtt:notification.getChangedAttributes().values()) { + ChangedAttributes transChangedAtt = new ChangedAttributesBuilder(changedAtt).build(); + changedAttMap.put(transChangedAtt.key(), transChangedAtt); + } + } + Map nameMap = new HashMap<>(); + if (notification.getName() != null) { + for (Name name:notification.getName().values()) { + Name transName = new NameBuilder(name).build(); + nameMap.put(transName.key(), transName); + } + } + Map targetObjNameMap = new HashMap<>(); + if (notification.getTargetObjectName() != null) { + for (org.opendaylight.yang.gen.v1 + .urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName + targetObjectName:notification.getTargetObjectName().values()) { + TargetObjectName transTargetObjName = new TargetObjectNameBuilder(targetObjectName).build(); + targetObjNameMap.put(transTargetObjName.key(), transTargetObjName); + } + } + LOG.info("Notification uuid = {}", notification.getUuid()); + return new NotificationTapiServiceBuilder() + .setAlarmInfo(notification.getAlarmInfo() == null ? null + : new AlarmInfoBuilder(notification.getAlarmInfo()).build()) + .setAdditionalText(notification.getAdditionalText()) + .setAdditionalInfo(addInfoMap) + .setNotificationType(notification.getNotificationType()) + .setChangedAttributes(changedAttMap) + .setEventTimeStamp(notification.getEventTimeStamp()) + .setLayerProtocolName(notification.getLayerProtocolName()) + .setName(nameMap) + .setSequenceNumber(notification.getSequenceNumber()) + .setSourceIndicator(notification.getSourceIndicator()) + .setTargetObjectIdentifier(notification.getTargetObjectIdentifier()) + .setTargetObjectName(targetObjNameMap) + .setTargetObjectType(notification.getTargetObjectType()) + .setTcaInfo(notification.getTcaInfo() == null ? null + : new TcaInfoBuilder(notification.getTcaInfo()).build()) + .setUuid(notification.getUuid()) + .build(); + } + + public void setPublishersServiceMap(Map> publishersServiceMap) { + this.publishersServiceMap = publishersServiceMap; + } + + public void setPublishersAlarmMap(Map> publishersAlarmMap) { + this.publishersAlarmMap = publishersAlarmMap; + } + + public void setTapiPublishersMap(Map> tapiPublishersMap) { + this.tapiPublisherMap = tapiPublishersMap; + } }