Migrate RpcService usage in TapiNetworkUtilsImpl 92/108092/3
authorGilles Thouenon <gilles.thouenon@orange.com>
Sun, 1 Oct 2023 13:15:16 +0000 (15:15 +0200)
committerguillaume.lambert <guillaume.lambert@orange.com>
Wed, 11 Oct 2023 12:02:01 +0000 (14:02 +0200)
- 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 <gilles.thouenon@orange.com>
Change-Id: I7dd17b22c3a0e46ecd2188981ed19abf4914479f

lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java
tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java
tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java
tapi/src/test/java/org/opendaylight/transportpce/tapi/provider/TapiProviderTest.java

index 519a5d029f0ad5b3e78ec25436015633e4e65958..c324d4bd09530776664697903cb93686c2a879ed 100644 (file)
@@ -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);
     }
 
index 19b91a44a6bc059c9c4180d76649400d2f7043c8..065a840968c5283a01d312b3cf3d3be2bc3395ab 100644 (file)
@@ -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<TapiConnectivityService> rpcRegistration;
-    private ObjectRegistration<TransportpceTapinetworkutilsService> tapiNetworkutilsServiceRpcRegistration;
     private List<Registration> listeners;
     private ListenerRegistration<TransportpcePceListener> pcelistenerRegistration;
     private ListenerRegistration<TransportpceRendererListener> 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();
index 5190aac02a5a0f16a7fcb0db3093a7f43f12ca1f..5030768e253e509a6e525fb9a3680b0fc2cb8483 100644 (file)
@@ -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.<Rpc<?, ?>>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<RpcResult<InitRoadmRoadmTapiLinkOutput>> initRoadmRoadmTapiLink(
+    public final ListenableFuture<RpcResult<InitRoadmRoadmTapiLinkOutput>> 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<RpcResult<InitXpdrRdmTapiLinkOutput>> initXpdrRdmTapiLink(InitXpdrRdmTapiLinkInput input) {
+    public final ListenableFuture<RpcResult<InitXpdrRdmTapiLinkOutput>> 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<RpcResult<DeleteTapiLinkOutput>> deleteTapiLink(DeleteTapiLinkInput input) {
+    public final ListenableFuture<RpcResult<DeleteTapiLinkOutput>> 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??
index 9730d248399cbc52a07899e5f1d2dfb9f874ed42..ce03c9c4677f6d81d531ee59f280fb07ca29eaf0 100644 (file)
@@ -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));