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=2520579c169aae97b8214e1f8ccacfb3ddc7cb92;hpb=45de2604acea011072a5478eaead6ffb96e1e6ea;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 2520579c1..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,74 +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.RpcProviderService; +import org.opendaylight.mdsal.binding.api.NotificationService; 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.util.ClliNetwork; -import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory; -import org.opendaylight.transportpce.networkmodel.util.OpenRoadmNetwork; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService; +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.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.rev231221.network + .Nodes.class) + .child(Mapping.class); - private NetworkTransactionService networkTransactionService; private final DataBroker dataBroker; - private final RpcProviderService rpcProviderService; - private final TransportpceNetworkutilsService networkutilsService; private final NetConfTopologyListener topologyListener; - private final OpenRoadmFactory openRoadmFactory; - private ListenerRegistration dataTreeChangeListenerRegistration; - private ObjectRegistration networkutilsServiceRpcRegistration; + private List listeners; + private TpceNetwork tpceNetwork; + 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, - OpenRoadmFactory openRoadmFactory) { - this.networkTransactionService = networkTransactionService; + @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.openRoadmFactory = openRoadmFactory; + this.notificationService = notificationService; + this.frequenciesService = frequenciesService; + 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"); - ClliNetwork.createClliLayer(dataBroker); - OpenRoadmNetwork.createOpenRoadmNetworkLayer(dataBroker); - openRoadmFactory.createTopoLayerVersionControl(networkTransactionService); - dataTreeChangeListenerRegistration = - dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, - InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener); - networkutilsServiceRpcRegistration = - rpcProviderService.registerRpcImplementation(TransportpceNetworkutilsService.class, networkutilsService); + tpceNetwork.createLayer(NetworkUtils.CLLI_NETWORK_ID); + tpceNetwork.createLayer(NetworkUtils.UNDERLAY_NETWORK_ID); + tpceNetwork.createLayer(NetworkUtils.OVERLAY_NETWORK_ID); + tpceNetwork.createLayer(NetworkUtils.OTN_NETWORK_ID); + 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 (networkutilsServiceRpcRegistration != null) { - networkutilsServiceRpcRegistration.close(); - } + listeners.forEach(lis -> lis.close()); + listeners.clear(); + serviceHandlerListenerRegistration.close(); } - }