X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=nbinotifications%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnbinotifications%2Fimpl%2FNbiNotificationsImpl.java;h=91e71eca11a34a8af144c342944cfececb10cac4;hb=942384f299eecdf5163014ff7930b12ce26a2ca3;hp=c1ea557733d7b74e2b258d4ba12856258d3dc426;hpb=4bb3743a3214fb481e4cc147914a314c9ff6d1c3;p=transportpce.git diff --git a/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/impl/NbiNotificationsImpl.java b/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/impl/NbiNotificationsImpl.java index c1ea55773..91e71eca1 100644 --- a/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/impl/NbiNotificationsImpl.java +++ b/nbinotifications/src/main/java/org/opendaylight/transportpce/nbinotifications/impl/NbiNotificationsImpl.java @@ -7,8 +7,8 @@ */ package org.opendaylight.transportpce.nbinotifications.impl; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.ListenableFuture; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -27,57 +27,75 @@ import org.opendaylight.transportpce.nbinotifications.serialization.Notification import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceDeserializer; import org.opendaylight.transportpce.nbinotifications.serialization.TapiNotificationDeserializer; import org.opendaylight.transportpce.nbinotifications.utils.TopicManager; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceInput; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceOutput; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceInput; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceOutput; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.TapiNotificationService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.UpdateNotificationSubscriptionServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.UpdateNotificationSubscriptionServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.output.SubscriptionService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.output.SubscriptionServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.NotificationKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service.list.output.SubscriptionServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscription; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscriptionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscriptionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.subscription.service.SubscriptionFilter; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.subscription.service.SubscriptionFilterBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceInput; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceOutput; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceInput; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceOutput; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NbiNotificationsService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPEPROFILE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPESERVICEINTERFACEPOINT; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationList; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetails; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceList; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypes; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTCREATION; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTDELETION; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.TapiNotificationService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.output.SubscriptionService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.output.SubscriptionServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.NotificationKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscription; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilter; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.Rpc; +import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -148,21 +166,36 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi .withError(ErrorType.APPLICATION, "Couldnt get Notification Context from Datastore") .buildFuture(); } - if (notificationContext.getNotifSubscription() == null) { - return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder() - .setSupportedNotificationTypes(new HashSet<>()) - .setSupportedObjectTypes(new HashSet<>()).build()).buildFuture(); - } - Set notificationTypeList = new HashSet<>(); - Set objectTypeList = new HashSet<>(); - for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) { - if (notifSubscription.getSupportedNotificationTypes() != null) { - notificationTypeList.addAll(notifSubscription.getSupportedNotificationTypes()); - } - if (notifSubscription.getSupportedObjectTypes() != null) { - objectTypeList.addAll(notifSubscription.getSupportedObjectTypes()); - } - } + //TAPI 2.4 removes supported notification types from notif-subscription list and notification-context + //No way to store what notification types are supported + //Considers that by default all notification are supported + Set notificationTypeList = new HashSet<>(); + notificationTypeList.add(NOTIFICATIONTYPEOBJECTCREATION.VALUE); + notificationTypeList.add(NOTIFICATIONTYPEOBJECTDELETION.VALUE); + notificationTypeList.add(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE); +// +// if (notificationContext.getNotifSubscription() == null) { +// return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder() +// .setSupportedNotificationTypes(new HashSet<>()) +// .setSupportedObjectTypes(new HashSet<>()).build()).buildFuture(); +// } +// Set notificationTypeList = new HashSet<>(); + + //TAPI 2.4 removes supported object types from notif-subscription list and notification-context + //No way to store what object types are supported + //Considers that by default all object are supported + Set objectTypeList = new HashSet<>(); + objectTypeList.add(OBJECTTYPESERVICEINTERFACEPOINT.VALUE); + objectTypeList.add(OBJECTTYPETAPICONTEXT.VALUE); + objectTypeList.add(OBJECTTYPEPROFILE.VALUE); +// for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) { +// if (notifSubscription.getSupportedNotificationTypes() != null) { +// notificationTypeList.addAll(notifSubscription.getSupportedNotificationTypes()); +// } +// if (notifSubscription.getSupportedObjectTypes() != null) { +// objectTypeList.addAll(notifSubscription.getSupportedObjectTypes()); +// } +// } return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder() .setSupportedNotificationTypes(notificationTypeList) .setSupportedObjectTypes(objectTypeList).build()).buildFuture(); @@ -185,25 +218,22 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi .setRequestedObjectTypes(input.getSubscriptionFilter().getRequestedObjectTypes()) .build(); Uuid notifSubscriptionUuid = new Uuid(UUID.randomUUID().toString()); + Map sfmap = new HashMap<>(); + sfmap.put(subscriptionFilter.key(), subscriptionFilter); SubscriptionService subscriptionService = new SubscriptionServiceBuilder() - .setSubscriptionFilter(subscriptionFilter) + .setSubscriptionFilter(sfmap) .setSubscriptionState(input.getSubscriptionState()) .setUuid(notifSubscriptionUuid) .build(); NotifSubscriptionKey notifSubscriptionKey = new NotifSubscriptionKey(notifSubscriptionUuid); - Set notificationTypes = (subscriptionFilter.getRequestedNotificationTypes() != null) - ? subscriptionFilter.getRequestedNotificationTypes() - : new HashSet<>(List.of(NotificationType.ALARMEVENT)); - Set objectTypes = (subscriptionFilter.getRequestedObjectTypes() != null) - ? subscriptionFilter.getRequestedObjectTypes() - : new HashSet<>(List.of(ObjectType.CONNECTIVITYSERVICE)); NotifSubscription notifSubscription = new NotifSubscriptionBuilder() .setSubscriptionState(subscriptionService.getSubscriptionState()) .setSubscriptionFilter(subscriptionService.getSubscriptionFilter()) .setUuid(notifSubscriptionUuid) - .setSupportedNotificationTypes(notificationTypes) - .setSupportedObjectTypes(objectTypes) +// Following 2 items are no more in notification-context with T-API 2.4 +// .setSupportedNotificationTypes(notificationTypes) +// .setSupportedObjectTypes(objectTypes) .setName(subscriptionService.getName()) .build(); NotificationContext notificationContext = getNotificationContext(); @@ -232,26 +262,28 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi public ListenableFuture> updateNotificationSubscriptionService(UpdateNotificationSubscriptionServiceInput input) { // TODO --> Not yet implemented - return null; + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet") + .buildFuture(); } @Override public ListenableFuture> deleteNotificationSubscriptionService(DeleteNotificationSubscriptionServiceInput input) { try { - if (input == null || input.getSubscriptionIdOrName() == null) { + if (input == null || input.getUuid() == null) { LOG.warn("Missing mandatory params for input {}", input); return RpcResultBuilder.failed() .withError(ErrorType.RPC, "Missing input parameters").buildFuture(); } - Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName()); + Uuid notifSubsUuid = input.getUuid(); InstanceIdentifier notifSubscriptionIID = InstanceIdentifier.builder(Context.class) .augmentation(Context1.class).child(NotificationContext.class).child(NotifSubscription.class, new NotifSubscriptionKey(notifSubsUuid)).build(); Optional optionalNotifSub = this.networkTransactionService.read( LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID).get(); - if (!optionalNotifSub.isPresent()) { + if (optionalNotifSub.isEmpty()) { return RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, "Notification subscription doesnt exist").buildFuture(); @@ -259,9 +291,15 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi NotifSubscription notifSubscription = optionalNotifSub.orElseThrow(); this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID); this.networkTransactionService.commit().get(); - for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) { - this.topicManager.deleteTapiTopic(objectUuid.getValue()); + for (Map.Entry sfEntry : notifSubscription + .getSubscriptionFilter().entrySet()) { + for (Uuid objectUuid:sfEntry.getValue().getRequestedObjectIdentifier()) { + this.topicManager.deleteTapiTopic(objectUuid.getValue()); + } } +// for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) { +// this.topicManager.deleteTapiTopic(objectUuid.getValue()); +// } return RpcResultBuilder.success(new DeleteNotificationSubscriptionServiceOutputBuilder().build()) .buildFuture(); } catch (InterruptedException | ExecutionException | NoSuchElementException e) { @@ -275,12 +313,12 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi @Override public ListenableFuture> getNotificationSubscriptionServiceDetails(GetNotificationSubscriptionServiceDetailsInput input) { - if (input == null || input.getSubscriptionIdOrName() == null) { + if (input == null || input.getUuid() == null) { LOG.warn("Missing mandatory params for input {}", input); return RpcResultBuilder.failed() .withError(ErrorType.RPC, "Missing input parameters").buildFuture(); } - Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName()); + Uuid notifSubsUuid = input.getUuid(); NotificationContext notificationContext = getNotificationContext(); if (notificationContext == null) { return RpcResultBuilder.failed() @@ -290,7 +328,7 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi if (notificationContext.getNotifSubscription() == null) { return RpcResultBuilder.success(new GetNotificationSubscriptionServiceDetailsOutputBuilder() .setSubscriptionService(new org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service + .urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service .details.output.SubscriptionServiceBuilder().build()).build()).buildFuture(); } if (!notificationContext.getNotifSubscription().containsKey(new NotifSubscriptionKey(notifSubsUuid))) { @@ -300,7 +338,7 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi } return RpcResultBuilder.success(new GetNotificationSubscriptionServiceDetailsOutputBuilder() .setSubscriptionService(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service.details.output + .onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service.details.output .SubscriptionServiceBuilder(notificationContext.getNotifSubscription().get( new NotifSubscriptionKey(notifSubsUuid))).build()).build()).buildFuture(); } @@ -319,13 +357,13 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi .setSubscriptionService(new HashMap<>()).build()).buildFuture(); } Map + .tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionService> notifSubsMap = new HashMap<>(); for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) { org.opendaylight.yang.gen.v1.urn.onf.otcc.yang - .tapi.notification.rev181210.get.notification.subscription.service.list.output.SubscriptionService + .tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionService subscriptionService = new org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service + .urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service .list.output.SubscriptionServiceBuilder(notifSubscription).build(); notifSubsMap.put(subscriptionService.key(), subscriptionService); } @@ -337,36 +375,50 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi public ListenableFuture> getNotificationList(GetNotificationListInput input) { try { LOG.info("RPC getNotificationList received"); - if (input == null || input.getSubscriptionIdOrName() == null) { + if (input == null || input.getSubscriptionId() == null) { LOG.warn("Missing mandatory params for input {}", input); return RpcResultBuilder.failed().withError(ErrorType.RPC, "Missing input parameters").buildFuture(); } - Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName()); + Uuid notifSubsUuid = input.getSubscriptionId(); InstanceIdentifier notifSubscriptionIID = InstanceIdentifier.builder(Context.class) .augmentation(Context1.class).child(NotificationContext.class).child(NotifSubscription.class, new NotifSubscriptionKey(notifSubsUuid)).build(); Optional optionalNotifSub = this.networkTransactionService.read( LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID).get(); - if (!optionalNotifSub.isPresent()) { + if (optionalNotifSub.isEmpty()) { return RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, "Notification subscription doesnt exist").buildFuture(); } NotifSubscription notifSubscription = optionalNotifSub.orElseThrow(); List notificationTapiList = new ArrayList<>(); - for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) { - if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) { - LOG.warn("Topic doesnt exist for {}", objectUuid.getValue()); - continue; + for (Map.Entry sfEntry : notifSubscription + .getSubscriptionFilter().entrySet()) { + for (Uuid objectUuid:sfEntry.getValue().getRequestedObjectIdentifier()) { + if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) { + LOG.warn("Topic doesnt exist for {}", objectUuid.getValue()); + continue; + } + LOG.info("Going to get notifications for topic {}", objectUuid.getValue()); + Subscriber subscriber = new Subscriber<>( + objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService, + TapiNotificationDeserializer.class); + notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME)); } - LOG.info("Going to get notifications for topic {}", objectUuid.getValue()); - Subscriber subscriber = new Subscriber<>( - objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService, - TapiNotificationDeserializer.class); - notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME)); } +// for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) { +// if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) { +// LOG.warn("Topic doesnt exist for {}", objectUuid.getValue()); +// continue; +// } +// LOG.info("Going to get notifications for topic {}", objectUuid.getValue()); +// Subscriber subscriber = new Subscriber<>( +// objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService, +// TapiNotificationDeserializer.class); +// notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME)); +// } LOG.info("TAPI notifications = {}", notificationTapiList); Map notificationMap = new HashMap<>(); for (Notification notif:notificationTapiList) { @@ -382,6 +434,20 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi "Notifications couldnt be retrieved from Kafka server").buildFuture(); } + public ImmutableClassToInstanceMap> registerRPCs() { + return ImmutableClassToInstanceMap.>builder() + .put(GetNotificationsProcessService.class, this::getNotificationsProcessService) + .put(GetNotificationsAlarmService.class, this::getNotificationsAlarmService) + .put(GetSupportedNotificationTypes.class, this::getSupportedNotificationTypes) + .put(CreateNotificationSubscriptionService.class, this::createNotificationSubscriptionService) + .put(UpdateNotificationSubscriptionService.class, this::updateNotificationSubscriptionService) + .put(DeleteNotificationSubscriptionService.class, this::deleteNotificationSubscriptionService) + .put(GetNotificationSubscriptionServiceDetails.class, this::getNotificationSubscriptionServiceDetails) + .put(GetNotificationSubscriptionServiceList.class, this::getNotificationSubscriptionServiceList) + .put(GetNotificationList.class, this::getNotificationList) + .build(); + } + private NotificationContext getNotificationContext() { LOG.info("Getting tapi notification context"); try { @@ -416,14 +482,4 @@ public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotifi return false; } - private Uuid getUuidFromIput(String serviceIdOrName) { - try { - UUID.fromString(serviceIdOrName); - LOG.info("Given attribute {} is a UUID", serviceIdOrName); - return new Uuid(serviceIdOrName); - } catch (IllegalArgumentException e) { - LOG.info("Given attribute {} is not a UUID", serviceIdOrName); - return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString()); - } - } }