X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FActivator.java;h=05736f779e6111f2a7619dc7734aeca0362717ef;hb=dfa4383b0b5c9c6de340526a62aef731922fa29f;hp=6c09abbdc7cd851df41e9e72b2bba987cd6171e9;hpb=eed57e2b0afd50823bc882123b6cbac04bcc48d9;p=controller.git diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java index 6c09abbdc7..05736f779e 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java @@ -28,6 +28,8 @@ import org.opendaylight.controller.protocol_plugin.openflow.ITopologyServiceShim 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.IContainerListener; import org.opendaylight.controller.sal.core.Node; @@ -59,6 +61,7 @@ public class Activator extends ComponentActivatorAbstractBase { * are done by the ComponentActivatorAbstractBase. * */ + @Override public void init() { } @@ -67,6 +70,7 @@ public class Activator extends ComponentActivatorAbstractBase { * ComponentActivatorAbstractBase * */ + @Override public void destroy() { } @@ -79,6 +83,7 @@ public class Activator extends ComponentActivatorAbstractBase { * instantiated in order to get an fully working implementation * Object */ + @Override public Object[] getImplementations() { Object[] res = { TopologyServices.class, DataPacketServices.class, InventoryService.class, ReadService.class, @@ -101,6 +106,7 @@ public class Activator extends ComponentActivatorAbstractBase { * 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 @@ -162,6 +168,11 @@ public class Activator extends ComponentActivatorAbstractBase { .setCallbacks("setPluginOutDataPacketService", "unsetPluginOutDataPacketService") .setRequired(false)); + c.add(createServiceDependency() + .setService(IPluginOutConnectionService.class) + .setCallbacks("setIPluginOutConnectionService", + "unsetIPluginOutConnectionService") + .setRequired(true)); } if (imp.equals(ReadService.class)) { @@ -178,11 +189,18 @@ public class Activator extends ComponentActivatorAbstractBase { .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)) { @@ -198,6 +216,11 @@ public class Activator extends ComponentActivatorAbstractBase { .setCallbacks("setPluginOutFlowProgrammerService", "unsetPluginOutFlowProgrammerService") .setRequired(true)); + c.add(createServiceDependency() + .setService(IPluginOutConnectionService.class) + .setCallbacks("setIPluginOutConnectionService", + "unsetIPluginOutConnectionService") + .setRequired(true)); } } @@ -210,10 +233,11 @@ public class Activator extends ComponentActivatorAbstractBase { * 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, + DiscoveryService.class, DataPacketMuxDemux.class, InventoryService.class, InventoryServiceShim.class, TopologyServiceShim.class }; return res; } @@ -229,13 +253,17 @@ public class Activator extends ComponentActivatorAbstractBase { * 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"); - c.setInterface(IController.class.getName(), props); + props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW); + c.setInterface(new String[] { IController.class.getName(), + IPluginInConnectionService.class.getName()}, + props); } if (imp.equals(FlowProgrammerService.class)) { @@ -263,6 +291,11 @@ public class Activator extends ComponentActivatorAbstractBase { "unsetsetFlowProgrammerNotifier") .setRequired(false)); + c.add(createServiceDependency() + .setService(IPluginOutConnectionService.class) + .setCallbacks("setIPluginOutConnectionService", + "unsetIPluginOutConnectionService") + .setRequired(true)); } if (imp.equals(ReadServiceFilter.class)) { @@ -285,7 +318,6 @@ public class Activator extends ComponentActivatorAbstractBase { .setCallbacks("setReadFilterInternalListener", "unsetReadFilterInternalListener") .setRequired(false)); - } if (imp.equals(OFStatisticsManager.class)) { @@ -327,6 +359,11 @@ public class Activator extends ComponentActivatorAbstractBase { .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 @@ -350,6 +387,34 @@ public class Activator extends ComponentActivatorAbstractBase { .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)) { @@ -361,15 +426,25 @@ public class Activator extends ComponentActivatorAbstractBase { .setCallbacks("setController", "unsetController") .setRequired(true)); c.add(createServiceDependency() - .setService(IInventoryShimInternalListener.class) + .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)) {