X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Farphandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Farphandler%2Finternal%2FActivator.java;h=248623cce8326e93288498d9af9ec15d92b100a2;hb=4ca5ea31c027f33cd4c8c84adece356c354c1c3a;hp=e886813b4500d196165ed2cb53bf392b30882684;hpb=29f7cfb54b580928c7feac63abce028a7014b0d5;p=controller.git diff --git a/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/Activator.java b/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/Activator.java index e886813b45..248623cce8 100644 --- a/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/Activator.java +++ b/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/Activator.java @@ -9,19 +9,25 @@ package org.opendaylight.controller.arphandler.internal; -import java.util.Hashtable; import java.util.Dictionary; -import org.apache.felix.dm.Component; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.HashSet; +import java.util.Hashtable; +import java.util.Set; +import org.apache.felix.dm.Component; +import org.opendaylight.controller.clustering.services.ICacheUpdateAware; +import org.opendaylight.controller.clustering.services.IClusterContainerServices; +import org.opendaylight.controller.connectionmanager.IConnectionManager; import org.opendaylight.controller.hosttracker.IfHostListener; import org.opendaylight.controller.hosttracker.IfIptoHost; import org.opendaylight.controller.hosttracker.hostAware.IHostFinder; import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase; -import org.opendaylight.controller.sal.packet.IListenDataPacket; import org.opendaylight.controller.sal.packet.IDataPacketService; +import org.opendaylight.controller.sal.packet.IListenDataPacket; import org.opendaylight.controller.switchmanager.ISwitchManager; +import org.opendaylight.controller.topologymanager.ITopologyManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Activator extends ComponentActivatorAbstractBase { protected static final Logger logger = LoggerFactory @@ -76,20 +82,41 @@ public class Activator extends ComponentActivatorAbstractBase { public void configureInstance(Component c, Object imp, String containerName) { if (imp.equals(ArpHandler.class)) { // export the service - Dictionary props = new Hashtable(); + Dictionary props = new Hashtable(); props.put("salListenerName", "arphandler"); - c.setInterface(new String[] { IHostFinder.class.getName(), - IListenDataPacket.class.getName() }, props); + Set propSet = new HashSet(); + propSet.add(ArpHandler.ARP_EVENT_CACHE_NAME); + props.put("cachenames", propSet); + + c.setInterface(new String[] { + IHostFinder.class.getName(), + IListenDataPacket.class.getName(), + ICacheUpdateAware.class.getName()}, props); + + // We need connection mgr to distribute packet out across the cluster + c.add(createServiceDependency().setService( + IConnectionManager.class).setCallbacks("setConnectionManager", + "unsetConnectionManager").setRequired(true)); + c.add(createContainerServiceDependency(containerName).setService( ISwitchManager.class).setCallbacks("setSwitchManager", "unsetSwitchManager").setRequired(true)); + c.add(createContainerServiceDependency(containerName).setService( + ITopologyManager.class).setCallbacks("setTopologyManager", + "unsetTopologyMananger").setRequired(true)); + c.add(createContainerServiceDependency(containerName).setService( IDataPacketService.class).setCallbacks( "setDataPacketService", "unsetDataPacketService") .setRequired(true)); + c.add(createContainerServiceDependency(containerName).setService( + IClusterContainerServices.class).setCallbacks( + "setClusterContainerService", "unsetClusterContainerService") + .setRequired(true)); + // the Host Listener is optional c.add(createContainerServiceDependency(containerName).setService( IfHostListener.class).setCallbacks("setHostListener",