X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dhcpservice%2Fdhcpservice-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fdhcpservice%2FDhcpProvider.java;h=f86b46424ec7de44a7f67eb263f2a0ecf9dcb214;hb=3e0f21d10b63d08737ce649b50c2412368147687;hp=7c086c23fe739dbc689f94e7a89638f0fff3b284;hpb=a36d06de791b24cfaca4854997794121739a2c59;p=vpnservice.git diff --git a/dhcpservice/dhcpservice-impl/src/main/java/org/opendaylight/vpnservice/dhcpservice/DhcpProvider.java b/dhcpservice/dhcpservice-impl/src/main/java/org/opendaylight/vpnservice/dhcpservice/DhcpProvider.java index 7c086c23..f86b4642 100644 --- a/dhcpservice/dhcpservice-impl/src/main/java/org/opendaylight/vpnservice/dhcpservice/DhcpProvider.java +++ b/dhcpservice/dhcpservice-impl/src/main/java/org/opendaylight/vpnservice/dhcpservice/DhcpProvider.java @@ -7,13 +7,18 @@ */ package org.opendaylight.vpnservice.dhcpservice; -import org.opendaylight.controller.sal.binding.api.NotificationProviderService; - -import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; +import org.opendaylight.controller.sal.binding.api.NotificationProviderService; import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.vpnservice.neutronvpn.interfaces.INeutronVpnManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.OdlInterfaceRpcService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.rpcs.rev151217.ItmRpcService; +import org.opendaylight.yangtools.concepts.Registration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,24 +29,62 @@ 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; + private OdlInterfaceRpcService interfaceManagerRpc; + private DhcpInterfaceEventListener dhcpInterfaceEventListener; + private DhcpExternalTunnelManager dhcpExternalTunnelManager; + private DhcpNeutronPortListener dhcpNeutronPortListener; + private DhcpLogicalSwitchListener dhcpLogicalSwitchListener; + private DhcpUCastMacListener dhcpUCastMacListener; + private ItmRpcService itmRpcService; + private DhcpInterfaceConfigListener dhcpInterfaceConfigListener; + private EntityOwnershipService entityOwnershipService; + private DhcpDesignatedDpnListener dhcpDesignatedDpnListener; + private DhcpL2GatewayConnectionListener dhcpL2GatewayConnectionListener; @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); + dhcpExternalTunnelManager = new DhcpExternalTunnelManager(dataBroker, mdsalManager, itmRpcService, entityOwnershipService); + dhcpPktHandler = new DhcpPktHandler(dataBroker, dhcpManager, dhcpExternalTunnelManager); + dhcpPktHandler.setPacketProcessingService(pktProcessingService); + dhcpPktHandler.setInterfaceManagerRpc(interfaceManagerRpc); packetListener = notificationService.registerNotificationListener(dhcpPktHandler); - } catch (Exception e) { - LOG.error("Error initializing services", e); + dhcpNodeListener = new NodeListener(dataBroker, dhcpManager, dhcpExternalTunnelManager); + dhcpConfigListener = new DhcpConfigListener(dataBroker, dhcpManager); + dhcpInterfaceEventListener = new DhcpInterfaceEventListener(dhcpManager, dataBroker, dhcpExternalTunnelManager); + dhcpInterfaceConfigListener = new DhcpInterfaceConfigListener(dataBroker, dhcpExternalTunnelManager); + dhcpLogicalSwitchListener = new DhcpLogicalSwitchListener(dhcpExternalTunnelManager, dataBroker); + dhcpUCastMacListener = new DhcpUCastMacListener(dhcpExternalTunnelManager, dataBroker); + dhcpUCastMacListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + dhcpNeutronPortListener = new DhcpNeutronPortListener(dataBroker, dhcpExternalTunnelManager); + dhcpNeutronPortListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + dhcpDesignatedDpnListener = new DhcpDesignatedDpnListener(dhcpExternalTunnelManager, dataBroker); + dhcpDesignatedDpnListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + dhcpL2GatewayConnectionListener = new DhcpL2GatewayConnectionListener(dataBroker, dhcpExternalTunnelManager); + dhcpL2GatewayConnectionListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + } catch (Exception e) { + LOG.error("Error initializing services {}", e); } } - public void setMdsalManager(IMdsalApiManager mdsalManager) { this.mdsalManager = mdsalManager; } + public void setNeutronVpnManager(INeutronVpnManager neutronVpnManager) { + this.neutronVpnManager = neutronVpnManager; + } + @Override public void close() throws Exception { if(packetListener != null) { @@ -50,6 +93,9 @@ public class DhcpProvider implements BindingAwareProvider, AutoCloseable { if(dhcpPktHandler != null) { dhcpPktHandler.close(); } + if(dhcpNodeListener != null) { + dhcpNodeListener.close(); + } LOG.info("DhcpProvider closed"); } @@ -57,4 +103,15 @@ public class DhcpProvider implements BindingAwareProvider, AutoCloseable { this.notificationService = notificationServiceDependency; } + public void setInterfaceManagerRpc(OdlInterfaceRpcService interfaceManagerRpc) { + this.interfaceManagerRpc = interfaceManagerRpc; + } + + public void setItmRpcService(ItmRpcService itmRpcService) { + this.itmRpcService = itmRpcService; + } + + public void setEntityOwnershipService(EntityOwnershipService entityOwnershipService) { + this.entityOwnershipService = entityOwnershipService; + } }