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;
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;
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.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;
// 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<Registration> rpcRegistrations = new ArrayList<>();
public TransportPCEImpl(
LightyServices lightyServices, boolean activateNbiNotification, boolean activateTapi,
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(
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(
portMapping);
ServiceDataStoreOperations serviceDataStoreOperations =
new ServiceDataStoreOperationsImpl(lgServBDB);
- RendererListenerImpl rendererListenerImpl =
- new RendererListenerImpl(pathComputationService, lgServBNPS, networkModelService);
- PceListenerImpl pceListenerImpl = new PceListenerImpl(
+ RendererNotificationHandler rendererNotificationHandler =
+ new RendererNotificationHandler(pathComputationService, lgServBNPS, networkModelService);
+ PceNotificationHandler pceListenerImpl = new PceNotificationHandler(
rendererServiceOperations, pathComputationService,
lgServBNPS, serviceDataStoreOperations);
- NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
+ NetworkModelNotificationHandler networkModelNotificationHandler = new NetworkModelNotificationHandler(
lgServBNPS, serviceDataStoreOperations);
- OrgOpenroadmServiceService servicehandler = new ServicehandlerImpl(
+ ServicehandlerImpl servicehandler = new ServicehandlerImpl(lgServRPS,
pathComputationService, rendererServiceOperations,
lgServBNPS, pceListenerImpl,
- rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations,
+ rendererNotificationHandler, networkModelNotificationHandler, serviceDataStoreOperations,
new CatalogDataStoreOperationsImpl(networkTransaction));
- servicehandlerProvider = new ServicehandlerProvider(
- lgServBDB, lgServRPS,
+ rpcRegistrations.add(servicehandler.getRegisteredRpc());
+ servicehandlerProvider = new ServiceHandlerProvider(
+ lgServBDB,
lgServNS, serviceDataStoreOperations, pceListenerImpl,
- rendererListenerImpl, networkModelListenerImpl, lgServBNPS,
- servicehandler,
+ rendererNotificationHandler, networkModelNotificationHandler,
new ServiceListener(
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(
+ new TapiNetworkModelNotificationHandler(
networkTransaction, lgServBNPS),
tapiLink,
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);
}
}
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,
+ 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(