[CONTROLLER-2085] Do not use RpcService in Controller components Created: 03/Aug/23  Updated: 15/Jan/24  Resolved: 15/Jan/24

Status: Resolved
Project: controller
Component/s: None
Affects Version/s: None
Fix Version/s: 9.0.0

Type: Task Priority: Medium
Reporter: Robert Varga Assignee: Oleksandr Zharov
Resolution: Done Votes: 0
Labels: pt
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Blocks
blocks MDSAL-772 Remove RpcService Resolved
Issue split
split to CONTROLLER-2090 Remove support for RPCs/Actions/Notif... Resolved

 Description   

A quick grep shows at least these users of deprecated API:

./controller/benchmark/dsbenchmark/src/main/java/org/opendaylight/dsbenchmark/DsbenchmarkProvider.java:        rpcReg = rpcService.registerRpcImplementation(DsbenchmarkService.class, this);
./controller/benchmark/ntfbenchmark/src/main/java/ntfbenchmark/impl/NtfbenchmarkProvider.java:        reg = rpcService.registerRpcImplementation(NtfbenchmarkService.class, this);
./controller/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/GlobalBindingRTCServer.java:        reg = rpcProvider.registerRpcImplementation(RpcbenchPayloadService.class, this);
./controller/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RoutedBindingRTCServer.java:        reg = rpcProvider.registerRpcImplementation(RpcbenchPayloadService.class, this, paths);
./controller/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RpcbenchmarkProvider.java:        reg = providerRegistry.registerRpcImplementation(RpcbenchmarkService.class, this);
./controller/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/AkkaEntityOwnershipService.java:        reg = rpcProvider.registerRpcImplementation(OdlEntityOwnersService.class, this);
./controller/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java:        reg = rpcProviderService.registerRpcImplementation(ClusterAdminService.class,
./controller/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/OpsRegistrarTest.java:        doReturn(newReg).when(rpcService).registerRpcImplementation(any(RemoteRpcImplementation.class),
./controller/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/OpsRegistrarTest.java:        doReturn(oldReg).when(rpcService).registerRpcImplementation(any(RemoteRpcImplementation.class),
./controller/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/OpsRegistrarTest.java:        inOrder.verify(rpcService).registerRpcImplementation(any(RemoteRpcImplementation.class),
./controller/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/OpsRegistrarTest.java:        inOrder.verify(rpcService).registerRpcImplementation(any(RemoteRpcImplementation.class),
./controller/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/OpsRegistrarTest.java:        verify(rpcService).registerRpcImplementation(any(RemoteRpcImplementation.class),
./controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/BasicRpcTestProvider.java:        rpcRegistration = rpcProviderRegistry.registerRpcImplementation(BasicRpcTestService.class, this);
./controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarProvider.java:        regs.add(rpcProviderService.registerRpcImplementation(CarService.class, this));
./controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/MdsalLowLevelTestProvider.java:        registration = rpcRegistry.registerRpcImplementation(OdlMdsalLowlevelControlService.class, this);
./controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/PeopleProvider.java:                regs.add(rpcProviderService.registerRpcImplementation(CarPurchaseService.class, rpcImplementation,
./controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/PeopleProvider.java:        regs.add(rpcProviderService.registerRpcImplementation(CarPurchaseService.class, rpcImplementation));
./controller/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java:        reg = rpcProviderService.registerRpcImplementation(ToasterService.class, this);

Convert them to yang.binding.Rpc-based implementations.



 Comments   
Comment by Ruslan Kashapov [ 01/Sep/23 ]

Following components require refactoring to eliminate direct usage of RpcService incl RpcConsumerRegistry.getRpcService(Class<? extends RpcService>):

  • blueprint
  • clustering-it-karaf-cli (karaf-cli)
  • rpcbenchmark
  • sal-binding-it
  • sal-cluster-admin-karaf-cli
Comment by Robert Varga [ 15/Jan/24 ]

Also needs:

[ERROR] /home/nite/odl/controller/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/impl/YnlListener.java:[16,105] cannot find symbol
[ERROR]   symbol:   class OdlMdsalLowlevelTargetListener
[ERROR]   location: package org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215
Generated at Wed Feb 07 19:57:10 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.