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;
.setCallbacks("setPluginOutDataPacketService",
"unsetPluginOutDataPacketService")
.setRequired(false));
+ c.add(createServiceDependency()
+ .setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService",
+ "unsetIPluginOutConnectionService")
+ .setRequired(false));
}
if (imp.equals(ReadService.class)) {
.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(false));
}
if (imp.equals(FlowProgrammerNotifier.class)) {
.setCallbacks("setPluginOutFlowProgrammerService",
"unsetPluginOutFlowProgrammerService")
.setRequired(true));
+ c.add(createServiceDependency()
+ .setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService",
+ "unsetIPluginOutConnectionService")
+ .setRequired(false));
}
}
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;
}
logger.debug("Activator configureGlobalInstance( ) is called");
Dictionary<String, Object> props = new Hashtable<String, Object>();
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)) {
"unsetsetFlowProgrammerNotifier")
.setRequired(false));
+ c.add(createServiceDependency()
+ .setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService",
+ "unsetIPluginOutConnectionService")
+ .setRequired(false));
}
if (imp.equals(ReadServiceFilter.class)) {
.setCallbacks("setReadFilterInternalListener",
"unsetReadFilterInternalListener")
.setRequired(false));
-
}
if (imp.equals(OFStatisticsManager.class)) {
.setService(IDiscoveryListener.class)
.setCallbacks("setDiscoveryListener",
"unsetDiscoveryListener").setRequired(true));
+ c.add(createServiceDependency()
+ .setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService",
+ "unsetIPluginOutConnectionService")
+ .setRequired(false));
}
// DataPacket mux/demux services, which is teh actual engine
.setService(IDataPacketListen.class)
.setCallbacks("setIDataPacketListen",
"unsetIDataPacketListen").setRequired(false));
+ c.add(createServiceDependency()
+ .setService(IPluginOutConnectionService.class)
+ .setCallbacks("setIPluginOutConnectionService",
+ "unsetIPluginOutConnectionService")
+ .setRequired(false));
+ }
+
+ 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);
+
+ // 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(false));
}
if (imp.equals(InventoryServiceShim.class)) {
.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(false));
}
if (imp.equals(TopologyServiceShim.class)) {