Do not use RpcService in nbinotifications module
[transportpce.git] / lighty / src / main / java / io / lighty / controllers / tpce / module / TransportPCEImpl.java
index f0f17c0a74011d303db83b4eda3499da448d547c..e629a152c95ca98ae171c7446e4ca47bdea7ce82 100644 (file)
@@ -9,6 +9,8 @@ package io.lighty.controllers.tpce.module;
 
 import io.lighty.core.controller.api.AbstractLightyModule;
 import io.lighty.core.controller.api.LightyServices;
+import java.util.ArrayList;
+import java.util.List;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl121;
@@ -38,14 +40,12 @@ import org.opendaylight.transportpce.networkmodel.service.FrequenciesServiceImpl
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl;
 import org.opendaylight.transportpce.olm.OlmPowerServiceRpcImpl;
-import org.opendaylight.transportpce.olm.OlmProvider;
 import org.opendaylight.transportpce.olm.power.PowerMgmtImpl;
 import org.opendaylight.transportpce.olm.service.OlmPowerServiceImpl;
 import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumerImpl;
-import org.opendaylight.transportpce.pce.impl.PceProvider;
+import org.opendaylight.transportpce.pce.impl.PceServiceRPCImpl;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
 import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
-import org.opendaylight.transportpce.renderer.RendererProvider;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
 // Adding OTN interface
 import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
@@ -75,6 +75,7 @@ import org.opendaylight.transportpce.tapi.utils.TapiLink;
 import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -87,20 +88,15 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
     // because implementation has additional public methods ...
     private final DeviceTransactionManagerImpl deviceTransactionManager;
     private final NetworkTransactionService networkTransaction;
-    // pce beans
-    private final PceProvider pceProvider;
     // network model beans
     private final NetworkModelProvider networkModelProvider;
-    // OLM beans
-    private final OlmProvider olmProvider;
-    // renderer beans
-    private final RendererProvider rendererProvider;
     // service-handler beans
     private final ServicehandlerProvider servicehandlerProvider;
     // T-api
     private TapiProvider tapiProvider;
     // nbi-notifications beans
     private NbiNotificationsProvider nbiNotificationsProvider;
+    private List<Registration> rpcRegistrations = new ArrayList<>();
 
     public TransportPCEImpl(
             LightyServices lightyServices, boolean activateNbiNotification, boolean activateTapi,
@@ -139,20 +135,22 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 new GnpyConsumerImpl(
                     "http://127.0.0.1:8008", "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer()),
                 portMapping);
-        pceProvider = new PceProvider(lgServRPS, pathComputationService);
-
+        rpcRegistrations.add(
+            new PceServiceRPCImpl(lgServRPS, pathComputationService)
+                .getRegisteredRpc());
         LOG.info("Creating OLM beans ...");
         MappingUtils mappingUtils = new MappingUtilsImpl(lgServBDB);
         CrossConnect crossConnect = initCrossConnect(mappingUtils);
         OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils, portMapping);
-        TransportpceOlmService olmPowerServiceRpc = new OlmPowerServiceRpcImpl(
+        OlmPowerServiceRpcImpl olmPowerServiceRpc = new OlmPowerServiceRpcImpl(
             new OlmPowerServiceImpl(
                 lgServBDB,
                 new PowerMgmtImpl(
                     openRoadmInterfaces, crossConnect, deviceTransactionManager,
                     portMapping, Long.valueOf(olmtimer1).longValue(), Long.valueOf(olmtimer2).longValue()),
-                deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces));
-        olmProvider = new OlmProvider(lgServRPS, olmPowerServiceRpc);
+                deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces),
+            lgServRPS);
+        rpcRegistrations.add(olmPowerServiceRpc.getRegisteredRpc());
         LOG.info("Creating renderer beans ...");
         initOpenRoadmFactory(mappingUtils, openRoadmInterfaces, portMapping);
         DeviceRendererService deviceRendererService = new DeviceRendererServiceImpl(
@@ -161,8 +159,7 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 mappingUtils, portMapping);
         OtnDeviceRendererService otnDeviceRendererService = new OtnDeviceRendererServiceImpl(
                 crossConnect, openRoadmInterfaces, deviceTransactionManager, mappingUtils, portMapping);
-        rendererProvider = initRenderer(
-                lightyServices, olmPowerServiceRpc, deviceRendererService, otnDeviceRendererService, portMapping);
+        initRenderer(lightyServices, olmPowerServiceRpc, deviceRendererService, otnDeviceRendererService, portMapping);
 
         LOG.info("Creating service-handler beans ...");
         RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl(
@@ -179,13 +176,14 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 lgServBNPS, serviceDataStoreOperations);
         NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
                 lgServBNPS, serviceDataStoreOperations);
-        OrgOpenroadmServiceService servicehandler = new ServicehandlerImpl(
+        ServicehandlerImpl servicehandler = new ServicehandlerImpl(lgServRPS,
                 pathComputationService, rendererServiceOperations,
                 lgServBNPS, pceListenerImpl,
                 rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations,
                 new CatalogDataStoreOperationsImpl(networkTransaction));
+        rpcRegistrations.add(servicehandler.getRegisteredRpc());
         servicehandlerProvider = new ServicehandlerProvider(
-                lgServBDB, lgServRPS,
+                lgServBDB,
                 lgServNS, serviceDataStoreOperations, pceListenerImpl,
                 rendererListenerImpl, networkModelListenerImpl, lgServBNPS,
                 servicehandler,
@@ -194,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(
@@ -203,13 +201,14 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                     new TapiNetworkModelServiceImpl(
                         networkTransaction, deviceTransactionManager, tapiLink,
                         lgServBNPS));
+            rpcRegistrations.addAll(tapiProvider.getRegisteredRpcs());
         }
         if (activateNbiNotification) {
             LOG.info("Creating nbi-notifications beans ...");
             nbiNotificationsProvider = new NbiNotificationsProvider(
-                    null, null, lgServRPS,
-                    lgServNS, lightyServices.getAdapterContext().currentSerializer(),
-                    networkTransaction);
+                    lgServRPS, lgServNS,
+                    lightyServices.getAdapterContext().currentSerializer(),
+                    networkTransaction, null);
         }
     }
 
@@ -236,16 +235,14 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
             LOG.info("Shutting down service-handler provider ...");
         }
         servicehandlerProvider.close();
-        LOG.info("Shutting down renderer provider ...");
-        rendererProvider.close();
-        LOG.info("Shutting down OLM provider ...");
-        olmProvider.close();
         LOG.info("Shutting down network-model provider ...");
         networkModelProvider.close();
-        LOG.info("Shutting down PCE provider ...");
-        pceProvider.close();
         LOG.info("Shutting down transaction providers ...");
         deviceTransactionManager.preDestroy();
+        LOG.info("Closing registered RPCs...");
+        for (Registration reg : rpcRegistrations) {
+            reg.close();
+        }
         LOG.info("Shutdown done.");
         return true;
     }
@@ -259,23 +256,30 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
             lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
             lightyServices.getNotificationService(), lightyServices.getBindingNotificationPublishService(),
             networkTransactionService, servicehandler, serviceDataStoreOperations,
-            new TapiNetworkUtilsImpl(networkTransactionService, tapiLink),
             tapiNetworkModelListenerImpl, tapiNetworkModelService);
     }
 
-    private RendererProvider initRenderer(
+    private void initRenderer(
             LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc,
             DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService,
             PortMapping portMapping) {
-        return new RendererProvider(
-            lightyServices.getRpcProviderService(), deviceRendererService,
-            otnDeviceRendererService,
-            new DeviceRendererRPCImpl(deviceRendererService, otnDeviceRendererService),
+        rpcRegistrations.add(
+            new DeviceRendererRPCImpl(
+                    lightyServices.getRpcProviderService(),
+                    deviceRendererService,
+                    otnDeviceRendererService)
+                .getRegisteredRpc());
+        rpcRegistrations.add(
             new TransportPCEServicePathRPCImpl(
-                new RendererServiceOperationsImpl(
-                    deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
-                    lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(),
-                    portMapping)));
+                    new RendererServiceOperationsImpl(
+                            deviceRendererService,
+                            otnDeviceRendererService,
+                            olmPowerServiceRpc,
+                            lightyServices.getBindingDataBroker(),
+                            lightyServices.getBindingNotificationPublishService(),
+                            portMapping),
+                    lightyServices.getRpcProviderService())
+                .getRegisteredRpc());
     }
 
     private OpenRoadmInterfaceFactory initOpenRoadmFactory(