From 7163540eb75ce9968881b470ebf640b7a92f9eaa Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Sun, 1 Oct 2023 15:15:16 +0200 Subject: [PATCH] Migrate RpcService usage in TapiNetworkUtilsImpl - Start migrate usage of RpcService to the new style yang.binding.Rpc-based implementation for tapi module - Adapt lighty implementation JIRA: TRNSPRTPCE-752 Signed-off-by: Gilles Thouenon Change-Id: I7dd17b22c3a0e46ecd2188981ed19abf4914479f --- .../tpce/module/TransportPCEImpl.java | 3 +- .../transportpce/tapi/impl/TapiProvider.java | 18 ---------- .../tapi/topology/TapiNetworkUtilsImpl.java | 36 ++++++++++++++++--- .../tapi/provider/TapiProviderTest.java | 5 +-- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java b/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java index 519a5d029..c324d4bd0 100644 --- a/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java +++ b/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java @@ -192,7 +192,7 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP if (activateTapi) { LOG.info("Creating tapi beans ..."); TapiLink tapiLink = new TapiLinkImpl(networkTransaction); - new TapiNetworkUtilsImpl(networkTransaction, tapiLink); + new TapiNetworkUtilsImpl(lgServRPS, networkTransaction, tapiLink); tapiProvider = initTapi( lightyServices, servicehandler, networkTransaction, serviceDataStoreOperations, new TapiNetworkModelListenerImpl( @@ -255,7 +255,6 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(), lightyServices.getNotificationService(), lightyServices.getBindingNotificationPublishService(), networkTransactionService, servicehandler, serviceDataStoreOperations, - new TapiNetworkUtilsImpl(networkTransactionService, tapiLink), tapiNetworkModelListenerImpl, tapiNetworkModelService); } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java index 19b91a44a..065a84096 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java @@ -41,7 +41,6 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererListener; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks; @@ -84,15 +83,10 @@ public class TapiProvider { new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).augmentation(Network1.class) .child(Link.class); private final DataBroker dataBroker; - private final RpcProviderService rpcProviderService; - private final NotificationService notificationService; private final NetworkTransactionService networkTransactionService; private final OrgOpenroadmServiceService serviceHandler; private final ServiceDataStoreOperations serviceDataStoreOperations; - private final TransportpceTapinetworkutilsService tapiNetworkUtils; - private TapiNotificationListener tapiNetworkModelListenerImpl; private ObjectRegistration rpcRegistration; - private ObjectRegistration tapiNetworkutilsServiceRpcRegistration; private List listeners; private ListenerRegistration pcelistenerRegistration; private ListenerRegistration rendererlistenerRegistration; @@ -107,18 +101,12 @@ public class TapiProvider { @Reference NetworkTransactionService networkTransactionService, @Reference OrgOpenroadmServiceService serviceHandler, @Reference ServiceDataStoreOperations serviceDataStoreOperations, - @Reference TransportpceTapinetworkutilsService tapiNetworkUtils, @Reference TapiNotificationListener tapiNetworkModelListenerImpl, @Reference TapiNetworkModelService tapiNetworkModelServiceImpl) { this.dataBroker = dataBroker; - this.rpcProviderService = rpcProviderService; - this.notificationService = notificationService; this.networkTransactionService = networkTransactionService; this.serviceHandler = serviceHandler; this.serviceDataStoreOperations = serviceDataStoreOperations; - this.tapiNetworkUtils = tapiNetworkUtils; - this.tapiNetworkModelListenerImpl = tapiNetworkModelListenerImpl; - LOG.info("TapiProvider Session Initiated"); TapiContext tapiContext = new TapiContext(this.networkTransactionService); LOG.info("Empty TAPI context created: {}", tapiContext.getTapiContext()); @@ -154,9 +142,6 @@ public class TapiProvider { topologyListener)); listeners.add(dataBroker.registerDataTreeChangeListener( DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, MAPPING_II), tapiPortMappingListener)); - tapiNetworkutilsServiceRpcRegistration = - rpcProviderService.registerRpcImplementation(TransportpceTapinetworkutilsService.class, - this.tapiNetworkUtils); TapiListener tapiListener = new TapiListener(); listeners.add(dataBroker.registerDataTreeChangeListener( DataTreeIdentifier.create( @@ -180,9 +165,6 @@ public class TapiProvider { public void close() { listeners.forEach(lis -> lis.close()); listeners.clear(); - if (tapiNetworkutilsServiceRpcRegistration != null) { - tapiNetworkutilsServiceRpcRegistration.close(); - } pcelistenerRegistration.close(); rendererlistenerRegistration.close(); servicehandlerlistenerRegistration.close(); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java index 5190aac02..5030768e2 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java @@ -7,22 +7,27 @@ */ package org.opendaylight.transportpce.tapi.topology; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.ListenableFuture; import java.nio.charset.Charset; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLink; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkInput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLink; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkInput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLink; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkInput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutputBuilder; @@ -37,12 +42,15 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.to import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.Rpc; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,16 +63,29 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService .getBytes(Charset.forName("UTF-8"))).toString()); private final NetworkTransactionService networkTransactionService; private final TapiLink tapiLink; + private Registration reg; @Activate - public TapiNetworkUtilsImpl(@Reference NetworkTransactionService networkTransactionService, - @Reference TapiLink tapiLink) { + public TapiNetworkUtilsImpl(@Reference RpcProviderService rpcProviderService, + @Reference NetworkTransactionService networkTransactionService, @Reference TapiLink tapiLink) { this.networkTransactionService = networkTransactionService; this.tapiLink = tapiLink; + this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.>builder() + .put(InitRoadmRoadmTapiLink.class, this::initRoadmRoadmTapiLink) + .put(InitXpdrRdmTapiLink.class, this::initXpdrRdmTapiLink) + .put(DeleteTapiLink.class, this::deleteTapiLink) + .build()); + LOG.info("TapiNetworkUtilsImpl instantiated"); + } + + @Deactivate + public void close() { + this.reg.close(); + LOG.info("TapiNetworkUtilsImpl Closed"); } @Override - public ListenableFuture> initRoadmRoadmTapiLink( + public final ListenableFuture> initRoadmRoadmTapiLink( InitRoadmRoadmTapiLinkInput input) { // TODO --> need to check if the nodes and neps exist in the topology String sourceNode = input.getRdmANode(); @@ -92,7 +113,8 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService } @Override - public ListenableFuture> initXpdrRdmTapiLink(InitXpdrRdmTapiLinkInput input) { + public final ListenableFuture> initXpdrRdmTapiLink( + InitXpdrRdmTapiLinkInput input) { // TODO --> need to check if the nodes and neps exist in the topology String destNode = input.getRdmNode(); String destTp = input.getAddDropTp(); @@ -119,7 +141,7 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService } @Override - public ListenableFuture> deleteTapiLink(DeleteTapiLinkInput input) { + public final ListenableFuture> deleteTapiLink(DeleteTapiLinkInput input) { // TODO: check if this IID is correct // TODO --> need to check if the link exists in the topology try { @@ -139,6 +161,10 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService } } + public Registration getRegisteredRpc() { + return reg; + } + private boolean putLinkInTopology(Link tapLink) { // TODO is this merge correct? Should we just merge topology by changing the nodes map?? // TODO: verify this is correct. Should we identify the context IID with the context UUID?? diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/provider/TapiProviderTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/provider/TapiProviderTest.java index 9730d2483..ce03c9c46 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/provider/TapiProviderTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/provider/TapiProviderTest.java @@ -28,7 +28,6 @@ import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations; import org.opendaylight.transportpce.tapi.impl.TapiProvider; import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelService; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TapiCommonService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService; @@ -53,8 +52,6 @@ public class TapiProviderTest { @Mock private ServiceDataStoreOperations serviceDataStoreOperations; @Mock - private TransportpceTapinetworkutilsService tapiNetworkUtils; - @Mock private TapiNotificationListener tapiNetworkModelListenerImpl; @Mock private TapiNetworkModelService tapiNetworkModelServiceImpl; @@ -64,7 +61,7 @@ public class TapiProviderTest { when(networkTransactionService.read(any(), any())).thenReturn(Futures.immediateFuture(Optional.empty())); doReturn(emptyFluentFuture()).when(networkTransactionService).commit(); new TapiProvider(dataBroker, rpcProviderRegistry, notificationService, notificationPublishService, - networkTransactionService, serviceHandler, serviceDataStoreOperations, tapiNetworkUtils, + networkTransactionService, serviceHandler, serviceDataStoreOperations, tapiNetworkModelListenerImpl, tapiNetworkModelServiceImpl); verify(rpcProviderRegistry, times(1)).registerRpcImplementation(any(), any(TapiConnectivityService.class)); -- 2.36.6