RPC registration for nexthop & actionbucket change
[vpnservice.git] / nexthopmgr / nexthopmgr-impl / src / main / java / org / opendaylight / vpnservice / nexthopmgr / NexthopmgrProvider.java
index 68758b6d079de4c3420fb75f228ea4249a996e97..51494d92efcbffdea25f8bf7a76cf1712d792718 100644 (file)
@@ -8,10 +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;
 
@@ -21,16 +26,46 @@ public class NexthopmgrProvider implements BindingAwareProvider, AutoCloseable {
     private VpnInterfaceChangeListener vpnIfListener;
     private OdlInterfaceChangeListener odlIfListener;
     private NexthopManager nhManager;
+    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) {
         final  DataBroker dbx = session.getSALService(DataBroker.class);
         nhManager = new NexthopManager(dbx);
         vpnIfListener = new VpnInterfaceChangeListener(dbx, nhManager);
-        odlIfListener = new OdlInterfaceChangeListener(dbx, nhManager);
+        odlIfListener = new OdlInterfaceChangeListener(dbx, nhManager, interfaceManager);
+        idManager = new IdManager(dbx);
+        final BindingAwareBroker.RpcRegistration<L3nexthopService> rpcRegistration = getRpcProviderRegistry().addRpcImplementation(L3nexthopService.class, nhManager);
+        nhManager.setMdsalManager(mdsalManager);
+        nhManager.setInterfaceManager(interfaceManager);
+        nhManager.setIdManager(idManager);
+        nhManager.createNexthopPointerPool();
         LOG.info("NexthopmgrProvider Session Initiated");
     }
 
+    public void setMdsalManager(IMdsalApiManager mdsalManager) {
+        this.mdsalManager = mdsalManager;
+    }
+
+    public void setInterfaceManager(IInterfaceManager interfaceManager) {
+        this.interfaceManager = interfaceManager;
+    }
+
+    public NexthopmgrProvider(RpcProviderRegistry rpcRegistry) {
+        this.rpcProviderRegistry = rpcRegistry;
+    }
+
     @Override
     public void close() throws Exception {
         vpnIfListener.close();