X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=nbinotifications%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnbinotifications%2Futils%2FNotificationServiceDataUtils.java;h=195ef39fac788f952e7be3fbc77fbab548d72938;hb=72726c942bab51f2d1081e83e2b9ac8aa6481122;hp=ea8c5496a548b8c22b0fdff46b7795578bb71b04;hpb=98f18ed6198272340cbb1d12c6eb00aec42878eb;p=transportpce.git diff --git a/nbinotifications/src/test/java/org/opendaylight/transportpce/nbinotifications/utils/NotificationServiceDataUtils.java b/nbinotifications/src/test/java/org/opendaylight/transportpce/nbinotifications/utils/NotificationServiceDataUtils.java index ea8c5496a..195ef39fa 100644 --- a/nbinotifications/src/test/java/org/opendaylight/transportpce/nbinotifications/utils/NotificationServiceDataUtils.java +++ b/nbinotifications/src/test/java/org/opendaylight/transportpce/nbinotifications/utils/NotificationServiceDataUtils.java @@ -7,7 +7,18 @@ */ package org.opendaylight.transportpce.nbinotifications.utils; +import java.nio.charset.Charset; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ConnectionType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint.RxDirection; @@ -28,11 +39,42 @@ import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notification import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessServiceBuilder; import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder; import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceZEndBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; +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.ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; +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.common.rev181210.local._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1Builder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListInputBuilder; +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.SubscriptionState; +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.input.SubscriptionFilter; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.input.SubscriptionFilterBuilder; +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.NotificationBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.NwTopologyServiceBuilder; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint8; public final class NotificationServiceDataUtils { + public static final String TAPI_CONTEXT = "T-API context"; + private NotificationServiceDataUtils() { } @@ -71,6 +113,38 @@ public final class NotificationServiceDataUtils { .build(); } + public static Notification buildReceivedTapiAlarmEvent() { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx"); + OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC); + DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime)); + Uuid targetObjectId = new Uuid(UUID.randomUUID().toString()); + TargetObjectName objectName = new TargetObjectNameBuilder() + .setValue(targetObjectId.getValue()) + .setValueName("Connectivity Service Name") + .build(); + ChangedAttributes adminStateChange = new ChangedAttributesBuilder() + .setValueName("administrativeState") + .setOldValue(AdministrativeState.LOCKED.getName()) + .setNewValue(AdministrativeState.UNLOCKED.getName()) + .build(); + ChangedAttributes operStateChange = new ChangedAttributesBuilder() + .setValueName("operationalState") + .setOldValue(OperationalState.DISABLED.getName()) + .setNewValue(OperationalState.ENABLED.getName()) + .build(); + return new NotificationBuilder() + .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE) + .setLayerProtocolName(LayerProtocolName.ETH) + .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE) + .setEventTimeStamp(datetime) + .setUuid(new Uuid(UUID.randomUUID().toString())) + .setTargetObjectIdentifier(targetObjectId) + .setTargetObjectName(Map.of(objectName.key(), objectName)) + .setChangedAttributes(Map.of(adminStateChange.key(), adminStateChange, + operStateChange.key(), operStateChange)) + .build(); + } + public static ServiceAEndBuilder getServiceAEndBuild() { return new ServiceAEndBuilder() .setClli("clli") @@ -91,6 +165,25 @@ public final class NotificationServiceDataUtils { .setRxDirection(getRxDirection()); } + public static CreateNotificationSubscriptionServiceInputBuilder buildNotificationSubscriptionServiceInputBuilder() { + Name name = new NameBuilder() + .setValue("test subscription") + .setValueName("Subscription name") + .build(); + SubscriptionFilter subscriptionFilter = new SubscriptionFilterBuilder() + .setRequestedObjectTypes(new HashSet<>(List.of(ObjectType.CONNECTIVITYSERVICE))) + .setRequestedNotificationTypes(new HashSet<>(List.of(NotificationType.ALARMEVENT))) + .setRequestedLayerProtocols(new HashSet<>(List.of(LayerProtocolName.ETH))) + .setRequestedObjectIdentifier(new HashSet<>(List.of(new Uuid(UUID.randomUUID().toString())))) + .setIncludeContent(true) + .setLocalId("localId") + .setName(Map.of(name.key(), name)) + .build(); + return new CreateNotificationSubscriptionServiceInputBuilder() + .setSubscriptionFilter(subscriptionFilter) + .setSubscriptionState(SubscriptionState.ACTIVE); + } + private static Map getTxDirection() { return Map.of(new TxDirectionKey(Uint8.ZERO), new TxDirectionBuilder() .setPort(new PortBuilder() @@ -132,4 +225,71 @@ public final class NotificationServiceDataUtils { .setIndex(Uint8.ZERO) .build()); } + + public static void createTapiContext( + NetworkTransactionService networkTransactionService) throws ExecutionException, InterruptedException { + // Augmenting tapi context to include topology and connectivity contexts + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name contextName + = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder() + .setValue(TAPI_CONTEXT).setValueName("TAPI Context Name").build(); + + Context1 connectivityContext = + new Context1Builder() + .setConnectivityContext( + new ConnectivityContextBuilder() + .setConnection(new HashMap<>()) + .setConnectivityService(new HashMap<>()) + .build()) + .build(); + + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name nwTopoServiceName = + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder() + .setValue("Network Topo Service") + .setValueName("Network Topo Service Name") + .build(); + + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1 topologyContext + = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1Builder() + .setTopologyContext(new TopologyContextBuilder() + .setNwTopologyService(new NwTopologyServiceBuilder() + .setTopology(new HashMap<>()) + .setUuid( + new Uuid( + UUID.nameUUIDFromBytes("Network Topo Service".getBytes(Charset.forName("UTF-8"))) + .toString())) + .setName(Map.of(nwTopoServiceName.key(), nwTopoServiceName)) + .build()) + .setTopology(new HashMap<>()) + .build()) + .build(); + + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1 notificationContext + = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1Builder() + .setNotificationContext(new NotificationContextBuilder() + .setNotification(new HashMap<>()) + .setNotifSubscription(new HashMap<>()) + .build()) + .build(); + + ContextBuilder contextBuilder = new ContextBuilder() + .setName(Map.of(contextName.key(), contextName)) + .setUuid( + new Uuid(UUID.nameUUIDFromBytes(TAPI_CONTEXT.getBytes(Charset.forName("UTF-8"))).toString())) + .setServiceInterfacePoint(new HashMap<>()) + .addAugmentation(connectivityContext) + .addAugmentation(topologyContext) + .addAugmentation(notificationContext); + + // todo: add notification context + InstanceIdentifier contextIID = InstanceIdentifier.builder(Context.class).build(); + // put in datastore + networkTransactionService.put(LogicalDatastoreType.OPERATIONAL, contextIID, contextBuilder.build()); + networkTransactionService.commit().get(); + } + + public static GetNotificationListInputBuilder buildGetNotificationListInputBuilder(String subscriptionUuid) { + return new GetNotificationListInputBuilder() + .setSubscriptionIdOrName(subscriptionUuid) + .setTimePeriod("some string"); + } }