X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=lighty%2Fsrc%2Fmain%2Fjava%2Fio%2Flighty%2Fcontrollers%2Ftpce%2Fmodule%2FTransportPCEImpl.java;h=d6e44ad9a80c9e26135e5101e5ef44e0a049791f;hb=46b020d25342f0ca86d83f6a503d7565f67f829e;hp=313821014d04a0756ce0169e1833af51c7efbb16;hpb=47f48f4207903f915047986b1eef2897c0e128f1;p=transportpce.git 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 313821014..d6e44ad9a 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 @@ -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; @@ -32,19 +34,18 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa import org.opendaylight.transportpce.nbinotifications.impl.NbiNotificationsProvider; import org.opendaylight.transportpce.networkmodel.NetConfTopologyListener; import org.opendaylight.transportpce.networkmodel.NetworkModelProvider; +import org.opendaylight.transportpce.networkmodel.NetworkUtilsImpl; import org.opendaylight.transportpce.networkmodel.listeners.PortMappingListener; 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; @@ -57,150 +58,156 @@ import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOpe import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl; import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl; import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperationsImpl; +import org.opendaylight.transportpce.servicehandler.impl.ServiceHandlerProvider; import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl; -import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerProvider; -import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelListenerImpl; -import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl; -import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl; +import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelNotificationHandler; +import org.opendaylight.transportpce.servicehandler.listeners.PceNotificationHandler; +import org.opendaylight.transportpce.servicehandler.listeners.RendererNotificationHandler; import org.opendaylight.transportpce.servicehandler.listeners.ServiceListener; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl; import org.opendaylight.transportpce.tapi.impl.TapiProvider; -import org.opendaylight.transportpce.tapi.listeners.TapiNetworkModelListenerImpl; +import org.opendaylight.transportpce.tapi.listeners.TapiNetworkModelNotificationHandler; import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelService; import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelServiceImpl; import org.opendaylight.transportpce.tapi.topology.TapiNetworkUtilsImpl; 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.rev211210.OrgOpenroadmServiceService; +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; public class TransportPCEImpl extends AbstractLightyModule implements TransportPCE { private static final Logger LOG = LoggerFactory.getLogger(TransportPCEImpl.class); - private static final long MAX_DURATION_TO_SUBMIT_TRANSACTION = 1500; + private static final long MAX_TIME_FOR_TRANSACTION = 1500; // transaction beans // cannot use interface for DeviceTransactionManagerImpl // 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; + private final ServiceHandlerProvider servicehandlerProvider; // T-api private TapiProvider tapiProvider; // nbi-notifications beans private NbiNotificationsProvider nbiNotificationsProvider; + private List rpcRegistrations = new ArrayList<>(); - public TransportPCEImpl(LightyServices lightyServices, boolean activateNbiNotification, boolean activateTapi, - String olmtimer1, String olmtimer2) { + public TransportPCEImpl( + LightyServices lightyServices, boolean activateNbiNotification, boolean activateTapi, + String olmtimer1, String olmtimer2) { LOG.info("Initializing transaction providers ..."); - deviceTransactionManager = new DeviceTransactionManagerImpl( - lightyServices.getBindingMountPointService(), MAX_DURATION_TO_SUBMIT_TRANSACTION); - networkTransaction = new NetworkTransactionImpl(lightyServices.getBindingDataBroker()); + deviceTransactionManager = + new DeviceTransactionManagerImpl(lightyServices.getBindingMountPointService(), MAX_TIME_FOR_TRANSACTION); + var lgServBDB = lightyServices.getBindingDataBroker(); + networkTransaction = new NetworkTransactionImpl(lgServBDB); LOG.info("Creating network-model beans ..."); PortMapping portMapping = initPortMapping(lightyServices); + var lgServBNPS = lightyServices.getBindingNotificationPublishService(); NetworkModelService networkModelService = new NetworkModelServiceImpl( - lightyServices.getBindingDataBroker(), + lgServBDB, deviceTransactionManager, networkTransaction, portMapping, - lightyServices.getBindingNotificationPublishService()); + lgServBNPS); new NetConfTopologyListener( - networkModelService, lightyServices.getBindingDataBroker(), deviceTransactionManager, portMapping); + networkModelService, lgServBDB, deviceTransactionManager, portMapping); new PortMappingListener(networkModelService); + var lgServRPS = lightyServices.getRpcProviderService(); + var lgServNS = lightyServices.getNotificationService(); + new NetworkUtilsImpl(lgServBDB, lgServRPS); networkModelProvider = new NetworkModelProvider( - networkTransaction, lightyServices.getBindingDataBroker(), - lightyServices.getRpcProviderService(), networkModelService, deviceTransactionManager, portMapping, - lightyServices.getNotificationService(), - new FrequenciesServiceImpl(lightyServices.getBindingDataBroker())); + networkTransaction, + lgServBDB, + networkModelService, deviceTransactionManager, portMapping, + lgServNS, + new FrequenciesServiceImpl(lgServBDB)); LOG.info("Creating PCE beans ..."); // TODO: pass those parameters through command line PathComputationService pathComputationService = new PathComputationServiceImpl( networkTransaction, - lightyServices.getBindingNotificationPublishService(), + lgServBNPS, new GnpyConsumerImpl( "http://127.0.0.1:8008", "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer()), portMapping); - pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService); - + rpcRegistrations.add( + new PceServiceRPCImpl(lgServRPS, pathComputationService) + .getRegisteredRpc()); LOG.info("Creating OLM beans ..."); - MappingUtils mappingUtils = new MappingUtilsImpl(lightyServices.getBindingDataBroker()); + MappingUtils mappingUtils = new MappingUtilsImpl(lgServBDB); CrossConnect crossConnect = initCrossConnect(mappingUtils); OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils, portMapping); - TransportpceOlmService olmPowerServiceRpc = new OlmPowerServiceRpcImpl( + OlmPowerServiceRpcImpl olmPowerServiceRpc = new OlmPowerServiceRpcImpl( new OlmPowerServiceImpl( - lightyServices.getBindingDataBroker(), + lgServBDB, new PowerMgmtImpl( openRoadmInterfaces, crossConnect, deviceTransactionManager, portMapping, Long.valueOf(olmtimer1).longValue(), Long.valueOf(olmtimer2).longValue()), - deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces)); - olmProvider = new OlmProvider(lightyServices.getRpcProviderService(), olmPowerServiceRpc); + deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces), + lgServRPS); + rpcRegistrations.add(olmPowerServiceRpc.getRegisteredRpc()); LOG.info("Creating renderer beans ..."); initOpenRoadmFactory(mappingUtils, openRoadmInterfaces, portMapping); DeviceRendererService deviceRendererService = new DeviceRendererServiceImpl( - lightyServices.getBindingDataBroker(), deviceTransactionManager, openRoadmInterfaces, crossConnect, + lgServBDB, + deviceTransactionManager, openRoadmInterfaces, crossConnect, 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( deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc, - lightyServices.getBindingDataBroker(), - lightyServices.getBindingNotificationPublishService(), + lgServBDB, + lgServBNPS, portMapping); ServiceDataStoreOperations serviceDataStoreOperations = - new ServiceDataStoreOperationsImpl(lightyServices.getBindingDataBroker()); - RendererListenerImpl rendererListenerImpl = new RendererListenerImpl( - pathComputationService, lightyServices.getBindingNotificationPublishService(), networkModelService); - PceListenerImpl pceListenerImpl = new PceListenerImpl( + new ServiceDataStoreOperationsImpl(lgServBDB); + RendererNotificationHandler rendererNotificationHandler = + new RendererNotificationHandler(pathComputationService, lgServBNPS, networkModelService); + PceNotificationHandler pceListenerImpl = new PceNotificationHandler( rendererServiceOperations, pathComputationService, - lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations); - NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl( - lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations); - OrgOpenroadmServiceService servicehandler = new ServicehandlerImpl( + lgServBNPS, serviceDataStoreOperations); + NetworkModelNotificationHandler networkModelNotificationHandler = new NetworkModelNotificationHandler( + lgServBNPS, serviceDataStoreOperations); + ServicehandlerImpl servicehandler = new ServicehandlerImpl(lgServRPS, pathComputationService, rendererServiceOperations, - lightyServices.getBindingNotificationPublishService(), pceListenerImpl, - rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations, + lgServBNPS, pceListenerImpl, + rendererNotificationHandler, networkModelNotificationHandler, serviceDataStoreOperations, new CatalogDataStoreOperationsImpl(networkTransaction)); - servicehandlerProvider = new ServicehandlerProvider( - lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(), - lightyServices.getNotificationService(), serviceDataStoreOperations, pceListenerImpl, - rendererListenerImpl, networkModelListenerImpl, lightyServices.getBindingNotificationPublishService(), - servicehandler, + rpcRegistrations.add(servicehandler.getRegisteredRpc()); + servicehandlerProvider = new ServiceHandlerProvider( + lgServBDB, + lgServNS, serviceDataStoreOperations, pceListenerImpl, + rendererNotificationHandler, networkModelNotificationHandler, new ServiceListener( - servicehandler, serviceDataStoreOperations, lightyServices.getBindingNotificationPublishService())); + servicehandler, serviceDataStoreOperations, lgServBNPS)); 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( - networkTransaction, lightyServices.getBindingNotificationPublishService()), + new TapiNetworkModelNotificationHandler( + networkTransaction, lgServBNPS), tapiLink, new TapiNetworkModelServiceImpl( networkTransaction, deviceTransactionManager, tapiLink, - lightyServices.getBindingNotificationPublishService())); + lgServBNPS)); + rpcRegistrations.addAll(tapiProvider.getRegisteredRpcs()); } if (activateNbiNotification) { LOG.info("Creating nbi-notifications beans ..."); nbiNotificationsProvider = new NbiNotificationsProvider( - null, null, lightyServices.getRpcProviderService(), - lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer(), - networkTransaction); + lgServRPS, lgServNS, + lightyServices.getAdapterContext().currentSerializer(), + networkTransaction, null); } } @@ -227,16 +234,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; } @@ -244,29 +249,36 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP private TapiProvider initTapi( LightyServices lightyServices, OrgOpenroadmServiceService servicehandler, NetworkTransactionService networkTransactionService, ServiceDataStoreOperations serviceDataStoreOperations, - TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl, TapiLink tapiLink, + TapiNetworkModelNotificationHandler tapiNetworkModelNotificationHandler, TapiLink tapiLink, TapiNetworkModelService tapiNetworkModelService) { return new TapiProvider( lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(), lightyServices.getNotificationService(), lightyServices.getBindingNotificationPublishService(), networkTransactionService, servicehandler, serviceDataStoreOperations, - new TapiNetworkUtilsImpl(networkTransactionService, tapiLink), - tapiNetworkModelListenerImpl, tapiNetworkModelService); + tapiNetworkModelNotificationHandler, 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(