From b9abb1de16eecd2467e9c8ca1bde527ccf8ca96b Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Wed, 23 Jan 2019 22:40:42 +0100 Subject: [PATCH] bind missing Routed RPC PacketProcessingService (see OPNFLWPLUG-1059) https://jira.opendaylight.org/browse/OPNFLWPLUG-1059 --- .../simple/InMemoryControllerModule.java | 2 ++ .../mdsal/simple/MdsalModule.java | 26 +++++++++++++++++-- .../simple/OpenFlowPluginModule.java | 7 +++++ .../simple/test/InMemoryMdsalModuleTest.java | 6 +++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/opendaylight/controller/simple/InMemoryControllerModule.java b/src/main/java/org/opendaylight/controller/simple/InMemoryControllerModule.java index f580e2f..145fe4a 100644 --- a/src/main/java/org/opendaylight/controller/simple/InMemoryControllerModule.java +++ b/src/main/java/org/opendaylight/controller/simple/InMemoryControllerModule.java @@ -81,6 +81,8 @@ protected void configureCloseables() { bind(DOMMountPointService.class).to(DOMMountPointServiceImpl.class); DOMRpcRouter domRpcRouter = DOMRpcRouter.newInstance(domSchemaService); + bind(DOMRpcRouter.class).toInstance(domRpcRouter); + DOMRpcService rpcService = domRpcRouter.getRpcService(); bind(DOMRpcService.class).toInstance(rpcService); diff --git a/src/main/java/org/opendaylight/mdsal/simple/MdsalModule.java b/src/main/java/org/opendaylight/mdsal/simple/MdsalModule.java index df7363f..b8d911f 100644 --- a/src/main/java/org/opendaylight/mdsal/simple/MdsalModule.java +++ b/src/main/java/org/opendaylight/mdsal/simple/MdsalModule.java @@ -13,13 +13,20 @@ import org.opendaylight.controller.sal.core.compat.DOMDataBrokerAdapter; import org.opendaylight.controller.sal.core.compat.DOMNotificationServiceAdapter; 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.binding.dom.adapter.BindingDOMDataBrokerAdapter; +import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcProviderServiceAdapter; +import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcServiceAdapter; import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl; +import org.opendaylight.mdsal.dom.broker.DOMRpcRouter; import org.opendaylight.mdsal.dom.broker.pingpong.PingPongDataBroker; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService; import org.opendaylight.mdsal.eos.binding.dom.adapter.BindingDOMEntityOwnershipServiceAdapter; @@ -96,11 +103,26 @@ BindingToNormalizedNodeCodec getBindingToNormalizedNodeCodec( @Singleton ClusterSingletonServiceProvider getClusterSingletonServiceProvider(DOMEntityOwnershipService eos) { return new DOMClusterSingletonServiceProviderImpl(eos); } -/* + +// @Provides +// @Singleton DOMRpcService getDOMService(org.opendaylight.controller.md.sal.dom.api.DOMRpcService controllerDRSA) { +// return new DOMRpcServiceAdapter(controllerDRSA); +// } + + @Provides + @Singleton + RpcConsumerRegistry getRpcConsumerRegistry(DOMRpcService domService, BindingToNormalizedNodeCodec codec) { + return new BindingDOMRpcServiceAdapter(domService, codec); + } + @Provides @Singleton RpcProviderService getRpcProviderService(DOMRpcProviderService domRpcRegistry, BindingToNormalizedNodeCodec codec) { return new BindingDOMRpcProviderServiceAdapter(domRpcRegistry, codec); } -*/ + + @Provides + @Singleton DOMRpcProviderService getDOMRpcProviderService(DOMRpcRouter domRpcRouter) { + return domRpcRouter.getRpcProviderService(); + } } diff --git a/src/main/java/org/opendaylight/openflowplugin/simple/OpenFlowPluginModule.java b/src/main/java/org/opendaylight/openflowplugin/simple/OpenFlowPluginModule.java index 3f40e36..c284f0b 100644 --- a/src/main/java/org/opendaylight/openflowplugin/simple/OpenFlowPluginModule.java +++ b/src/main/java/org/opendaylight/openflowplugin/simple/OpenFlowPluginModule.java @@ -13,6 +13,7 @@ import org.opendaylight.controller.simple.ConfigReader; import org.opendaylight.infrautils.inject.guice.AutoWiringModule; import org.opendaylight.infrautils.inject.guice.GuiceClassPathBinder; +import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; import org.opendaylight.mdsal.simple.PingPong; import org.opendaylight.openflowjava.protocol.impl.core.SwitchConnectionProviderFactoryImpl; import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProviderFactory; @@ -22,6 +23,7 @@ import org.opendaylight.openflowplugin.impl.ForwardingPingPongDataBroker; import org.opendaylight.openflowplugin.impl.PingPongDataBroker; import org.opendaylight.openflowplugin.impl.configuration.ConfigurationServiceFactoryImpl; +import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.forwardingrules.manager.config.rev160511.ForwardingRulesManagerConfig; @@ -37,6 +39,11 @@ protected void configureMore() { bind(SwitchConnectionProviderFactory.class).to(SwitchConnectionProviderFactoryImpl.class); } + @Provides + @Singleton PacketProcessingService getPacketProcessingService(RpcConsumerRegistry rpcConsumerRegistry) { + return rpcConsumerRegistry.getRpcService(PacketProcessingService.class); + } + @Provides @Singleton PingPongDataBroker getPingPongDataBroker(@PingPong DataBroker pingPongDataBroker) { return new ForwardingPingPongDataBroker(pingPongDataBroker); diff --git a/src/test/java/org/opendaylight/mdsal/simple/test/InMemoryMdsalModuleTest.java b/src/test/java/org/opendaylight/mdsal/simple/test/InMemoryMdsalModuleTest.java index 61db4ff..b67a4e6 100644 --- a/src/test/java/org/opendaylight/mdsal/simple/test/InMemoryMdsalModuleTest.java +++ b/src/test/java/org/opendaylight/mdsal/simple/test/InMemoryMdsalModuleTest.java @@ -16,6 +16,8 @@ import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule2; import org.opendaylight.infrautils.simple.testutils.AbstractSimpleDistributionTest; 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.simple.PingPong; public class InMemoryMdsalModuleTest extends AbstractSimpleDistributionTest { @@ -25,7 +27,11 @@ public class InMemoryMdsalModuleTest extends AbstractSimpleDistributionTest { @Inject @PingPong DataBroker pingPongDataBroker; @Inject DataBroker dataBroker; + @Inject RpcProviderService rpcProviderService; + @Inject RpcConsumerRegistry rpcConsumerRegistry; + @Test public void testDataBroker() throws InterruptedException, ExecutionException { dataBroker.newReadWriteTransaction().commit().get(); } + }