Merge "BUG:5021 ELan datapath code-changes and cleanUp some code."
[vpnservice.git] / dhcpservice / dhcpservice-impl / src / main / java / org / opendaylight / vpnservice / dhcpservice / DhcpProvider.java
index 7c086c23fe739dbc689f94e7a89638f0fff3b284..5f15135fb3103bb5505ad1f2b48d3d165fe8bb0b 100644 (file)
@@ -7,8 +7,10 @@
  */
 package org.opendaylight.vpnservice.dhcpservice;
 
-import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+import org.opendaylight.vpnservice.neutronvpn.interfaces.INeutronVpnManager;
 
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
@@ -24,15 +26,26 @@ public class DhcpProvider implements BindingAwareProvider, AutoCloseable {
     private DhcpPktHandler dhcpPktHandler;
     private Registration packetListener = null;
     private NotificationProviderService notificationService;
+    private DhcpManager dhcpManager;
+    private NodeListener dhcpNodeListener;
+    private INeutronVpnManager neutronVpnManager;
+    private DhcpConfigListener dhcpConfigListener;
 
     @Override
     public void onSessionInitiated(ProviderContext session) {
         LOG.info("DhcpProvider Session Initiated");
         try {
-            final  DataBroker dataBroker = session.getSALService(DataBroker.class);
-            dhcpPktHandler = new DhcpPktHandler(dataBroker);
+            final DataBroker dataBroker = session.getSALService(DataBroker.class);
+            final PacketProcessingService pktProcessingService = session.getRpcService(PacketProcessingService.class);
+            dhcpManager = new DhcpManager(dataBroker);
+            dhcpManager.setMdsalManager(mdsalManager);
+            dhcpManager.setNeutronVpnService(neutronVpnManager);
+            dhcpPktHandler = new DhcpPktHandler(dataBroker, dhcpManager);
+            dhcpPktHandler.setPacketProcessingService(pktProcessingService);
             packetListener = notificationService.registerNotificationListener(dhcpPktHandler);
-            } catch (Exception e) {
+            dhcpNodeListener = new NodeListener(dataBroker, dhcpManager);
+            dhcpConfigListener = new DhcpConfigListener(dataBroker, dhcpManager);
+        } catch (Exception e) {
             LOG.error("Error initializing services", e);
         }
     }
@@ -42,6 +55,10 @@ public class DhcpProvider implements BindingAwareProvider, AutoCloseable {
         this.mdsalManager = mdsalManager;
     }
 
+    public void setNeutronVpnManager(INeutronVpnManager neutronVpnManager) {
+        this.neutronVpnManager = neutronVpnManager;
+    }
+
     @Override
     public void close() throws Exception {
         if(packetListener != null) {
@@ -50,6 +67,9 @@ public class DhcpProvider implements BindingAwareProvider, AutoCloseable {
         if(dhcpPktHandler != null) {
             dhcpPktHandler.close();
         }
+        if(dhcpNodeListener != null) {
+            dhcpNodeListener.close();
+        }
         LOG.info("DhcpProvider closed");
     }