support to get fib service in vpn manager
[vpnservice.git] / fibmanager / fibmanager-impl / src / main / java / org / opendaylight / vpnservice / fibmanager / FibManagerProvider.java
index 2015dc0fda96845ede533e819aafbfa8c5f177df..15ea7db36dcb5e707c72db09b49e21cc9d3755d6 100644 (file)
@@ -10,21 +10,33 @@ package org.opendaylight.vpnservice.fibmanager;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.opendaylight.fibmanager.api.IFibManager;
+import org.opendaylight.vpnmanager.api.IVpnManager;
+import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.l3nexthop.rev150409.L3nexthopService;
+import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class FibManagerProvider implements BindingAwareProvider, AutoCloseable {
+public class FibManagerProvider implements BindingAwareProvider, IFibManager, AutoCloseable {
 
   private static final Logger LOG = LoggerFactory.getLogger(FibManagerProvider.class);
 
   private FibManager fibManager;
+  private IMdsalApiManager mdsalManager;
+  private IVpnManager vpnmanager;
+  private FibNodeCapableListener fibNcListener;
 
   @Override
   public void onSessionInitiated(ProviderContext session) {
     LOG.info("FibManagerProvider Session Initiated");
     try {
       final  DataBroker dataBroker = session.getSALService(DataBroker.class);
-      fibManager = new FibManager(dataBroker);
+      final RpcService nexthopService = session.getRpcService(L3nexthopService.class);
+      fibManager = new FibManager(dataBroker, nexthopService);
+      fibManager.setMdsalManager(mdsalManager);
+      fibManager.setVpnmanager(vpnmanager);
+      fibNcListener = new FibNodeCapableListener(dataBroker, fibManager);
     } catch (Exception e) {
       LOG.error("Error initializing services", e);
     }
@@ -34,6 +46,25 @@ public class FibManagerProvider implements BindingAwareProvider, AutoCloseable {
   public void close() throws Exception {
     LOG.info("FibManagerProvider Closed");
     fibManager.close();
+    fibNcListener.close();
   }
 
-}
\ No newline at end of file
+  public void setMdsalManager(IMdsalApiManager mdsalManager) {
+    this.mdsalManager = mdsalManager;
+  }
+
+  public void setVpnmanager(IVpnManager vpnmanager) {
+    this.vpnmanager = vpnmanager;
+    vpnmanager.setFibService(this);
+  }
+
+  @Override
+  public void populateFibOnNewDpn(long dpnId, long vpnId, String rd) {
+    fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
+  }
+
+  @Override
+  public void cleanUpDpnForVpn(long dpnId, long vpnId, String rd) {
+    fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
+  }
+}