From 5197d76393bd417d461a371c8e3bf6ae25b04cb8 Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Wed, 13 May 2015 12:01:21 +0530 Subject: [PATCH] RPC registration for nexthop & actionbucket change Change-Id: I587edbb8f8465666c48f9cf1789c2e81c47f5d64 Signed-off-by: Abhinav Gupta --- .../src/main/config/default-config.xml | 4 ++++ .../vpnservice/nexthopmgr/NexthopManager.java | 2 +- .../nexthopmgr/NexthopmgrProvider.java | 18 +++++++++++++++++- .../impl/rev150325/NexthopmgrImplModule.java | 3 +-- .../src/main/yang/nexthopmgr-impl.yang | 8 ++++++++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/nexthopmgr/nexthopmgr-impl/src/main/config/default-config.xml b/nexthopmgr/nexthopmgr-impl/src/main/config/default-config.xml index 18c12e61..5df30835 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/config/default-config.xml +++ b/nexthopmgr/nexthopmgr-impl/src/main/config/default-config.xml @@ -33,6 +33,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html odlif:odl-interface interfacemgr-service + + binding:binding-rpc-registry + binding-rpc-broker + diff --git a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java index ce11c4d4..ab5b2772 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java +++ b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java @@ -165,7 +165,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable { BucketInfo bucket = new BucketInfo(listActionInfo); // MAC re-write if (macAddress != null) { - listActionInfo.add(new ActionInfo(ActionType.set_field_eth_dest, new String[]{macAddress})); + listActionInfo.add(0, new ActionInfo(ActionType.set_field_eth_dest, new String[]{macAddress})); } else { //FIXME: Log message here. } diff --git a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopmgrProvider.java b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopmgrProvider.java index 2e145662..51494d92 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopmgrProvider.java +++ b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopmgrProvider.java @@ -8,13 +8,15 @@ package org.opendaylight.vpnservice.nexthopmgr; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.vpnservice.nexthopmgr.NexthopManager; import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.l3nexthop.rev150409.L3nexthopService; import org.opendaylight.idmanager.IdManager; - +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,6 +29,15 @@ public class NexthopmgrProvider implements BindingAwareProvider, AutoCloseable { private IMdsalApiManager mdsalManager; private IInterfaceManager interfaceManager; private IdManager idManager; + private RpcProviderRegistry rpcProviderRegistry; + + public RpcProviderRegistry getRpcProviderRegistry() { + return rpcProviderRegistry; + } + + public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) { + this.rpcProviderRegistry = rpcProviderRegistry; + } @Override public void onSessionInitiated(ProviderContext session) { @@ -35,6 +46,7 @@ public class NexthopmgrProvider implements BindingAwareProvider, AutoCloseable { vpnIfListener = new VpnInterfaceChangeListener(dbx, nhManager); odlIfListener = new OdlInterfaceChangeListener(dbx, nhManager, interfaceManager); idManager = new IdManager(dbx); + final BindingAwareBroker.RpcRegistration rpcRegistration = getRpcProviderRegistry().addRpcImplementation(L3nexthopService.class, nhManager); nhManager.setMdsalManager(mdsalManager); nhManager.setInterfaceManager(interfaceManager); nhManager.setIdManager(idManager); @@ -50,6 +62,10 @@ public class NexthopmgrProvider implements BindingAwareProvider, AutoCloseable { this.interfaceManager = interfaceManager; } + public NexthopmgrProvider(RpcProviderRegistry rpcRegistry) { + this.rpcProviderRegistry = rpcRegistry; + } + @Override public void close() throws Exception { vpnIfListener.close(); diff --git a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nexthopmgr/impl/rev150325/NexthopmgrImplModule.java b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nexthopmgr/impl/rev150325/NexthopmgrImplModule.java index 4b7d4aea..7d2a8f28 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nexthopmgr/impl/rev150325/NexthopmgrImplModule.java +++ b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nexthopmgr/impl/rev150325/NexthopmgrImplModule.java @@ -18,10 +18,9 @@ public class NexthopmgrImplModule extends org.opendaylight.yang.gen.v1.urn.opend @Override public java.lang.AutoCloseable createInstance() { - NexthopmgrProvider provider = new NexthopmgrProvider(); + NexthopmgrProvider provider = new NexthopmgrProvider(getRpcRegistryDependency()); provider.setMdsalManager(getMdsalutilDependency()); provider.setInterfaceManager(getOdlinterfaceDependency()); - getBrokerDependency().registerProvider(provider); return provider; } diff --git a/nexthopmgr/nexthopmgr-impl/src/main/yang/nexthopmgr-impl.yang b/nexthopmgr/nexthopmgr-impl/src/main/yang/nexthopmgr-impl.yang index 3b50fdaf..6e29481b 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/yang/nexthopmgr-impl.yang +++ b/nexthopmgr/nexthopmgr-impl/src/main/yang/nexthopmgr-impl.yang @@ -48,6 +48,14 @@ module nexthopmgr-impl { } } } + container rpc-registry { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity md-sal-binding:binding-rpc-registry; + } + } + } } } } -- 2.36.6