X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fadsal%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FActivator.java;fp=opendaylight%2Fadsal%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FActivator.java;h=0000000000000000000000000000000000000000;hp=d92c57bd8a59d9852326e2f2238af9dac2784971;hb=50f88249a65c52ba56a48852b71ce432fed2bbeb;hpb=abfa9a03550cbe9fccc4420684dced175dd6d119 diff --git a/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java deleted file mode 100644 index d92c57bd8a..0000000000 --- a/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright (c) 2013-2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.protocol_plugin.openflow.internal; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.apache.felix.dm.Component; -import org.opendaylight.controller.protocol_plugin.openflow.IDataPacketListen; -import org.opendaylight.controller.protocol_plugin.openflow.IDataPacketMux; -import org.opendaylight.controller.protocol_plugin.openflow.IDiscoveryListener; -import org.opendaylight.controller.protocol_plugin.openflow.IFlowProgrammerNotifier; -import org.opendaylight.controller.protocol_plugin.openflow.IInventoryProvider; -import org.opendaylight.controller.protocol_plugin.openflow.IInventoryShimExternalListener; -import org.opendaylight.controller.protocol_plugin.openflow.IInventoryShimInternalListener; -import org.opendaylight.controller.protocol_plugin.openflow.IOFStatisticsListener; -import org.opendaylight.controller.protocol_plugin.openflow.IOFStatisticsManager; -import org.opendaylight.controller.protocol_plugin.openflow.IReadFilterInternalListener; -import org.opendaylight.controller.protocol_plugin.openflow.IReadServiceFilter; -import org.opendaylight.controller.protocol_plugin.openflow.IRefreshInternalProvider; -import org.opendaylight.controller.protocol_plugin.openflow.ITopologyServiceShimListener; -import org.opendaylight.controller.protocol_plugin.openflow.core.IController; -import org.opendaylight.controller.protocol_plugin.openflow.core.IMessageListener; -import org.opendaylight.controller.protocol_plugin.openflow.core.internal.Controller; -import org.opendaylight.controller.sal.connection.IPluginInConnectionService; -import org.opendaylight.controller.sal.connection.IPluginOutConnectionService; -import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase; -import org.opendaylight.controller.sal.core.IContainerAware; -import org.opendaylight.controller.sal.core.IContainerListener; -import org.opendaylight.controller.sal.core.Node; -import org.opendaylight.controller.sal.flowprogrammer.IPluginInFlowProgrammerService; -import org.opendaylight.controller.sal.flowprogrammer.IPluginOutFlowProgrammerService; -import org.opendaylight.controller.sal.inventory.IPluginInInventoryService; -import org.opendaylight.controller.sal.inventory.IPluginOutInventoryService; -import org.opendaylight.controller.sal.packet.IPluginInDataPacketService; -import org.opendaylight.controller.sal.packet.IPluginOutDataPacketService; -import org.opendaylight.controller.sal.reader.IPluginInReadService; -import org.opendaylight.controller.sal.reader.IPluginOutReadService; -import org.opendaylight.controller.sal.topology.IPluginInTopologyService; -import org.opendaylight.controller.sal.topology.IPluginOutTopologyService; -import org.opendaylight.controller.sal.utils.GlobalConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Openflow protocol plugin Activator - * - * - */ -public class Activator extends ComponentActivatorAbstractBase { - protected static final Logger logger = LoggerFactory - .getLogger(Activator.class); - - /** - * Priority to determine whether to override existing protocol service. - */ - private static final int PLUGIN_PRIORITY = 10; - - /** - * Function that is used to communicate to dependency manager the list of - * known implementations for services inside a container - * - * - * @return An array containing all the CLASS objects that will be - * instantiated in order to get an fully working implementation - * Object - */ - @Override - public Object[] getImplementations() { - Object[] res = { TopologyServices.class, DataPacketServices.class, - InventoryService.class, ReadService.class, - FlowProgrammerNotifier.class }; - return res; - } - - /** - * Function that is called when configuration of the dependencies is - * required. - * - * @param c - * dependency manager Component object, used for configuring the - * dependencies exported and imported - * @param imp - * Implementation class that is being configured, needed as long - * as the same routine can configure multiple implementations - * @param containerName - * The containerName being configured, this allow also optional - * per-container different behavior if needed, usually should not - * be the case though. - */ - @Override - public void configureInstance(Component c, Object imp, String containerName) { - if (imp.equals(TopologyServices.class)) { - // export the service to be used by SAL - c.setInterface( - new String[] { IPluginInTopologyService.class.getName(), - ITopologyServiceShimListener.class.getName() }, null); - // Hook the services coming in from SAL, as optional in - // case SAL is not yet there, could happen - c.add(createContainerServiceDependency(containerName) - .setService(IPluginOutTopologyService.class) - .setCallbacks("setPluginOutTopologyService", - "unsetPluginOutTopologyService").setRequired(false)); - c.add(createServiceDependency() - .setService(IRefreshInternalProvider.class) - .setCallbacks("setRefreshInternalProvider", - "unsetRefreshInternalProvider").setRequired(false)); - } - - if (imp.equals(InventoryService.class)) { - // export the service - c.setInterface( - new String[] { - IPluginInInventoryService.class.getName(), - IInventoryShimInternalListener.class.getName(), - IInventoryProvider.class.getName() }, null); - - // Now lets add a service dependency to make sure the - // provider of service exists - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createContainerServiceDependency(containerName) - .setService(IPluginOutInventoryService.class) - .setCallbacks("setPluginOutInventoryServices", - "unsetPluginOutInventoryServices") - .setRequired(false)); - } - - if (imp.equals(DataPacketServices.class)) { - // export the service to be used by SAL - Dictionary props = new Hashtable(); - // Set the protocolPluginType property which will be used - // by SAL - props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); - props.put(GlobalConstants.PROTOCOLPLUGINPRIORITY.toString(), - Integer.valueOf(PLUGIN_PRIORITY)); - c.setInterface(IPluginInDataPacketService.class.getName(), props); - // Hook the services coming in from SAL, as optional in - // case SAL is not yet there, could happen - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - // This is required for the transmission to happen properly - c.add(createServiceDependency().setService(IDataPacketMux.class) - .setCallbacks("setIDataPacketMux", "unsetIDataPacketMux") - .setRequired(true)); - c.add(createContainerServiceDependency(containerName) - .setService(IPluginOutDataPacketService.class) - .setCallbacks("setPluginOutDataPacketService", - "unsetPluginOutDataPacketService") - .setRequired(false)); - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - if (imp.equals(ReadService.class)) { - // export the service to be used by SAL - Dictionary props = new Hashtable(); - // Set the protocolPluginType property which will be used - // by SAL - props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); - props.put(GlobalConstants.PROTOCOLPLUGINPRIORITY.toString(), - Integer.valueOf(PLUGIN_PRIORITY)); - c.setInterface(new String[] { - IReadFilterInternalListener.class.getName(), - IPluginInReadService.class.getName() }, props); - - c.add(createServiceDependency() - .setService(IReadServiceFilter.class) - .setCallbacks("setService", "unsetService") - .setRequired(true)); - - c.add(createContainerServiceDependency(containerName) - .setService(IPluginOutReadService.class) - .setCallbacks("setPluginOutReadServices", - "unsetPluginOutReadServices") - .setRequired(false)); - - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - if (imp.equals(FlowProgrammerNotifier.class)) { - // export the service to be used by SAL - Dictionary props = new Hashtable(); - // Set the protocolPluginType property which will be used - // by SAL - props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); - c.setInterface(IFlowProgrammerNotifier.class.getName(), props); - - c.add(createContainerServiceDependency(containerName) - .setService(IPluginOutFlowProgrammerService.class) - .setCallbacks("setPluginOutFlowProgrammerService", - "unsetPluginOutFlowProgrammerService") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - } - - /** - * Function that is used to communicate to dependency manager the list of - * known implementations for services that are container independent. - * - * - * @return An array containing all the CLASS objects that will be - * instantiated in order to get an fully working implementation - * Object - */ - @Override - public Object[] getGlobalImplementations() { - Object[] res = { Controller.class, OFStatisticsManager.class, - FlowProgrammerService.class, ReadServiceFilter.class, - DiscoveryService.class, DataPacketMuxDemux.class, InventoryService.class, - InventoryServiceShim.class, TopologyServiceShim.class }; - return res; - } - - /** - * Function that is called when configuration of the dependencies is - * required. - * - * @param c - * dependency manager Component object, used for configuring the - * dependencies exported and imported - * @param imp - * Implementation class that is being configured, needed as long - * as the same routine can configure multiple implementations - */ - @Override - public void configureGlobalInstance(Component c, Object imp) { - - if (imp.equals(Controller.class)) { - logger.debug("Activator configureGlobalInstance( ) is called"); - Dictionary props = new Hashtable(); - props.put("name", "Controller"); - props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); - c.setInterface(new String[] { IController.class.getName(), - IPluginInConnectionService.class.getName()}, - props); - } - - if (imp.equals(FlowProgrammerService.class)) { - // export the service to be used by SAL - Dictionary props = new Hashtable(); - // Set the protocolPluginType property which will be used - // by SAL - props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); - props.put(GlobalConstants.PROTOCOLPLUGINPRIORITY.toString(), - Integer.valueOf(PLUGIN_PRIORITY)); - c.setInterface( - new String[] { IPluginInFlowProgrammerService.class.getName(), IMessageListener.class.getName(), - IContainerListener.class.getName(), IInventoryShimExternalListener.class.getName(), - IContainerAware.class.getName() }, props); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - - c.add(createServiceDependency() - .setService(IFlowProgrammerNotifier.class) - .setCallbacks("setFlowProgrammerNotifier", - "unsetFlowProgrammerNotifier") - .setRequired(false)); - - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - if (imp.equals(ReadServiceFilter.class)) { - - c.setInterface(new String[] { IReadServiceFilter.class.getName(), IContainerListener.class.getName(), - IOFStatisticsListener.class.getName(), IContainerAware.class.getName() }, null); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IOFStatisticsManager.class) - .setCallbacks("setService", "unsetService") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IReadFilterInternalListener.class) - .setCallbacks("setReadFilterInternalListener", - "unsetReadFilterInternalListener") - .setRequired(false)); - } - - if (imp.equals(OFStatisticsManager.class)) { - - c.setInterface(new String[] { IOFStatisticsManager.class.getName(), - IInventoryShimExternalListener.class.getName() }, null); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IOFStatisticsListener.class) - .setCallbacks("setStatisticsListener", - "unsetStatisticsListener").setRequired(false)); - } - - if (imp.equals(DiscoveryService.class)) { - // export the service - c.setInterface( - new String[] { IInventoryShimExternalListener.class.getName(), IDataPacketListen.class.getName(), - IContainerListener.class.getName() }, null); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createContainerServiceDependency( - GlobalConstants.DEFAULT.toString()) - .setService(IInventoryProvider.class) - .setCallbacks("setInventoryProvider", - "unsetInventoryProvider").setRequired(true)); - c.add(createServiceDependency().setService(IDataPacketMux.class) - .setCallbacks("setIDataPacketMux", "unsetIDataPacketMux") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IDiscoveryListener.class) - .setCallbacks("setDiscoveryListener", - "unsetDiscoveryListener").setRequired(true)); - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - // DataPacket mux/demux services, which is teh actual engine - // doing the packet switching - if (imp.equals(DataPacketMuxDemux.class)) { - c.setInterface(new String[] { IDataPacketMux.class.getName(), IContainerListener.class.getName(), - IInventoryShimExternalListener.class.getName(), IContainerAware.class.getName() }, null); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IPluginOutDataPacketService.class) - .setCallbacks("setPluginOutDataPacketService", - "unsetPluginOutDataPacketService") - .setRequired(false)); - // See if there is any local packet dispatcher - c.add(createServiceDependency() - .setService(IDataPacketListen.class) - .setCallbacks("setIDataPacketListen", - "unsetIDataPacketListen").setRequired(false)); - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - if (imp.equals(InventoryService.class)) { - // export the service - Dictionary props = new Hashtable(); - props.put("scope", "Global"); - - c.setInterface( - new String[] { IPluginInInventoryService.class.getName(), - IInventoryShimInternalListener.class.getName(), - IInventoryProvider.class.getName() }, props); - - // Now lets add a service dependency to make sure the - // provider of service exists - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IPluginOutInventoryService.class, "(scope=Global)") - .setCallbacks("setPluginOutInventoryServices", - "unsetPluginOutInventoryServices") - .setRequired(true)); - } - - if (imp.equals(InventoryServiceShim.class)) { - c.setInterface(new String[] { IContainerListener.class.getName(), - IOFStatisticsListener.class.getName(), IContainerAware.class.getName() }, null); - - c.add(createServiceDependency() - .setService(IController.class, "(name=Controller)") - .setCallbacks("setController", "unsetController") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IInventoryShimInternalListener.class, "(!(scope=Global))") - .setCallbacks("setInventoryShimInternalListener", - "unsetInventoryShimInternalListener") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IInventoryShimInternalListener.class, "(scope=Global)") - .setCallbacks("setInventoryShimGlobalInternalListener", - "unsetInventoryShimGlobalInternalListener") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IInventoryShimExternalListener.class) - .setCallbacks("setInventoryShimExternalListener", - "unsetInventoryShimExternalListener") - .setRequired(false)); - c.add(createServiceDependency() - .setService(IPluginOutConnectionService.class) - .setCallbacks("setIPluginOutConnectionService", - "unsetIPluginOutConnectionService") - .setRequired(true)); - } - - if (imp.equals(TopologyServiceShim.class)) { - c.setInterface(new String[] { IDiscoveryListener.class.getName(), IContainerListener.class.getName(), - IRefreshInternalProvider.class.getName(), IInventoryShimExternalListener.class.getName(), - IContainerAware.class.getName() }, null); - c.add(createServiceDependency() - .setService(ITopologyServiceShimListener.class) - .setCallbacks("setTopologyServiceShimListener", - "unsetTopologyServiceShimListener") - .setRequired(true)); - c.add(createServiceDependency() - .setService(IOFStatisticsManager.class) - .setCallbacks("setStatisticsManager", - "unsetStatisticsManager").setRequired(false)); - } - } -}