X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=networkmodel%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnetworkmodel%2FNetworkModelProvider.java;h=7a95388351da7c61c5409c619d0a9e9a58199be3;hb=b1b3bafd549bb501937cea5c976d5344608b6ed3;hp=0abee07537959a79b96cb48a0081ba83422c5934;hpb=56d1795b647693ec1d620d6aca2c4003e3b302ca;p=transportpce.git diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java index 0abee0753..7a9538835 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java @@ -7,99 +7,98 @@ */ package org.opendaylight.transportpce.networkmodel; +import java.util.ArrayList; +import java.util.List; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; import org.opendaylight.mdsal.binding.api.NotificationService; -import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.InstanceIdentifiers; import org.opendaylight.transportpce.common.NetworkUtils; +import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.mapping.PortMapping; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.networkmodel.listeners.PortMappingListener; import org.opendaylight.transportpce.networkmodel.listeners.ServiceHandlerListener; import org.opendaylight.transportpce.networkmodel.service.FrequenciesService; +import org.opendaylight.transportpce.networkmodel.service.NetworkModelService; import org.opendaylight.transportpce.networkmodel.util.TpceNetwork; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.concepts.ObjectRegistration; +import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Component public class NetworkModelProvider { private static final Logger LOG = LoggerFactory.getLogger(NetworkModelProvider.class); private static final InstanceIdentifier MAPPING_II = InstanceIdentifier.create(Network.class) - .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network + .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network .Nodes.class) .child(Mapping.class); private final DataBroker dataBroker; - private final RpcProviderService rpcProviderService; - private final TransportpceNetworkutilsService networkutilsService; private final NetConfTopologyListener topologyListener; - private ListenerRegistration dataTreeChangeListenerRegistration; - private ListenerRegistration mappingListenerRegistration; - private ObjectRegistration networkutilsServiceRpcRegistration; + private List listeners; private TpceNetwork tpceNetwork; - private ListenerRegistration serviceHandlerListenerRegistration; + private Registration serviceHandlerListenerRegistration; private NotificationService notificationService; private FrequenciesService frequenciesService; private PortMappingListener portMappingListener; - public NetworkModelProvider(NetworkTransactionService networkTransactionService, final DataBroker dataBroker, - final RpcProviderService rpcProviderService, final TransportpceNetworkutilsService networkutilsService, - final NetConfTopologyListener topologyListener, NotificationService notificationService, - FrequenciesService frequenciesService, PortMappingListener portMappingListener) { + @Activate + public NetworkModelProvider(@Reference NetworkTransactionService networkTransactionService, + @Reference final DataBroker dataBroker, + @Reference final NetworkModelService networkModelService, + @Reference DeviceTransactionManager deviceTransactionManager, + @Reference PortMapping portMapping, + @Reference NotificationService notificationService, + @Reference FrequenciesService frequenciesService) { this.dataBroker = dataBroker; - this.rpcProviderService = rpcProviderService; - this.networkutilsService = networkutilsService; - this.topologyListener = topologyListener; - this.tpceNetwork = new TpceNetwork(networkTransactionService); this.notificationService = notificationService; this.frequenciesService = frequenciesService; - this.portMappingListener = portMappingListener; + this.listeners = new ArrayList<>(); + this.topologyListener = new NetConfTopologyListener(networkModelService, dataBroker, deviceTransactionManager, + portMapping); + this.tpceNetwork = new TpceNetwork(networkTransactionService); + this.portMappingListener = new PortMappingListener(networkModelService); + this.init(); } /** * Method called when the blueprint container is created. */ - public void init() { + private void init() { LOG.info("NetworkModelProvider Session Initiated"); tpceNetwork.createLayer(NetworkUtils.CLLI_NETWORK_ID); tpceNetwork.createLayer(NetworkUtils.UNDERLAY_NETWORK_ID); tpceNetwork.createLayer(NetworkUtils.OVERLAY_NETWORK_ID); tpceNetwork.createLayer(NetworkUtils.OTN_NETWORK_ID); - dataTreeChangeListenerRegistration = dataBroker.registerDataTreeChangeListener( - DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, - InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener); - mappingListenerRegistration = dataBroker.registerDataTreeChangeListener( - DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, MAPPING_II), portMappingListener); - networkutilsServiceRpcRegistration = - rpcProviderService.registerRpcImplementation(TransportpceNetworkutilsService.class, networkutilsService); - TransportpceServicehandlerListener serviceHandlerListner = - new ServiceHandlerListener(frequenciesService); - serviceHandlerListenerRegistration = notificationService.registerNotificationListener(serviceHandlerListner); + listeners.add(dataBroker.registerTreeChangeListener( + DataTreeIdentifier.of(LogicalDatastoreType.OPERATIONAL, + InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), + topologyListener)); + listeners.add(dataBroker.registerTreeChangeListener( + DataTreeIdentifier.of(LogicalDatastoreType.CONFIGURATION, MAPPING_II), portMappingListener)); + serviceHandlerListenerRegistration = notificationService.registerCompositeListener( + new ServiceHandlerListener(frequenciesService).getCompositeListener()); } /** * Method called when the blueprint container is destroyed. */ + @Deactivate public void close() { LOG.info("NetworkModelProvider Closed"); - if (dataTreeChangeListenerRegistration != null) { - dataTreeChangeListenerRegistration.close(); - } - if (mappingListenerRegistration != null) { - mappingListenerRegistration.close(); - } - if (networkutilsServiceRpcRegistration != null) { - networkutilsServiceRpcRegistration.close(); - } + listeners.forEach(lis -> lis.close()); + listeners.clear(); serviceHandlerListenerRegistration.close(); } }