import io.lighty.core.controller.api.AbstractLightyModule;
import io.lighty.core.controller.api.LightyServices;
+
+import java.util.Arrays;
+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.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
+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.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.service.PathComputationService;
import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
import org.opendaylight.transportpce.renderer.RendererProvider;
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
+import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface710;
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
// Adding OTN interface
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperationsImpl;
import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
+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.service.ServiceDataStoreOperations;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
-import org.opendaylight.transportpce.servicehandler.service.ServiceHandlerOperations;
-import org.opendaylight.transportpce.servicehandler.service.ServiceHandlerOperationsImpl;
import org.opendaylight.transportpce.tapi.impl.TapiProvider;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.TransportpceOlmService;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.OrgOpenroadmServiceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final TapiProvider tapiProvider;
// service-handler beans
private final ServicehandlerProvider servicehandlerProvider;
+ // nbi-notifications beans
+ private NbiNotificationsProvider nbiNotificationsProvider;
+ /**
+ * List of publisher topics.
+ */
+ private final List<String> publisherTopicList =
+ Arrays.asList("PceListener", "ServiceHandlerOperations", "ServiceHandler", "RendererListener");
- public TransportPCEImpl(LightyServices lightyServices) {
+ public TransportPCEImpl(LightyServices lightyServices, boolean activateNbiNotification) {
LOG.info("Initializing transaction providers ...");
deviceTransactionManager = new DeviceTransactionManagerImpl(lightyServices.getBindingMountPointService(),
MAX_DURATION_TO_SUBMIT_TRANSACTION);
RequestProcessor requestProcessor = new RequestProcessor(lightyServices.getBindingDataBroker());
networkTransaction = new NetworkTransactionImpl(requestProcessor);
- LOG.info("Creating PCE beans ...");
- PathComputationService pathComputationService = new PathComputationServiceImpl(
- networkTransaction,
- lightyServices.getBindingNotificationPublishService(),
- lightyServices.getAdapterContext().currentSerializer()
- );
- pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService);
-
LOG.info("Creating network-model beans ...");
R2RLinkDiscovery linkDiscoveryImpl = new R2RLinkDiscovery(lightyServices.getBindingDataBroker(),
deviceTransactionManager, networkTransaction);
OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils);
PortMapping portMapping = initPortMapping(lightyServices, openRoadmInterfaces);
NetworkModelService networkModelService = new NetworkModelServiceImpl(networkTransaction, linkDiscoveryImpl,
- portMapping);
+ portMapping, lightyServices.getBindingNotificationPublishService());
FrequenciesService networkModelWavelengthService =
new FrequenciesServiceImpl(lightyServices.getBindingDataBroker());
NetConfTopologyListener netConfTopologyListener = new NetConfTopologyListener(networkModelService,
lightyServices.getRpcProviderService(), networkutilsServiceImpl, netConfTopologyListener,
lightyServices.getNotificationService(), networkModelWavelengthService);
+ LOG.info("Creating PCE beans ...");
+ // TODO: pass those parameters through command line
+ GnpyConsumer gnpyConsumer = new GnpyConsumerImpl("http://127.0.0.1:8008",
+ "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer());
+ PathComputationService pathComputationService = new PathComputationServiceImpl(
+ networkTransaction,
+ lightyServices.getBindingNotificationPublishService(),
+ gnpyConsumer,
+ portMapping
+ );
+ pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService);
+
LOG.info("Creating OLM beans ...");
CrossConnect crossConnect = initCrossConnect(mappingUtils);
PowerMgmt powerMgmt = new PowerMgmtImpl(lightyServices.getBindingDataBroker(), openRoadmInterfaces,
RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl(deviceRendererService,
otnDeviceRendererService, olmPowerServiceRpc, lightyServices.getBindingDataBroker(),
lightyServices.getBindingNotificationPublishService());
+ ServiceDataStoreOperations serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(
+ lightyServices.getBindingDataBroker());
+ RendererListenerImpl rendererListenerImpl = new RendererListenerImpl(pathComputationService,
+ lightyServices.getBindingNotificationPublishService());
+ PceListenerImpl pceListenerImpl = new PceListenerImpl(rendererServiceOperations, pathComputationService,
+ lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
+ NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
+ lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
+ ServicehandlerImpl servicehandler = new ServicehandlerImpl(lightyServices.getBindingDataBroker(),
+ pathComputationService, rendererServiceOperations, lightyServices.getBindingNotificationPublishService(),
+ pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations);
servicehandlerProvider = new ServicehandlerProvider(lightyServices.getBindingDataBroker(),
- lightyServices.getRpcProviderService(), lightyServices.getNotificationService(), pathComputationService,
- rendererServiceOperations, lightyServices.getBindingNotificationPublishService());
- tapiProvider = initTapi(lightyServices, rendererServiceOperations, pathComputationService);
+ lightyServices.getRpcProviderService(), lightyServices.getNotificationService(),
+ serviceDataStoreOperations, pceListenerImpl, rendererListenerImpl, networkModelListenerImpl,
+ servicehandler);
+ tapiProvider = initTapi(lightyServices, servicehandler);
+ if(activateNbiNotification) {
+ LOG.info("Creating nbi-notifications beans ...");
+ nbiNotificationsProvider = new NbiNotificationsProvider(
+ publisherTopicList, null, null, lightyServices.getRpcProviderService(),
+ lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer());
+ }
}
@Override
servicehandlerProvider.init();
LOG.info("Initializing tapi provider ...");
tapiProvider.init();
+ LOG.info("Initializing nbi-notifications provider ...");
+ nbiNotificationsProvider.init();
LOG.info("Init done.");
return true;
}
@Override
protected boolean stopProcedure() {
+ nbiNotificationsProvider.close();
+ LOG.info("Shutting down nbi-notifications provider ...");
tapiProvider.close();
LOG.info("Shutting down service-handler provider ...");
servicehandlerProvider.close();
* @param rendererServiceOperations RendererServiceOperations
* @return TapiProvider instance
*/
- private TapiProvider initTapi(LightyServices lightyServices, RendererServiceOperations rendererServiceOperations,
- PathComputationService pathComputationService) {
- RendererListenerImpl rendererListenerImpl = new RendererListenerImpl(pathComputationService,
- lightyServices.getBindingNotificationPublishService());
- ServiceDataStoreOperations serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(
- lightyServices.getBindingDataBroker());
- PceListenerImpl pceListenerImpl = new PceListenerImpl(rendererServiceOperations, pathComputationService,
- lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
- NetworkModelListenerImpl networkModelListenerImpl =
- new NetworkModelListenerImpl(lightyServices.getBindingNotificationPublishService(),
- serviceDataStoreOperations);
- ServiceHandlerOperations serviceHandlerOperations = new ServiceHandlerOperationsImpl(
- lightyServices.getBindingDataBroker(), pathComputationService, rendererServiceOperations,
- lightyServices.getBindingNotificationPublishService(), pceListenerImpl, rendererListenerImpl,
- networkModelListenerImpl);
+ private TapiProvider initTapi(LightyServices lightyServices, OrgOpenroadmServiceService servicehandler) {
return new TapiProvider(lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
- serviceHandlerOperations, new TapiListener());
+ servicehandler, new TapiListener());
}
/**
OpenRoadmInterfaces openRoadmInterfaces, PortMapping portMapping) {
OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping, openRoadmInterfaces);
OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping, openRoadmInterfaces);
+ OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping, openRoadmInterfaces);
OpenRoadmOtnInterface221 openRoadmOtnInterface221 = new OpenRoadmOtnInterface221(portMapping,
openRoadmInterfaces);
return new OpenRoadmInterfaceFactory(mappingUtils, openRoadmInterface121, openRoadmInterface221,
- openRoadmOtnInterface221);
+ openRoadmInterface710, openRoadmOtnInterface221);
}
/**