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=bed1ccba9ff996e7166596d37bf55adb7e67ce87;hb=b1b3bafd549bb501937cea5c976d5344608b6ed3;hp=842f15eee088134451583ff8e2217b544cf2dbe4;hpb=a5674b310f25344ead7c1202aabd5e79205104f5;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 842f15eee..bed1ccba9 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,8 +9,12 @@ package io.lighty.controllers.tpce.module; import io.lighty.core.controller.api.AbstractLightyModule; import io.lighty.core.controller.api.LightyServices; -import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperations; -import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperationsImpl; +import java.util.ArrayList; +import java.util.List; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.NotificationPublishService; +import org.opendaylight.mdsal.binding.api.NotificationService; +import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.transportpce.common.crossconnect.CrossConnect; import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl; import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl121; @@ -34,23 +38,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.FrequenciesService; 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.PowerMgmt; import org.opendaylight.transportpce.olm.power.PowerMgmtImpl; -import org.opendaylight.transportpce.olm.service.OlmPowerService; import org.opendaylight.transportpce.olm.service.OlmPowerServiceImpl; -import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer; 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; @@ -60,153 +59,189 @@ import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererS import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererServiceImpl; import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations; import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperationsImpl; +import org.opendaylight.transportpce.renderer.provisiondevice.notification.NotificationSender; import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl; -import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl; +import org.opendaylight.transportpce.renderer.rpcs.RendererRPCImpl; +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.topology.TapiNetworkModelService; +import org.opendaylight.transportpce.tapi.listeners.TapiNetworkModelNotificationHandler; 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.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.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); + DataBroker dataBroker = lightyServices.getBindingDataBroker(); + networkTransaction = new NetworkTransactionImpl(dataBroker); LOG.info("Creating network-model beans ..."); - PortMapping portMapping = initPortMapping(lightyServices); - NetworkModelService networkModelService = new NetworkModelServiceImpl( - lightyServices.getBindingDataBroker(), - deviceTransactionManager, networkTransaction, portMapping, - lightyServices.getBindingNotificationPublishService()); - new NetConfTopologyListener( - networkModelService, lightyServices.getBindingDataBroker(), deviceTransactionManager, portMapping); + PortMapping portMapping = initPortMapping(dataBroker); + NotificationPublishService notificationPublishService = lightyServices.getBindingNotificationPublishService(); + NetworkModelService networkModelService = new NetworkModelServiceImpl(dataBroker, deviceTransactionManager, + networkTransaction, portMapping, notificationPublishService); + new NetConfTopologyListener(networkModelService, dataBroker, deviceTransactionManager, portMapping); new PortMappingListener(networkModelService); - networkModelProvider = new NetworkModelProvider( - networkTransaction, lightyServices.getBindingDataBroker(), - lightyServices.getRpcProviderService(), networkModelService, deviceTransactionManager, portMapping, - lightyServices.getNotificationService(), - new FrequenciesServiceImpl(lightyServices.getBindingDataBroker())); + + RpcProviderService rpcProviderService = lightyServices.getRpcProviderService(); + NotificationService notificationService = lightyServices.getNotificationService(); + new NetworkUtilsImpl(dataBroker, rpcProviderService); + networkModelProvider = new NetworkModelProvider(networkTransaction, dataBroker, networkModelService, + deviceTransactionManager, portMapping, notificationService, new FrequenciesServiceImpl(dataBroker)); LOG.info("Creating PCE beans ..."); // TODO: pass those parameters through command line PathComputationService pathComputationService = new PathComputationServiceImpl( networkTransaction, - lightyServices.getBindingNotificationPublishService(), + notificationPublishService, new GnpyConsumerImpl( "http://127.0.0.1:8008", "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer()), portMapping); - pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService); + rpcRegistrations.add(new PceServiceRPCImpl(rpcProviderService, pathComputationService).getRegisteredRpc()); LOG.info("Creating OLM beans ..."); - MappingUtils mappingUtils = new MappingUtilsImpl(lightyServices.getBindingDataBroker()); + MappingUtils mappingUtils = new MappingUtilsImpl(dataBroker); CrossConnect crossConnect = initCrossConnect(mappingUtils); OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils, portMapping); - TransportpceOlmService olmPowerServiceRpc = new OlmPowerServiceRpcImpl( + OlmPowerServiceRpcImpl olmPowerServiceRpc = new OlmPowerServiceRpcImpl( new OlmPowerServiceImpl( - lightyServices.getBindingDataBroker(), - new PowerMgmtImpl( - openRoadmInterfaces, crossConnect, deviceTransactionManager, - portMapping, Long.valueOf(olmtimer1).longValue(), Long.valueOf(olmtimer2).longValue()), - deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces)); - olmProvider = new OlmProvider(lightyServices.getRpcProviderService(), olmPowerServiceRpc); + dataBroker, + new PowerMgmtImpl( + openRoadmInterfaces, + crossConnect, + deviceTransactionManager, + portMapping, + Long.valueOf(olmtimer1).longValue(), + Long.valueOf(olmtimer2).longValue()), + deviceTransactionManager, + portMapping, + mappingUtils, + openRoadmInterfaces), + rpcProviderService); + rpcRegistrations.add(olmPowerServiceRpc.getRegisteredRpc()); + LOG.info("Creating renderer beans ..."); - initOpenRoadmFactory(mappingUtils, openRoadmInterfaces, portMapping); + new OpenRoadmInterfaceFactory(mappingUtils, portMapping, openRoadmInterfaces); DeviceRendererService deviceRendererService = new DeviceRendererServiceImpl( - lightyServices.getBindingDataBroker(), deviceTransactionManager, openRoadmInterfaces, crossConnect, - mappingUtils, portMapping); + dataBroker, + deviceTransactionManager, + openRoadmInterfaces, + crossConnect, + mappingUtils, + portMapping); OtnDeviceRendererService otnDeviceRendererService = new OtnDeviceRendererServiceImpl( - crossConnect, openRoadmInterfaces, deviceTransactionManager, mappingUtils, portMapping); - rendererProvider = initRenderer( - lightyServices, olmPowerServiceRpc, deviceRendererService, otnDeviceRendererService, portMapping); + crossConnect, + openRoadmInterfaces, + deviceTransactionManager, + mappingUtils, + portMapping); + //FIXME: need mdsal.binding;api.RpcService from LightyServices + RpcService rpcService = lightyServices.getRpcService(); + RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl( + deviceRendererService, otnDeviceRendererService, dataBroker, + new NotificationSender(notificationPublishService), + portMapping, + rpcService); + rpcRegistrations.add(new DeviceRendererRPCImpl( + lightyServices.getRpcProviderService(), + deviceRendererService, + otnDeviceRendererService) + .getRegisteredRpc()); + rpcRegistrations.add(new RendererRPCImpl( + rendererServiceOperations, + lightyServices.getRpcProviderService()) + .getRegisteredRpc()); LOG.info("Creating service-handler beans ..."); - RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl( - deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc, - lightyServices.getBindingDataBroker(), - lightyServices.getBindingNotificationPublishService(), - portMapping); - ServiceDataStoreOperations serviceDataStoreOperations = - new ServiceDataStoreOperationsImpl(lightyServices.getBindingDataBroker()); - RendererListenerImpl rendererListenerImpl = new RendererListenerImpl( - pathComputationService, lightyServices.getBindingNotificationPublishService(), networkModelService); - PceListenerImpl pceListenerImpl = new PceListenerImpl( + ServiceDataStoreOperations serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker); + RendererNotificationHandler rendererListener = + new RendererNotificationHandler(pathComputationService, notificationPublishService, networkModelService); + PceNotificationHandler pceListenerImpl = new PceNotificationHandler( rendererServiceOperations, pathComputationService, - lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations); - NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl( - lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations); - OrgOpenroadmServiceService servicehandler = new ServicehandlerImpl( - pathComputationService, rendererServiceOperations, - lightyServices.getBindingNotificationPublishService(), pceListenerImpl, - rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations, - new CatalogDataStoreOperationsImpl(networkTransaction)); - servicehandlerProvider = new ServicehandlerProvider( - lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(), - lightyServices.getNotificationService(), serviceDataStoreOperations, pceListenerImpl, - rendererListenerImpl, networkModelListenerImpl, lightyServices.getBindingNotificationPublishService(), - servicehandler, - new ServiceListener( - servicehandler, serviceDataStoreOperations, lightyServices.getBindingNotificationPublishService())); + notificationPublishService, serviceDataStoreOperations); + NetworkModelNotificationHandler networkListener = new NetworkModelNotificationHandler( + notificationPublishService, serviceDataStoreOperations); + ServicehandlerImpl servicehandler = new ServicehandlerImpl( + rpcProviderService, + serviceDataStoreOperations, + pceListenerImpl, + rendererListener, + networkListener, + new CatalogDataStoreOperationsImpl(networkTransaction), + pathComputationService, + rendererServiceOperations, + notificationPublishService); + rpcRegistrations.add(servicehandler.getRegisteredRpc()); + servicehandlerProvider = new ServiceHandlerProvider( + dataBroker, + notificationService, + serviceDataStoreOperations, + pceListenerImpl, + rendererListener, + networkListener, + new ServiceListener(rpcService, serviceDataStoreOperations, notificationPublishService)); + if (activateTapi) { LOG.info("Creating tapi beans ..."); TapiLink tapiLink = new TapiLinkImpl(networkTransaction); - new TapiNetworkUtilsImpl(networkTransaction, tapiLink); - tapiProvider = initTapi( - lightyServices, servicehandler, networkTransaction, serviceDataStoreOperations, - new TapiNetworkModelListenerImpl( - networkTransaction, lightyServices.getBindingNotificationPublishService()), - tapiLink, + new TapiNetworkUtilsImpl(rpcProviderService, networkTransaction, tapiLink); + tapiProvider = new TapiProvider( + dataBroker, + rpcProviderService, + rpcService, + notificationService, + notificationPublishService, + networkTransaction, + serviceDataStoreOperations, + new TapiNetworkModelNotificationHandler(networkTransaction, notificationPublishService), new TapiNetworkModelServiceImpl( - networkTransaction, deviceTransactionManager, tapiLink, - lightyServices.getBindingNotificationPublishService())); + networkTransaction, + deviceTransactionManager, + tapiLink, + notificationPublishService)); + 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); + rpcProviderService, + notificationService, + lightyServices.getAdapterContext().currentSerializer(), + networkTransaction, null); } } @@ -233,62 +268,23 @@ 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; } - private TapiProvider initTapi( - LightyServices lightyServices, OrgOpenroadmServiceService servicehandler, - NetworkTransactionService networkTransactionService, ServiceDataStoreOperations serviceDataStoreOperations, - TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl, TapiLink tapiLink, - TapiNetworkModelService tapiNetworkModelService) { - return new TapiProvider( - lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(), - lightyServices.getNotificationService(), lightyServices.getBindingNotificationPublishService(), - networkTransactionService, servicehandler, serviceDataStoreOperations, - new TapiNetworkUtilsImpl(networkTransactionService, tapiLink), - tapiNetworkModelListenerImpl, tapiNetworkModelService); - } - - private RendererProvider initRenderer( - LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc, - DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService, - PortMapping portMapping) { - return new RendererProvider( - lightyServices.getRpcProviderService(), deviceRendererService, - otnDeviceRendererService, - new DeviceRendererRPCImpl(deviceRendererService, otnDeviceRendererService), - new TransportPCEServicePathRPCImpl( - new RendererServiceOperationsImpl( - deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc, - lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(), - portMapping))); - } - - private OpenRoadmInterfaceFactory initOpenRoadmFactory( - MappingUtils mappingUtils, OpenRoadmInterfaces openRoadmInterfaces, PortMapping portMapping) { - return new OpenRoadmInterfaceFactory(mappingUtils, portMapping, openRoadmInterfaces); - } - - private PortMapping initPortMapping(LightyServices lightyServices) { - PortMappingVersion710 portMappingVersion710 = - new PortMappingVersion710(lightyServices.getBindingDataBroker(), deviceTransactionManager); - PortMappingVersion221 portMappingVersion221 = - new PortMappingVersion221(lightyServices.getBindingDataBroker(), deviceTransactionManager); - PortMappingVersion121 portMappingVersion121 = - new PortMappingVersion121(lightyServices.getBindingDataBroker(), deviceTransactionManager); - return new PortMappingImpl( - lightyServices.getBindingDataBroker(), portMappingVersion710, portMappingVersion221, portMappingVersion121); + private PortMapping initPortMapping(DataBroker dataBroker) { + PortMappingVersion710 portMappingVersion710 = new PortMappingVersion710(dataBroker, deviceTransactionManager); + PortMappingVersion221 portMappingVersion221 = new PortMappingVersion221(dataBroker, deviceTransactionManager); + PortMappingVersion121 portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager); + return new PortMappingImpl(dataBroker, portMappingVersion710, portMappingVersion221, portMappingVersion121); } private OpenRoadmInterfaces initOpenRoadmInterfaces(MappingUtils mappingUtils, PortMapping portMapping) { @@ -298,18 +294,15 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP new OpenRoadmInterfacesImpl221(deviceTransactionManager, portMapping); OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager, portMapping); - return new OpenRoadmInterfacesImpl( - deviceTransactionManager, mappingUtils, - openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710); - + return new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils, openRoadmInterfacesImpl121, + openRoadmInterfacesImpl221, openRoadmInterfacesImpl710); } private CrossConnect initCrossConnect(MappingUtils mappingUtils) { CrossConnectImpl121 crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager); CrossConnectImpl221 crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager); CrossConnectImpl710 crossConnectImpl710 = new CrossConnectImpl710(deviceTransactionManager); - return new CrossConnectImpl( - deviceTransactionManager, mappingUtils, - crossConnectImpl121, crossConnectImpl221, crossConnectImpl710); + return new CrossConnectImpl(deviceTransactionManager, mappingUtils, crossConnectImpl121, + crossConnectImpl221, crossConnectImpl710); } }