Do not use RpcService in pcep-tunnel-provider 03/108403/9
authorlubos-cicut <lubos.cicut@pantheon.tech>
Fri, 13 Oct 2023 15:02:49 +0000 (17:02 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 14 Nov 2023 15:02:20 +0000 (15:02 +0000)
Migrated usage of RpcService to Rpc<?,?> for pcep-tunnel-provider.

JIRA: BGPCEP-1027
Change-Id: I93f829868681d66382b3d79595dc055720f08a37
Signed-off-by: lubos-cicut <lubos.cicut@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/CreateTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/DestroyTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/PCEPTunnelClusterSingletonService.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunnelProgramming.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunnelProviderDependencies.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/UpdateTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/test/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunnelProgrammingTest.java

index ea190df56f6a67ea87baa787cb3f3343a7a72de4..fa154b732f9b463f89c8e87b18e5381f14908cfb 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.bgpcep.pcep.topology.spi.AbstractInstructionExecutor;
 import org.opendaylight.bgpcep.programming.topology.TopologyProgrammingUtil;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
@@ -37,9 +38,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.address.family.ipv6._case.Ipv6Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.object.EndpointsObjBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.lspa.object.LspaBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLspInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLspInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.NetworkTopologyPcepService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.OperationResult;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.add.lsp.args.Arguments;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.add.lsp.args.ArgumentsBuilder;
@@ -60,15 +61,15 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 
 final class CreateTunnelInstructionExecutor extends AbstractInstructionExecutor {
     private final DataBroker dataProvider;
-    private final NetworkTopologyPcepService topologyService;
+    private final AddLsp addLsp;
     private final PcepCreateP2pTunnelInput p2pTunnelInput;
 
     CreateTunnelInstructionExecutor(final PcepCreateP2pTunnelInput p2pTunnelInput, final DataBroker dataProvider,
-            final NetworkTopologyPcepService topologyService) {
+            final RpcConsumerRegistry rpcConsumerRegistry) {
         super(p2pTunnelInput);
         this.p2pTunnelInput = p2pTunnelInput;
         this.dataProvider = dataProvider;
-        this.topologyService = topologyService;
+        addLsp = rpcConsumerRegistry.getRpc(AddLsp.class);
     }
 
     private static void checkLinkIsnotExistent(final InstanceIdentifier<Topology> tii,
@@ -151,9 +152,7 @@ final class CreateTunnelInstructionExecutor extends AbstractInstructionExecutor
         try (ReadTransaction transaction = dataProvider.newReadOnlyTransaction()) {
             AddLspInput addLspInput = createAddLspInput(transaction);
 
-            return Futures.transform(
-                    topologyService.addLsp(addLspInput),
-                    RpcResult::getResult, MoreExecutors.directExecutor());
+            return Futures.transform(addLsp.invoke(addLspInput), RpcResult::getResult, MoreExecutors.directExecutor());
         }
     }
 
index 040ab5f3ce7f74b448420ca0af3d0d43cfec57dc..db1c48f2d9d5bd4f9cf510f521f56b6fcdfc0b66 100644 (file)
@@ -17,9 +17,10 @@ import org.opendaylight.bgpcep.programming.topology.TopologyProgrammingUtil;
 import org.opendaylight.bgpcep.programming.tunnel.TunnelProgrammingUtil;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.NetworkTopologyPcepService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.OperationResult;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.RemoveLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.RemoveLspInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.Link1;
@@ -35,14 +36,14 @@ final class DestroyTunnelInstructionExecutor extends AbstractInstructionExecutor
     private static final Logger LOG = LoggerFactory.getLogger(DestroyTunnelInstructionExecutor.class);
     private final PcepDestroyTunnelInput pcepDestroyTunnelInput;
     private final DataBroker dataProvider;
-    private final NetworkTopologyPcepService topologyService;
+    private final RemoveLsp removeLsp;
 
     DestroyTunnelInstructionExecutor(final PcepDestroyTunnelInput pcepDestroyTunnelInput, final DataBroker dataProvider,
-            final NetworkTopologyPcepService topologyService) {
+            final RpcConsumerRegistry rpcConsumerRegistry) {
         super(pcepDestroyTunnelInput);
         this.pcepDestroyTunnelInput = pcepDestroyTunnelInput;
         this.dataProvider = dataProvider;
-        this.topologyService = topologyService;
+        removeLsp = rpcConsumerRegistry.getRpc(RemoveLsp.class);
     }
 
     @Override
@@ -64,9 +65,8 @@ final class DestroyTunnelInstructionExecutor extends AbstractInstructionExecutor
             final RemoveLspInputBuilder ab = new RemoveLspInputBuilder();
             ab.setName(link.augmentation(Link1.class).getSymbolicPathName());
             ab.setNode(node.nonnullSupportingNode().values().iterator().next().key().getNodeRef());
-            return Futures.transform(
-                    topologyService.removeLsp(ab.build()),
-                    RpcResult::getResult, MoreExecutors.directExecutor());
+            return Futures.transform(removeLsp.invoke(ab.build()), RpcResult::getResult,
+                MoreExecutors.directExecutor());
         }
     }
 }
index cf23562a46479acfaa88aaac3714f668b43c0e96..51c9d251fc8b7eb2606eaec0c5f587b9ded7da06 100644 (file)
@@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
@@ -21,12 +20,11 @@ import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.TopologyTunnelPcepProgrammingService;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -50,7 +48,7 @@ public final class PCEPTunnelClusterSingletonService implements ClusterSingleton
     @GuardedBy("this")
     private ClusterSingletonServiceRegistration pcepTunnelCssReg;
     @GuardedBy("this")
-    private ObjectRegistration<TunnelProgramming> reg;
+    private Registration reg;
 
     public PCEPTunnelClusterSingletonService(
             final TunnelProviderDependencies dependencies,
@@ -104,10 +102,9 @@ public final class PCEPTunnelClusterSingletonService implements ClusterSingleton
     public synchronized void instantiateServiceInstance() {
         LOG.info("Instantiate PCEP Tunnel Topology Provider Singleton Service {}", getIdentifier().getName());
 
-        final InstanceIdentifier<Topology> topology = InstanceIdentifier
-                .builder(NetworkTopology.class).child(Topology.class, new TopologyKey(tunnelTopologyId)).build();
-        reg = dependencies.getRpcProviderRegistry()
-                .registerRpcImplementation(TopologyTunnelPcepProgrammingService.class, tp, Set.of(topology));
+        reg = tp.register(InstanceIdentifier.builder(NetworkTopology.class)
+            .child(Topology.class, new TopologyKey(tunnelTopologyId))
+            .build());
         ttp.init();
     }
 
index 1f1928ee366fcb20d284b9bfcab69524cca1acfe..7fa3e63c1060e10c9d4de096678126e07ea8cff1 100644 (file)
@@ -9,28 +9,39 @@ package org.opendaylight.bgpcep.pcep.tunnel.provider;
 
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.bgpcep.pcep.topology.spi.AbstractInstructionExecutor;
 import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
 import org.opendaylight.bgpcep.programming.spi.SuccessfulRpcResult;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepCreateP2pTunnel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepCreateP2pTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepCreateP2pTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepCreateP2pTunnelOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnelOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnelOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.TopologyTunnelPcepProgrammingService;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
+import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.Rpc;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public final class TunnelProgramming implements TopologyTunnelPcepProgrammingService, AutoCloseable {
+public final class TunnelProgramming implements AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(TunnelProgramming.class);
+
     private final InstructionScheduler scheduler;
     private final TunnelProviderDependencies dependencies;
 
@@ -40,41 +51,40 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
         this.dependencies = requireNonNull(dependencies);
     }
 
-    @Override
-    public ListenableFuture<RpcResult<PcepCreateP2pTunnelOutput>> pcepCreateP2pTunnel(
+    Registration register(final KeyedInstanceIdentifier<Topology, TopologyKey> topologyPath) {
+        return dependencies.getRpcProviderRegistry().registerRpcImplementations(
+            ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+                .put(PcepCreateP2pTunnel.class, this::pcepCreateP2pTunnel)
+                .put(PcepDestroyTunnel.class, this::pcepDestroyTunnel)
+                .put(PcepUpdateTunnel.class, this::pcepUpdateTunnel)
+                .build(), Set.of(topologyPath));
+    }
+
+    @VisibleForTesting
+    ListenableFuture<RpcResult<PcepCreateP2pTunnelOutput>> pcepCreateP2pTunnel(
             final PcepCreateP2pTunnelInput p2pTunnelInput) {
-        final PcepCreateP2pTunnelOutputBuilder b = new PcepCreateP2pTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler,
-                new CreateTunnelInstructionExecutor(p2pTunnelInput,
-                        TunnelProgramming.this.dependencies.getDataBroker(),
-                        TunnelProgramming.this.dependencies.getNtps())));
-        final RpcResult<PcepCreateP2pTunnelOutput> res = SuccessfulRpcResult.create(b.build());
-        return Futures.immediateFuture(res);
+        return Futures.immediateFuture(SuccessfulRpcResult.create(new PcepCreateP2pTunnelOutputBuilder()
+            .setResult(AbstractInstructionExecutor.schedule(scheduler, new CreateTunnelInstructionExecutor(
+                p2pTunnelInput, dependencies.getDataBroker(), dependencies.getRpcConsumerRegistry())))
+            .build()));
     }
 
-    @Override
-    public ListenableFuture<RpcResult<PcepDestroyTunnelOutput>> pcepDestroyTunnel(
+    @VisibleForTesting
+    ListenableFuture<RpcResult<PcepDestroyTunnelOutput>> pcepDestroyTunnel(
             final PcepDestroyTunnelInput destroyTunnelInput) {
-        final PcepDestroyTunnelOutputBuilder b = new PcepDestroyTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler,
-                new DestroyTunnelInstructionExecutor(destroyTunnelInput,
-                        TunnelProgramming.this.dependencies.getDataBroker(),
-                        TunnelProgramming.this.dependencies.getNtps())));
-        final RpcResult<PcepDestroyTunnelOutput> res = SuccessfulRpcResult.create(b.build());
-        return Futures.immediateFuture(res);
+        return Futures.immediateFuture(SuccessfulRpcResult.create(new PcepDestroyTunnelOutputBuilder()
+            .setResult(AbstractInstructionExecutor.schedule(scheduler, new DestroyTunnelInstructionExecutor(
+                destroyTunnelInput, dependencies.getDataBroker(), dependencies.getRpcConsumerRegistry())))
+            .build()));
     }
 
-    @Override
-    public ListenableFuture<RpcResult<PcepUpdateTunnelOutput>> pcepUpdateTunnel(
+    @VisibleForTesting
+    ListenableFuture<RpcResult<PcepUpdateTunnelOutput>> pcepUpdateTunnel(
             final PcepUpdateTunnelInput updateTunnelInput) {
-        final PcepUpdateTunnelOutputBuilder b = new PcepUpdateTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler,
-                new UpdateTunnelInstructionExecutor(updateTunnelInput,
-                        TunnelProgramming.this.dependencies.getDataBroker(),
-                        TunnelProgramming.this.dependencies.getNtps())));
-
-        final RpcResult<PcepUpdateTunnelOutput> res = SuccessfulRpcResult.create(b.build());
-        return Futures.immediateFuture(res);
+        return Futures.immediateFuture(SuccessfulRpcResult.create(new PcepUpdateTunnelOutputBuilder()
+            .setResult(AbstractInstructionExecutor.schedule(scheduler, new UpdateTunnelInstructionExecutor(
+                updateTunnelInput, dependencies.getDataBroker(), dependencies.getRpcConsumerRegistry())))
+            .build()));
     }
 
     @Override
index fc58dbd9f77eeceed1b90030189d9256330763e1..66c625280eba05da35d6b3065591a5b9f205b919 100644 (file)
@@ -13,13 +13,12 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.NetworkTopologyPcepService;
 import org.osgi.framework.BundleContext;
 
 final class TunnelProviderDependencies {
     private final DataBroker dataBroker;
     private final ClusterSingletonServiceProvider cssp;
-    private final NetworkTopologyPcepService ntps;
+    private final RpcConsumerRegistry rpcConsumerRegistry;
     private final RpcProviderService rpcProviderRegistry;
     private final BundleContext bundleContext;
 
@@ -35,7 +34,7 @@ final class TunnelProviderDependencies {
         this.cssp = requireNonNull(cssp);
         this.rpcProviderRegistry = requireNonNull(rpcProviderRegistry);
         this.bundleContext = requireNonNull(bundleContext);
-        this.ntps = rpcConsumerRegistry.getRpcService(NetworkTopologyPcepService.class);
+        this.rpcConsumerRegistry = requireNonNull(rpcConsumerRegistry);
     }
 
     DataBroker getDataBroker() {
@@ -46,8 +45,8 @@ final class TunnelProviderDependencies {
         return this.cssp;
     }
 
-    NetworkTopologyPcepService getNtps() {
-        return this.ntps;
+    RpcConsumerRegistry getRpcConsumerRegistry() {
+        return this.rpcConsumerRegistry;
     }
 
     RpcProviderService getRpcProviderRegistry() {
index 29eb2d6e4e4a68bf7092eb773f34fa000cf16c2d..d633bc53cf83c53a48a06bbc547ab4db230478e7 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.bgpcep.programming.topology.TopologyProgrammingUtil;
 import org.opendaylight.bgpcep.programming.tunnel.TunnelProgrammingUtil;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.AdministrativeStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.Arguments3Builder;
@@ -26,8 +27,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.bandwidth.object.BandwidthBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.classtype.object.ClassTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.lspa.object.LspaBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.NetworkTopologyPcepService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.OperationResult;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLspInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLspInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnelInput;
@@ -44,14 +45,14 @@ final class UpdateTunnelInstructionExecutor extends AbstractInstructionExecutor
     private static final Logger LOG = LoggerFactory.getLogger(UpdateTunnelInstructionExecutor.class);
     private final PcepUpdateTunnelInput updateTunnelInput;
     private final DataBroker dataProvider;
-    private final NetworkTopologyPcepService topologyService;
+    private final UpdateLsp updateLsp;
 
     UpdateTunnelInstructionExecutor(final PcepUpdateTunnelInput updateTunnelInput, final DataBroker dataProvider,
-            final NetworkTopologyPcepService topologyService) {
+            final RpcConsumerRegistry rpcConsumerRegistry) {
         super(updateTunnelInput);
         this.updateTunnelInput = updateTunnelInput;
         this.dataProvider = dataProvider;
-        this.topologyService = topologyService;
+        updateLsp = rpcConsumerRegistry.getRpc(UpdateLsp.class);
     }
 
     @Override
@@ -70,9 +71,8 @@ final class UpdateTunnelInstructionExecutor extends AbstractInstructionExecutor
                 LOG.debug("Link or node does not exist.", e);
                 return TunelProgrammingUtil.RESULT;
             }
-            return Futures.transform(
-                topologyService.updateLsp(buildUpdateInput(link, node)),
-                RpcResult::getResult, MoreExecutors.directExecutor());
+            return Futures.transform(updateLsp.invoke(buildUpdateInput(link, node)), RpcResult::getResult,
+                MoreExecutors.directExecutor());
         }
     }
 
index 9432a037d532ecaedc3085ab6f53c834b8b2070c..29155d79d4c4b6a9984d9277ec42b2029449e107 100644 (file)
@@ -53,11 +53,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.IpPrefixCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.IpPrefixCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.ip.prefix._case.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLspInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.AddLspOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.NetworkTopologyPcepService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.RemoveLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.RemoveLspInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.RemoveLspOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLspInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.UpdateLspOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.add.lsp.args.Arguments;
@@ -117,8 +119,6 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
     private static final String IPV4_PREFIX1 = "195.20.160.40/32";
     private static final String IPV4_PREFIX2 = "201.20.160.43/32";
 
-    @Mock
-    private NetworkTopologyPcepService topologyService;
     @Mock
     private InstructionScheduler scheduler;
     @Mock
@@ -146,6 +146,12 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
     private ListenableFuture<RpcResult<UpdateLspOutput>> futureUpdateLspOutput;
     @Mock
     private ListenableFuture<RpcResult<RemoveLspOutput>> futureRemoveLspOutput;
+    @Mock
+    private AddLsp addLsp;
+    @Mock
+    private UpdateLsp updateLsp;
+    @Mock
+    private RemoveLsp removeLsp;
 
     private static Node createNode(final NodeId nodeId, final TpId tpId, final String ipv4Address) {
         return new NodeBuilder()
@@ -206,22 +212,23 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         doAnswer(invocation -> {
             addLspInput = invocation.getArgument(0);
             return futureAddLspOutput;
-        }).when(topologyService).addLsp(any(AddLspInput.class));
+        }).when(addLsp).invoke(any(AddLspInput.class));
         doAnswer(invocation -> {
             updateLspInput = invocation.getArgument(0);
             return futureUpdateLspOutput;
-        }).when(topologyService).updateLsp(any(UpdateLspInput.class));
+        }).when(updateLsp).invoke(any(UpdateLspInput.class));
         doAnswer(invocation -> {
             removeLspInput = invocation.getArgument(0);
             return futureRemoveLspOutput;
-        }).when(topologyService).removeLsp(any(RemoveLspInput.class));
+        }).when(removeLsp).invoke(any(RemoveLspInput.class));
         doReturn(instruction).when(instructionFuture).get();
         doReturn(true).when(instructionFuture).isDone();
         doReturn(instructionFuture).when(scheduler)
                 .scheduleInstruction(any(SubmitInstructionInput.class));
 
-        doReturn(topologyService).when(rpcs)
-                .getRpcService(NetworkTopologyPcepService.class);
+        doReturn(addLsp).when(rpcs).getRpc(AddLsp.class);
+        doReturn(updateLsp).when(rpcs).getRpc(UpdateLsp.class);
+        doReturn(removeLsp).when(rpcs).getRpc(RemoveLsp.class);
 
         createInitialTopology();
         tunnelProgramming = new TunnelProgramming(scheduler,