new PortMappingListener(networkModelService);
var lgServRPS = lightyServices.getRpcProviderService();
var lgServNS = lightyServices.getNotificationService();
+ new NetworkUtilsImpl(lgServBDB, lgServRPS);
networkModelProvider = new NetworkModelProvider(
networkTransaction,
lgServBDB,
- lgServRPS,
networkModelService, deviceTransactionManager, portMapping,
lgServNS,
- new FrequenciesServiceImpl(lgServBDB),
- new NetworkUtilsImpl(lgServBDB));
+ new FrequenciesServiceImpl(lgServBDB));
LOG.info("Creating PCE beans ...");
// TODO: pass those parameters through command line
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.jdt.annotation.NonNull;
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.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.rev220922.Network;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
.child(Mapping.class);
private final DataBroker dataBroker;
- private final RpcProviderService rpcProviderService;
- private final TransportpceNetworkutilsService networkutilsService;
private final NetConfTopologyListener topologyListener;
private List<Registration> listeners;
- private @NonNull Registration networkutilsServiceRpcRegistration;
private TpceNetwork tpceNetwork;
private ListenerRegistration<TransportpceServicehandlerListener> serviceHandlerListenerRegistration;
private NotificationService notificationService;
@Activate
public NetworkModelProvider(@Reference NetworkTransactionService networkTransactionService,
@Reference final DataBroker dataBroker,
- @Reference final RpcProviderService rpcProviderService,
@Reference final NetworkModelService networkModelService,
@Reference DeviceTransactionManager deviceTransactionManager,
@Reference PortMapping portMapping,
@Reference NotificationService notificationService,
- @Reference FrequenciesService frequenciesService,
- @Reference TransportpceNetworkutilsService networkUtils) {
+ @Reference FrequenciesService frequenciesService) {
this.dataBroker = dataBroker;
- this.rpcProviderService = rpcProviderService;
this.notificationService = notificationService;
this.frequenciesService = frequenciesService;
this.listeners = new ArrayList<>();
- this.networkutilsService = networkUtils;
this.topologyListener = new NetConfTopologyListener(networkModelService, dataBroker, deviceTransactionManager,
portMapping);
this.tpceNetwork = new TpceNetwork(networkTransactionService);
InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener));
listeners.add(dataBroker.registerDataTreeChangeListener(
DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, MAPPING_II), portMappingListener));
- networkutilsServiceRpcRegistration = rpcProviderService
- .registerRpcImplementation(TransportpceNetworkutilsService.class, networkutilsService);
TransportpceServicehandlerListener serviceHandlerListner = new ServiceHandlerListener(frequenciesService);
serviceHandlerListenerRegistration = notificationService.registerNotificationListener(serviceHandlerListner);
}
LOG.info("NetworkModelProvider Closed");
listeners.forEach(lis -> lis.close());
listeners.clear();
- if (networkutilsServiceRpcRegistration != null) {
- networkutilsServiceRpcRegistration.close();
- }
serviceHandlerListenerRegistration.close();
}
}
*/
package org.opendaylight.transportpce.networkmodel;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLink;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinks;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodes;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinks;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
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 NetworkUtilsImpl implements TransportpceNetworkutilsService {
+public class NetworkUtilsImpl {
private static final Logger LOG = LoggerFactory.getLogger(NetworkUtilsImpl.class);
private final DataBroker dataBroker;
+ private final Registration rpcReg;
@Activate
- public NetworkUtilsImpl(@Reference DataBroker dataBroker) {
+ public NetworkUtilsImpl(@Reference DataBroker dataBroker, @Reference RpcProviderService rpcProvider) {
this.dataBroker = dataBroker;
+ rpcReg = rpcProvider.registerRpcImplementations(getRpcClassToInstanceMap());
LOG.info("NetworkUtilsImpl instanciated");
}
- @Override
- public ListenableFuture<RpcResult<DeleteLinkOutput>> deleteLink(DeleteLinkInput input) {
+ @Deactivate
+ public void close() {
+ rpcReg.close();
+ LOG.info("{} closed", getClass().getSimpleName());
+ }
+
+ private ListenableFuture<RpcResult<DeleteLinkOutput>> deleteLink(DeleteLinkInput input) {
LinkId linkId = new LinkId(input.getLinkId());
// Building link instance identifier
}
}
- @Override
- public ListenableFuture<RpcResult<InitRoadmNodesOutput>> initRoadmNodes(InitRoadmNodesInput input) {
+ private ListenableFuture<RpcResult<InitRoadmNodesOutput>> initRoadmNodes(InitRoadmNodesInput input) {
boolean createRdmLinks = OrdLink.createRdm2RdmLinks(input, this.dataBroker);
if (createRdmLinks) {
return RpcResultBuilder
}
}
- @Override
- public ListenableFuture<RpcResult<InitXpdrRdmLinksOutput>> initXpdrRdmLinks(InitXpdrRdmLinksInput input) {
+ private ListenableFuture<RpcResult<InitXpdrRdmLinksOutput>> initXpdrRdmLinks(InitXpdrRdmLinksInput input) {
// Assigns user provided input in init-network-view RPC to nodeId
LOG.info("Xpdr to Roadm links rpc called");
boolean createXpdrRdmLinks = Rdm2XpdrLink.createXpdrRdmLinks(input.getLinksInput(), this.dataBroker);
}
}
- @Override
- public ListenableFuture<RpcResult<InitRdmXpdrLinksOutput>> initRdmXpdrLinks(InitRdmXpdrLinksInput input) {
+ private ListenableFuture<RpcResult<InitRdmXpdrLinksOutput>> initRdmXpdrLinks(InitRdmXpdrLinksInput input) {
LOG.info("Roadm to Xpdr links rpc called");
boolean createRdmXpdrLinks = Rdm2XpdrLink.createRdmXpdrLinks(input.getLinksInput(), this.dataBroker);
if (createRdmXpdrLinks) {
return RpcResultBuilder.<InitRdmXpdrLinksOutput>failed().buildFuture();
}
}
+
+ public final ClassToInstanceMap<Rpc<?, ?>> getRpcClassToInstanceMap() {
+ return ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+ .put(DeleteLink.class, this::deleteLink)
+ .put(InitRoadmNodes.class, this::initRoadmNodes)
+ .put(InitXpdrRdmLinks.class, this::initXpdrRdmLinks)
+ .put(InitRdmXpdrLinks.class, this::initRdmXpdrLinks)
+ .build();
+ }
}
import org.mockito.stubbing.Answer;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.NotificationService;
-import org.opendaylight.mdsal.binding.api.RpcProviderService;
import org.opendaylight.mdsal.common.api.CommitInfo;
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.service.FrequenciesService;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
@ExtendWith(MockitoExtension.class)
public class NetworkModelProviderTest {
@Mock
DataBroker dataBroker;
@Mock
- RpcProviderService rpcProviderService;
- @Mock
NetworkModelService networkModelService;
@Mock
DeviceTransactionManager deviceTransactionManager;
NotificationService notificationService;
@Mock
FrequenciesService frequenciesService;
- @Mock
- TransportpceNetworkutilsService networkUtils;
@Test
void networkmodelProviderInitTest() {
};
when(networkTransactionService.commit()).then(answer);
- new NetworkModelProvider(networkTransactionService, dataBroker, rpcProviderService, networkModelService,
- deviceTransactionManager, portMapping, notificationService, frequenciesService, networkUtils);
+ new NetworkModelProvider(networkTransactionService, dataBroker, networkModelService, deviceTransactionManager,
+ portMapping, notificationService, frequenciesService);
- verify(rpcProviderService, times(1))
- .registerRpcImplementation(any(), any(TransportpceNetworkutilsService.class));
verify(dataBroker, times(2)).registerDataTreeChangeListener(any(), any());
}
}
--- /dev/null
+/*
+ * Copyright © 2023 Orange, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.networkmodel;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
+
+@ExtendWith(MockitoExtension.class)
+class NetworkUtilsImplTest {
+ @Mock
+ DataBroker dataBroker;
+ @Mock
+ RpcProviderService rpcProvider;
+
+ @Test
+ void networkUtilsInitTest() {
+ new NetworkUtilsImpl(dataBroker, rpcProvider);
+
+ verify(rpcProvider, times(1)).registerRpcImplementations(any());
+ }
+}