--- /dev/null
+package org.opendaylight.openflowplugin.openflow.md.it;
+
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
+import org.opendaylight.controller.sal.binding.api.NotificationService;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
+import org.opendaylight.controller.test.sal.binding.it.TestHelper;
+import org.opendaylight.openflowjava.protocol.impl.clients.ScenarioFactory;
+import org.opendaylight.openflowjava.protocol.impl.clients.ScenarioHandler;
+import org.opendaylight.openflowjava.protocol.impl.clients.SimpleClient;
+import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRemoved;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdated;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.OpendaylightInventoryListener;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.*;
+import static org.opendaylight.controller.test.sal.binding.it.TestHelper.*;
+
+/**
+ * @author mirehak
+ */
+@RunWith(PaxExam.class)
+public class SalIntegrationTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(SalIntegrationTest.class);
+
+ /** base controller package */
+ public static final String ODL = "org.opendaylight.controller";
+ /** controller.model package */
+ public static final String ODL_MODEL = "org.opendaylight.controller.model";
+ /** yangtools package */
+ public static final String YANG = "org.opendaylight.yangtools";
+ /** yangtools.model package */
+ public static final String YANG_MODEL = "org.opendaylight.yangtools.model";
+ /** OFPlugin package */
+ public static final String OFPLUGIN = "org.opendaylight.openflowplugin";
+ /** OFLibrary package */
+ public static final String OFLIBRARY = "org.opendaylight.openflowjava";
+ /** netty.io package */
+ public static final String NETTY = "io.netty";
+
+ @Inject
+ SwitchConnectionProvider switchConnectionProvider;
+
+ @Inject
+ BundleContext ctx;
+
+ @Inject
+ BindingAwareBroker broker;
+
+ /**
+ * test basic integration with OFLib running the handshake
+ *
+ * @throws Exception
+ */
+ @Test
+ public void handshakeAndNodeUpdate() throws Exception {
+
+ final TestInventoryListener listener = new TestInventoryListener();
+ BindingAwareConsumer openflowConsumer = new BindingAwareConsumer() {
+
+ @Override
+ public void onSessionInitialized(ConsumerContext session) {
+ session.getSALService(NotificationService.class).registerNotificationListener(listener);
+ }
+ };
+ ConsumerContext consumerReg = broker.registerConsumer(openflowConsumer, ctx);
+ assertNotNull(consumerReg);
+
+ LOG.debug("handshake integration test");
+ LOG.debug("switchConnectionProvider: " + switchConnectionProvider);
+
+ SimpleClient switchSim = new SimpleClient("localhost", 6653);
+ switchSim.setSecuredClient(false);
+ ScenarioHandler scenario = new ScenarioHandler(ScenarioFactory.createHandshakeScenario());
+ switchSim.setScenarioHandler(scenario);
+ switchSim.start();
+
+ switchSim.getScenarioDone().get();
+ Thread.sleep(2000);
+ assertEquals(1, listener.nodeUpdated.size());
+ assertNotNull(listener.nodeUpdated.get(0));
+
+ }
+
+ /**
+ * @return bundle options
+ */
+ @Configuration
+ public Option[] config() {
+ return options(systemProperty("osgi.console").value("2401"), mavenBundle("org.slf4j", "slf4j-api")
+ .versionAsInProject(), mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),
+ mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),
+ mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(),
+ mavenBundle("org.opendaylight.yangtools.thirdparty", "xtend-lib-osgi").versionAsInProject(),
+ mavenBundle("com.google.guava", "guava").versionAsInProject(),
+ mavenBundle("org.javassist", "javassist").versionAsInProject(),
+ mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(),
+ mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),
+
+ mavenBundle(ODL, "sal").versionAsInProject(), mavenBundle(ODL, "sal.connection").versionAsInProject(),
+
+ mdSalCoreBundles(), bindingAwareSalBundles(), baseModelBundles(), flowCapableModelBundles(),
+
+ mavenBundle("org.opendaylight.controller.thirdparty", "org.openflow.openflowj").versionAsInProject(),
+
+ mavenBundle(OFLIBRARY, "openflow-protocol-impl").versionAsInProject(),
+ mavenBundle(OFLIBRARY, "openflow-protocol-api").versionAsInProject(),
+ mavenBundle(OFLIBRARY, "openflow-protocol-spi").versionAsInProject(),
+
+ mavenBundle(NETTY, "netty-handler").versionAsInProject(), mavenBundle(NETTY, "netty-buffer")
+ .versionAsInProject(), mavenBundle(NETTY, "netty-common").versionAsInProject(),
+ mavenBundle(NETTY, "netty-transport").versionAsInProject(), mavenBundle(NETTY, "netty-codec")
+ .versionAsInProject(),
+
+ mavenBundle(OFLIBRARY, "simple-client").versionAsInProject().start(),
+ mavenBundle(OFPLUGIN, "openflowplugin").versionAsInProject(), junitBundles());
+ }
+
+ private static class TestInventoryListener implements OpendaylightInventoryListener {
+
+ List<NodeUpdated> nodeUpdated = new ArrayList<>();
+ List<NodeRemoved> nodeRemoved = new ArrayList<>();
+ List<NodeConnectorUpdated> nodeConnectorUpdated = new ArrayList<>();
+ List<NodeConnectorRemoved> nodeConnectorRemoved = new ArrayList<>();
+
+ @Override
+ public void onNodeUpdated(NodeUpdated notification) {
+ nodeUpdated.add(notification);
+ }
+
+ @Override
+ public void onNodeRemoved(NodeRemoved notification) {
+ nodeRemoved.add(notification);
+ }
+
+ @Override
+ public void onNodeConnectorUpdated(NodeConnectorUpdated notification) {
+ nodeConnectorUpdated.add(notification);
+ }
+
+ @Override
+ public void onNodeConnectorRemoved(NodeConnectorRemoved notification) {
+ nodeConnectorRemoved.add(notification);
+ }
+ };
+
+}
package org.opendaylight.openflowplugin.openflow.internal;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Dictionary;
import java.util.Hashtable;
import org.apache.felix.dm.Component;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider.ProviderFunctionality;
import org.opendaylight.controller.sal.connection.IPluginInConnectionService;
import org.opendaylight.controller.sal.connection.IPluginOutConnectionService;
import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
import org.opendaylight.openflowplugin.openflow.core.IMessageListener;
import org.opendaylight.openflowplugin.openflow.core.internal.Controller;
import org.opendaylight.openflowplugin.openflow.md.core.MDController;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginProvider;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.SalRegistrationManager;
+import org.opendaylight.yangtools.yang.binding.RpcService;
+import org.osgi.framework.BundleContext;
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);
+ protected static final Logger logger = LoggerFactory.getLogger(Activator.class);
+
+ private OpenflowPluginProvider pluginProvider = new OpenflowPluginProvider();
/**
* Function called when the activator starts just after some initializations
public void destroy() {
}
+ @Override
+ public void start(BundleContext arg0) {
+ super.start(arg0);
+ pluginProvider.setContext(arg0);
+ }
+
/**
* Function that is used to communicate to dependency manager the list of
* known implementations for services inside a container
* Object
*/
public Object[] getImplementations() {
- Object[] res = { TopologyServices.class, DataPacketServices.class,
- InventoryService.class, ReadService.class,
+ Object[] res = { TopologyServices.class, DataPacketServices.class, InventoryService.class, ReadService.class,
FlowProgrammerNotifier.class };
return res;
}
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));
+ 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);
+ 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")
+ 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));
}
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));
+ 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")
+ .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")
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
}
// Set the protocolPluginType property which will be used
// by SAL
props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW);
- c.setInterface(new String[] {
- IReadFilterInternalListener.class.getName(),
- IPluginInReadService.class.getName() }, props);
+ c.setInterface(
+ new String[] { IReadFilterInternalListener.class.getName(), IPluginInReadService.class.getName() },
+ props);
- c.add(createServiceDependency()
- .setService(IReadServiceFilter.class)
- .setCallbacks("setService", "unsetService")
- .setRequired(true));
+ 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(createContainerServiceDependency(containerName).setService(IPluginOutReadService.class)
+ .setCallbacks("setPluginOutReadServices", "unsetPluginOutReadServices").setRequired(false));
- c.add(createServiceDependency()
- .setService(IPluginOutConnectionService.class)
- .setCallbacks("setIPluginOutConnectionService",
- "unsetIPluginOutConnectionService")
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
}
props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW);
c.setInterface(IFlowProgrammerNotifier.class.getName(), props);
- c.add(createContainerServiceDependency(containerName)
- .setService(IPluginOutFlowProgrammerService.class)
- .setCallbacks("setPluginOutFlowProgrammerService",
- "unsetPluginOutFlowProgrammerService")
+ c.add(createContainerServiceDependency(containerName).setService(IPluginOutFlowProgrammerService.class)
+ .setCallbacks("setPluginOutFlowProgrammerService", "unsetPluginOutFlowProgrammerService")
.setRequired(true));
- c.add(createServiceDependency()
- .setService(IPluginOutConnectionService.class)
- .setCallbacks("setIPluginOutConnectionService",
- "unsetIPluginOutConnectionService")
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
}
}
* Object
*/
public Object[] getGlobalImplementations() {
- Object[] res = { Controller.class, OFStatisticsManager.class,
- FlowProgrammerService.class, ReadServiceFilter.class,
- DiscoveryService.class, DataPacketMuxDemux.class, InventoryService.class,
- InventoryServiceShim.class, TopologyServiceShim.class,
- MDController.class};
+ Object[] res = { Controller.class, OFStatisticsManager.class, FlowProgrammerService.class,
+ ReadServiceFilter.class, DiscoveryService.class, DataPacketMuxDemux.class, InventoryService.class,
+ InventoryServiceShim.class, TopologyServiceShim.class, MDController.class, pluginProvider };
return res;
}
Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put("name", "Controller");
props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW);
- c.setInterface(new String[] { IController.class.getName(),
- IPluginInConnectionService.class.getName()},
- props);
- }
+ c.setInterface(new String[] { IController.class.getName(), IPluginInConnectionService.class.getName() },
+ props);
+ } else
if (imp.equals(FlowProgrammerService.class)) {
// export the service to be used by SAL
// by SAL
props.put(GlobalConstants.PROTOCOLPLUGINTYPE.toString(), Node.NodeIDType.OPENFLOW);
c.setInterface(
- new String[] {
- IPluginInFlowProgrammerService.class.getName(),
- IMessageListener.class.getName(),
- IContainerListener.class.getName(),
- IInventoryShimExternalListener.class.getName() },
- props);
-
- c.add(createServiceDependency()
- .setService(IController.class, "(name=Controller)")
- .setCallbacks("setController", "unsetController")
- .setRequired(true));
+ new String[] { IPluginInFlowProgrammerService.class.getName(), IMessageListener.class.getName(),
+ IContainerListener.class.getName(), IInventoryShimExternalListener.class.getName() }, props);
- c.add(createServiceDependency()
- .setService(IFlowProgrammerNotifier.class)
- .setCallbacks("setFlowProgrammerNotifier",
- "unsetsetFlowProgrammerNotifier")
- .setRequired(false));
+ c.add(createServiceDependency().setService(IController.class, "(name=Controller)")
+ .setCallbacks("setController", "unsetController").setRequired(true));
- c.add(createServiceDependency()
- .setService(IPluginOutConnectionService.class)
- .setCallbacks("setIPluginOutConnectionService",
- "unsetIPluginOutConnectionService")
+ c.add(createServiceDependency().setService(IFlowProgrammerNotifier.class)
+ .setCallbacks("setFlowProgrammerNotifier", "unsetsetFlowProgrammerNotifier").setRequired(false));
+
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
- }
+ } else
if (imp.equals(ReadServiceFilter.class)) {
- c.setInterface(new String[] {
- IReadServiceFilter.class.getName(),
- IContainerListener.class.getName(),
+ c.setInterface(new String[] { IReadServiceFilter.class.getName(), IContainerListener.class.getName(),
IOFStatisticsListener.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")
+ 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));
- }
+ } else
if (imp.equals(OFStatisticsManager.class)) {
- c.setInterface(new String[] { IOFStatisticsManager.class.getName(),
- IInventoryShimExternalListener.class.getName() }, null);
+ 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));
- }
+ c.add(createServiceDependency().setService(IController.class, "(name=Controller)")
+ .setCallbacks("setController", "unsetController").setRequired(true));
+ c.add(createServiceDependency().setService(IOFStatisticsListener.class)
+ .setCallbacks("setStatisticsListener", "unsetStatisticsListener").setRequired(false));
+ } else
if (imp.equals(DiscoveryService.class)) {
// export the service
c.setInterface(
- new String[] {
- IInventoryShimExternalListener.class.getName(),
- IDataPacketListen.class.getName(),
+ 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())
+ 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));
+ .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")
+ .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(false));
- }
+ } else
// 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(),
+ c.setInterface(new String[] { IDataPacketMux.class.getName(), IContainerListener.class.getName(),
IInventoryShimExternalListener.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")
+ 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")
+ c.add(createServiceDependency().setService(IDataPacketListen.class)
+ .setCallbacks("setIDataPacketListen", "unsetIDataPacketListen").setRequired(false));
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
- }
+ } else
if (imp.equals(InventoryService.class)) {
// export the service
Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put("scope", "Global");
- c.setInterface(
- new String[] { IPluginInInventoryService.class.getName(),
- IInventoryShimInternalListener.class.getName(),
- IInventoryProvider.class.getName() }, props);
+ 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")
+ 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(false));
- }
+ } else
if (imp.equals(InventoryServiceShim.class)) {
- c.setInterface(new String[] { IContainerListener.class.getName(),
- IOFStatisticsListener.class.getName()}, null);
+ c.setInterface(new String[] { IContainerListener.class.getName(), IOFStatisticsListener.class.getName() },
+ null);
- c.add(createServiceDependency()
- .setService(IController.class, "(name=Controller)")
- .setCallbacks("setController", "unsetController")
+ 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("setInventoryShimInternalListener",
- "unsetInventoryShimInternalListener")
+ c.add(createServiceDependency().setService(IInventoryShimInternalListener.class, "(scope=Global)")
+ .setCallbacks("setInventoryShimGlobalInternalListener", "unsetInventoryShimGlobalInternalListener")
.setRequired(true));
- c.add(createServiceDependency()
- .setService(IInventoryShimInternalListener.class, "(scope=Global)")
- .setCallbacks("setInventoryShimGlobalInternalListener",
- "unsetInventoryShimGlobalInternalListener")
- .setRequired(true));
- c.add(createServiceDependency()
- .setService(IInventoryShimExternalListener.class)
- .setCallbacks("setInventoryShimExternalListener",
- "unsetInventoryShimExternalListener")
+ c.add(createServiceDependency().setService(IInventoryShimExternalListener.class)
+ .setCallbacks("setInventoryShimExternalListener", "unsetInventoryShimExternalListener")
.setRequired(false));
- c.add(createServiceDependency()
- .setService(IPluginOutConnectionService.class)
- .setCallbacks("setIPluginOutConnectionService",
- "unsetIPluginOutConnectionService")
+ c.add(createServiceDependency().setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService", "unsetIPluginOutConnectionService")
.setRequired(false));
- }
+ } else
if (imp.equals(TopologyServiceShim.class)) {
- c.setInterface(new String[] { IDiscoveryListener.class.getName(),
- IContainerListener.class.getName(),
- IRefreshInternalProvider.class.getName(),
- IInventoryShimExternalListener.class.getName() }, null);
- c.add(createServiceDependency()
- .setService(ITopologyServiceShimListener.class)
- .setCallbacks("setTopologyServiceShimListener",
- "unsetTopologyServiceShimListener")
+ c.setInterface(new String[] { IDiscoveryListener.class.getName(), IContainerListener.class.getName(),
+ IRefreshInternalProvider.class.getName(), IInventoryShimExternalListener.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));
- }
+ c.add(createServiceDependency().setService(IOFStatisticsManager.class)
+ .setCallbacks("setStatisticsManager", "unsetStatisticsManager").setRequired(false));
+ } else
if (imp.equals(MDController.class)) {
-// c.setInterface(new String[] { IDiscoveryListener.class.getName(),
-// IContainerListener.class.getName(),
-// IRefreshInternalProvider.class.getName(),
-// IInventoryShimExternalListener.class.getName() }, null);
- c.add(createServiceDependency()
- .setService(SwitchConnectionProvider.class)
- .setCallbacks("setSwitchConnectionProvider",
- "unsetSwitchConnectionProvider")
- .setRequired(true));
+ // c.setInterface(new String[] { IDiscoveryListener.class.getName(),
+ // IContainerListener.class.getName(),
+ // IRefreshInternalProvider.class.getName(),
+ // IInventoryShimExternalListener.class.getName() }, null);
+ c.add(createServiceDependency().setService(SwitchConnectionProvider.class)
+ .setCallbacks("setSwitchConnectionProvider", "unsetSwitchConnectionProvider").setRequired(true));
logger.debug("configuring MDController ..");
+ } else if (imp == pluginProvider) {
+ // c.setInterface(new String[] { IDiscoveryListener.class.getName(),
+ // IContainerListener.class.getName(),
+ // IRefreshInternalProvider.class.getName(),
+ // IInventoryShimExternalListener.class.getName() }, null);
+ c.add(createServiceDependency().setService(BindingAwareBroker.class)
+ .setCallbacks("setBroker", "unsetBroker").setRequired(true));
+ logger.debug("configuring Binding Aware Provider");
}
}
+
}