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.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;
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<Registration> 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);
}
}
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(