X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openstack%2Fnet-virt%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fovsdb%2Fopenstack%2Fnetvirt%2FActivator.java;h=f4284cee7ef3d9757d10c6720e57b9654aa5349e;hb=2c898dfea9a1af579cd9f6176bc2bdad14fbe1bb;hp=d17ada765a17570aff55b9bb54ce05474e0a9bbb;hpb=079716e7a76ebd57aae124c742fb0488e17bf7ab;p=netvirt.git diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/Activator.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/Activator.java index d17ada765a..f4284cee7e 100644 --- a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/Activator.java +++ b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/Activator.java @@ -10,27 +10,33 @@ package org.opendaylight.ovsdb.openstack.netvirt; -import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallPolicyAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallRuleAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronFloatingIPAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolMemberCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronPortAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronPortCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronRouterAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityGroupAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityRuleAware; -import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetCRUD; -import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetAware; -import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase; -import org.opendaylight.controller.switchmanager.IInventoryListener; +import java.util.Dictionary; +import java.util.Hashtable; + +import org.apache.felix.dm.DependencyActivatorBase; +import org.apache.felix.dm.DependencyManager; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; +import org.opendaylight.neutron.spi.INeutronFirewallAware; +import org.opendaylight.neutron.spi.INeutronFirewallPolicyAware; +import org.opendaylight.neutron.spi.INeutronFirewallRuleAware; +import org.opendaylight.neutron.spi.INeutronFloatingIPAware; +import org.opendaylight.neutron.spi.INeutronLoadBalancerAware; +import org.opendaylight.neutron.spi.INeutronLoadBalancerCRUD; +import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolAware; +import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolCRUD; +import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolMemberAware; +import org.opendaylight.neutron.spi.INeutronNetworkAware; +import org.opendaylight.neutron.spi.INeutronNetworkCRUD; +import org.opendaylight.neutron.spi.INeutronPortAware; +import org.opendaylight.neutron.spi.INeutronPortCRUD; +import org.opendaylight.neutron.spi.INeutronRouterAware; +import org.opendaylight.neutron.spi.INeutronSecurityGroupAware; +import org.opendaylight.neutron.spi.INeutronSecurityRuleAware; +import org.opendaylight.neutron.spi.INeutronSubnetAware; +import org.opendaylight.neutron.spi.INeutronSubnetCRUD; import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider; import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager; +import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService; import org.opendaylight.ovsdb.openstack.netvirt.api.Constants; import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher; import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider; @@ -39,288 +45,261 @@ import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider; import org.opendaylight.ovsdb.openstack.netvirt.api.MultiTenantAwareRouter; import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider; import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager; +import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener; +import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager; import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider; +import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener; +import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService; import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider; +import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager; import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager; import org.opendaylight.ovsdb.openstack.netvirt.api.VlanConfigurationCache; import org.opendaylight.ovsdb.openstack.netvirt.impl.BridgeConfigurationManagerImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.ConfigurationServiceImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl; +import org.opendaylight.ovsdb.openstack.netvirt.impl.OvsdbInventoryServiceImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter; +import org.opendaylight.ovsdb.openstack.netvirt.impl.NodeCacheManagerImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.OpenstackRouter; import org.opendaylight.ovsdb.openstack.netvirt.impl.ProviderNetworkManagerImpl; +import org.opendaylight.ovsdb.openstack.netvirt.impl.SecurityServicesImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.TenantNetworkManagerImpl; import org.opendaylight.ovsdb.openstack.netvirt.impl.VlanConfigurationCacheImpl; -import org.opendaylight.ovsdb.plugin.api.OvsdbConfigurationService; -import org.opendaylight.ovsdb.plugin.api.OvsdbConnectionService; -import org.opendaylight.ovsdb.plugin.api.OvsdbInventoryListener; -import org.apache.felix.dm.Component; -import java.util.Properties; +import org.osgi.framework.BundleContext; /** * OSGi bundle activator for the OVSDB Neutron Interface. */ -public class Activator extends ComponentActivatorAbstractBase { - /** - * Function called when the activator starts just after some - * initializations are done by the - * ComponentActivatorAbstractBase. - */ - @Override - public void init() { - } +public class Activator extends DependencyActivatorBase { - /** - * Function called when the activator stops just before the - * cleanup done by ComponentActivatorAbstractBase. - * - */ @Override - public void destroy() { - } + public void init(BundleContext context, DependencyManager manager) throws Exception { - /** - * 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 = {ConfigurationServiceImpl.class, - BridgeConfigurationManagerImpl.class, - TenantNetworkManagerImpl.class, - VlanConfigurationCacheImpl.class, - FloatingIPHandler.class, - NetworkHandler.class, - SubnetHandler.class, - PortHandler.class, - RouterHandler.class, - SouthboundHandler.class, - PortSecurityHandler.class, - ProviderNetworkManagerImpl.class, - EventDispatcherImpl.class, - FWaasHandler.class, - LBaaSHandler.class, - NeutronL3Adapter.class, - OpenstackRouter.class}; - return res; + manager.add(createComponent() + .setInterface(ConfigurationService.class.getName(), null) + .setImplementation(ConfigurationServiceImpl.class)); + + manager.add(createComponent() + .setInterface(BridgeConfigurationManager.class.getName(), null) + .setImplementation(BridgeConfigurationManagerImpl.class) + .add(createServiceDependency().setService(ConfigurationService.class).setRequired(true)) + .add(createServiceDependency().setService(NetworkingProviderManager.class))); + + manager.add(createComponent() + .setInterface(TenantNetworkManager.class.getName(), null) + .setImplementation(TenantNetworkManagerImpl.class) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(VlanConfigurationCache.class))); + + manager.add(createComponent() + .setInterface(VlanConfigurationCache.class.getName(), null) + .setImplementation(VlanConfigurationCacheImpl.class) + .add(createServiceDependency().setService(TenantNetworkManager.class))); + + Dictionary floatingIPHandlerPorperties = new Hashtable<>(); + floatingIPHandlerPorperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, + AbstractEvent.HandlerType.NEUTRON_FLOATING_IP); + + manager.add(createComponent() + .setInterface(new String[]{INeutronFloatingIPAware.class.getName(), AbstractHandler.class.getName()}, + floatingIPHandlerPorperties) + .setImplementation(FloatingIPHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))); + + Dictionary networkHandlerProperties = new Hashtable<>(); + networkHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_NETWORK); + + manager.add(createComponent() + .setInterface(new String[]{INeutronNetworkAware.class.getName(), AbstractHandler.class.getName()}, + networkHandlerProperties) + .setImplementation(NetworkHandler.class) + .add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)) + .add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))); + + Dictionary subnetHandlerProperties = new Hashtable<>(); + subnetHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_SUBNET); + + manager.add(createComponent() + .setInterface(new String[]{INeutronSubnetAware.class.getName(), AbstractHandler.class.getName()}, + subnetHandlerProperties) + .setImplementation(SubnetHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))); + + Dictionary portHandlerProperties = new Hashtable<>(); + portHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_PORT); + + manager.add(createComponent() + .setInterface(new String[]{INeutronPortAware.class.getName(), AbstractHandler.class.getName()}, + portHandlerProperties) + .setImplementation(PortHandler.class) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))); + + Dictionary routerHandlerProperties = new Hashtable<>(); + routerHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_ROUTER); + + manager.add(createComponent() + .setInterface(new String[]{INeutronRouterAware.class.getName(), AbstractHandler.class.getName()}, + routerHandlerProperties) + .setImplementation(RouterHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))); + + Dictionary southboundHandlerProperties = new Hashtable<>(); + southboundHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.SOUTHBOUND); + + manager.add(createComponent() + .setInterface(new String[]{OvsdbInventoryListener.class.getName(), + NodeCacheListener.class.getName(), + AbstractHandler.class.getName()}, + southboundHandlerProperties) + .setImplementation(SouthboundHandler.class) + .add(createServiceDependency().setService(ConfigurationService.class).setRequired(true)) + .add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true)) + .add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)) + .add(createServiceDependency().setService(NetworkingProviderManager.class).setRequired(true)) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)) + .add(createServiceDependency().setService(OvsdbInventoryService.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))); + + Dictionary lbaasHandlerProperties = new Hashtable<>(); + lbaasHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, + AbstractEvent.HandlerType.NEUTRON_LOAD_BALANCER); + + manager.add(createComponent() + .setInterface(new String[]{INeutronLoadBalancerAware.class.getName(), + NodeCacheListener.class.getName(), AbstractHandler.class.getName()}, + lbaasHandlerProperties) + .setImplementation(LBaaSHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronLoadBalancerPoolCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))); + + Dictionary lbaasPoolHandlerProperties = new Hashtable<>(); + lbaasPoolHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, + AbstractEvent.HandlerType.NEUTRON_LOAD_BALANCER_POOL); + + manager.add(createComponent() + .setInterface(new String[]{INeutronLoadBalancerPoolAware.class.getName(), + AbstractHandler.class.getName()}, lbaasPoolHandlerProperties) + .setImplementation(LBaaSPoolHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))); + + Dictionary lbaasPoolMemberHandlerProperties = new Hashtable<>(); + lbaasPoolMemberHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, + AbstractEvent.HandlerType.NEUTRON_LOAD_BALANCER_POOL_MEMBER); + + manager.add(createComponent() + .setInterface(new String[]{INeutronLoadBalancerPoolMemberAware.class.getName(), + AbstractHandler.class.getName()}, lbaasPoolMemberHandlerProperties) + .setImplementation(LBaaSPoolMemberHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronLoadBalancerPoolCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))); + + Dictionary portSecurityHandlerProperties = new Hashtable<>(); + portSecurityHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, + AbstractEvent.HandlerType.NEUTRON_PORT_SECURITY); + + manager.add(createComponent() + .setInterface(new String[]{INeutronSecurityRuleAware.class.getName(), + INeutronSecurityGroupAware.class.getName(), AbstractHandler.class.getName()}, + portSecurityHandlerProperties) + .setImplementation(PortSecurityHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))); + + manager.add(createComponent() + .setInterface(new String[]{SecurityServicesManager.class.getName()}, null) + .setImplementation(SecurityServicesImpl.class) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true))); + + Dictionary fWaasHandlerProperties = new Hashtable<>(); + fWaasHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_FWAAS); + + manager.add(createComponent() + .setInterface(new String[]{INeutronFirewallAware.class.getName(), + INeutronFirewallRuleAware.class.getName(), INeutronFirewallPolicyAware.class.getName(), + AbstractHandler.class.getName()}, fWaasHandlerProperties) + .setImplementation(FWaasHandler.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))); + + manager.add(createComponent() + .setInterface(NetworkingProviderManager.class.getName(), null) + .setImplementation(ProviderNetworkManagerImpl.class) + .add(createServiceDependency().setService(NetworkingProvider.class) + .setCallbacks("providerAdded", "providerRemoved"))); + + manager.add(createComponent() + .setInterface(EventDispatcher.class.getName(), null) + .setImplementation(EventDispatcherImpl.class) + .add(createServiceDependency() + .setService(AbstractHandler.class) + .setCallbacks("eventHandlerAdded", "eventHandlerRemoved"))); + + manager.add(createComponent() + .setInterface(NeutronL3Adapter.class.getName(), null) + .setImplementation(NeutronL3Adapter.class) + .add(createServiceDependency().setService(ConfigurationService.class).setRequired(true)) + .add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)) + .add(createServiceDependency().setService(ArpProvider.class).setRequired(false)) + .add(createServiceDependency().setService(InboundNatProvider.class).setRequired(false)) + .add(createServiceDependency().setService(OutboundNatProvider.class).setRequired(false)) + .add(createServiceDependency().setService(RoutingProvider.class).setRequired(false)) + .add(createServiceDependency().setService(L3ForwardingProvider.class).setRequired(false))); + + manager.add(createComponent() + .setInterface(MultiTenantAwareRouter.class.getName(), null) + .setImplementation(OpenstackRouter.class)); + + Dictionary nodeCacheManagerProperties = new Hashtable<>(); + nodeCacheManagerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NODE); + manager.add(createComponent() + .setInterface(new String[]{NodeCacheManager.class.getName(), AbstractHandler.class.getName()}, + nodeCacheManagerProperties) + .setImplementation(NodeCacheManagerImpl.class) + .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)) + .add(createServiceDependency().setService(NodeCacheListener.class) + .setCallbacks("cacheListenerAdded", "cacheListenerRemoved"))); + + manager.add(createComponent() + .setInterface(new String[] {OvsdbInventoryService.class.getName()}, null) + .setImplementation(OvsdbInventoryServiceImpl.class) + .add(createServiceDependency().setService(OvsdbInventoryListener.class) + .setCallbacks("listenerAdded", "listenerRemoved")) + .add(createServiceDependency().setService(BindingAwareBroker.class).setRequired(true))); } - /** - * 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(ConfigurationServiceImpl.class)) { - c.setInterface(org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class.getName(), null); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class)); - } - - if (imp.equals(BridgeConfigurationManagerImpl.class)) { - c.setInterface(BridgeConfigurationManager.class.getName(), null); - c.add(createServiceDependency().setService( - org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(NetworkingProviderManager.class)); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class)); - } - - if (imp.equals(TenantNetworkManagerImpl.class)) { - c.setInterface(TenantNetworkManager.class.getName(), null); - c.add(createServiceDependency().setService(NetworkingProviderManager.class)); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class)); - c.add(createServiceDependency().setService(OvsdbConnectionService.class)); - c.add(createServiceDependency(). - setService(INeutronNetworkCRUD.class). - setRequired(true)); - c.add(createServiceDependency(). - setService(INeutronPortCRUD.class). - setRequired(true)); - c.add(createServiceDependency().setService(VlanConfigurationCache.class)); - } - - if (imp.equals(VlanConfigurationCacheImpl.class)) { - c.setInterface(VlanConfigurationCache.class.getName(), null); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class)); - c.add(createServiceDependency().setService(TenantNetworkManager.class)); - } - - if (imp.equals(FloatingIPHandler.class)) { - Properties floatingIPHandlerPorperties = new Properties(); - floatingIPHandlerPorperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, - AbstractEvent.HandlerType.NEUTRON_FLOATING_IP); - c.setInterface(new String[]{INeutronFloatingIPAware.class.getName(), - AbstractHandler.class.getName()}, - floatingIPHandlerPorperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(NetworkHandler.class)) { - Properties networkHandlerProperties = new Properties(); - networkHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, - AbstractEvent.HandlerType.NEUTRON_NETWORK); - c.setInterface(new String[]{INeutronNetworkAware.class.getName(), - AbstractHandler.class.getName()}, - networkHandlerProperties); - c.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)); - c.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true)); - c.add(createServiceDependency().setService( - org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbInventoryListener.class).setRequired(true)); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(SubnetHandler.class)) { - Properties subnetHandlerProperties = new Properties(); - subnetHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_SUBNET); - c.setInterface(new String[]{INeutronSubnetAware.class.getName(), - AbstractHandler.class.getName()}, - subnetHandlerProperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(PortHandler.class)) { - Properties portHandlerProperties = new Properties(); - portHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_PORT); - c.setInterface(new String[]{INeutronPortAware.class.getName(), - AbstractHandler.class.getName()}, - portHandlerProperties); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbInventoryListener.class).setRequired(true)); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(RouterHandler.class)) { - Properties routerHandlerProperties = new Properties(); - routerHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_ROUTER); - c.setInterface(new String[]{INeutronRouterAware.class.getName(), - AbstractHandler.class.getName()}, - routerHandlerProperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(SouthboundHandler.class)) { - Properties southboundHandlerProperties = new Properties(); - southboundHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.SOUTHBOUND); - c.setInterface(new String[]{OvsdbInventoryListener.class.getName(), - IInventoryListener.class.getName(), - AbstractHandler.class.getName()}, - southboundHandlerProperties); - c.add(createServiceDependency().setService( - org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true)); - c.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)); - c.add(createServiceDependency().setService(NetworkingProviderManager.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true)); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)); - } - - if (imp.equals(LBaaSHandler.class)) { - Properties lbaasHandlerProperties = new Properties(); - lbaasHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, - AbstractEvent.HandlerType.NEUTRON_LOAD_BALANCER); - c.setInterface(new String[] {INeutronLoadBalancerAware.class.getName()}, - lbaasHandlerProperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronLoadBalancerPoolCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronLoadBalancerPoolMemberCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true)); - } - - if (imp.equals(PortSecurityHandler.class)) { - Properties portSecurityHandlerProperties = new Properties(); - portSecurityHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, - AbstractEvent.HandlerType.NEUTRON_PORT_SECURITY); - c.setInterface(new String[] {INeutronSecurityRuleAware.class.getName(), - INeutronSecurityGroupAware.class.getName(), - AbstractHandler.class.getName()}, - portSecurityHandlerProperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - } - - if (imp.equals(FWaasHandler.class)) { - Properties fWaasHandlerProperties = new Properties(); - fWaasHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY, AbstractEvent.HandlerType.NEUTRON_FWAAS); - c.setInterface(new String[] {INeutronFirewallAware.class.getName(), - INeutronFirewallRuleAware.class.getName(), - INeutronFirewallPolicyAware.class.getName(), - AbstractHandler.class.getName()}, - fWaasHandlerProperties); - c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true)); - } - - if (imp.equals(ProviderNetworkManagerImpl.class)) { - c.setInterface(NetworkingProviderManager.class.getName(), null); - c.add(createServiceDependency() - .setService(org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class) - .setRequired(true)); - c.add(createServiceDependency() - .setService(NetworkingProvider.class) - .setCallbacks("providerAdded", "providerRemoved")); - } - - if (imp.equals(EventDispatcherImpl.class)) { - c.setInterface(EventDispatcher.class.getName(), null); - c.add(createServiceDependency() - .setService(AbstractHandler.class) - .setCallbacks("eventHandlerAdded", "eventHandlerRemoved")); - } - - if (imp.equals(NeutronL3Adapter.class)) { - c.setInterface(NeutronL3Adapter.class.getName(), null); - c.add(createServiceDependency() - .setService(org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService.class) - .setRequired(true)); - c.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)); - c.add(createServiceDependency().setService(NetworkingProviderManager.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConfigurationService.class).setRequired(true)); - c.add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true)); - c.add(createServiceDependency().setService(MultiTenantAwareRouter.class).setRequired(true)); - /* ToDo, we should probably just use the NetworkingProvider interface - * This should provide a way of getting service implementations - * Either that, or we should do service lookup at runtime based on getProvider().getName() - * This is a shortcut as for now there will only be one implementation of these classes. - */ - c.add(createServiceDependency().setService(MultiTenantAwareRouter.class).setRequired(false)); - c.add(createServiceDependency().setService(ArpProvider.class).setRequired(false)); - c.add(createServiceDependency().setService(InboundNatProvider.class).setRequired(false)); - c.add(createServiceDependency().setService(OutboundNatProvider.class).setRequired(false)); - c.add(createServiceDependency().setService(RoutingProvider.class).setRequired(false)); - c.add(createServiceDependency().setService(L3ForwardingProvider.class).setRequired(false)); - } - - if (imp.equals(OpenstackRouter.class)) { - c.setInterface(MultiTenantAwareRouter.class.getName(), null); - } + public void destroy(BundleContext context, DependencyManager manager) throws Exception { } }