Fixing Bug 1900 and 1908
[ovsdb.git] / openstack / net-virt / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / Activator.java
index 907aeaa32026f7752f36ef5b49a1aeb1a9110d4e..da8c9d5daaca6745c8ded8e902e62d7a6f149bf3 100644 (file)
@@ -10,6 +10,9 @@
 
 package org.opendaylight.ovsdb.openstack.netvirt;
 
+import java.util.Properties;
+
+import org.apache.felix.dm.Component;
 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallAware;
 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallPolicyAware;
 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallRuleAware;
@@ -17,6 +20,7 @@ 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.INeutronLoadBalancerPoolMemberAware;
 import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolMemberCRUD;
 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD;
@@ -25,8 +29,8 @@ 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.networkconfig.neutron.INeutronSubnetCRUD;
 import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
 import org.opendaylight.controller.switchmanager.IInventoryListener;
 import org.opendaylight.controller.switchmanager.ISwitchManager;
@@ -42,6 +46,7 @@ import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
 import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
 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;
@@ -50,14 +55,12 @@ import org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl;
 import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
 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;
 
 /**
  * OSGi bundle activator for the OVSDB Neutron Interface.
@@ -108,7 +111,8 @@ public class Activator extends ComponentActivatorAbstractBase {
                         LBaaSHandler.class,
                         LBaaSPoolMemberHandler.class,
                         NeutronL3Adapter.class,
-                        OpenstackRouter.class};
+                        OpenstackRouter.class,
+                        SecurityServicesImpl.class};
         return res;
     }
 
@@ -246,8 +250,10 @@ public class Activator extends ComponentActivatorAbstractBase {
             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.setInterface(new String[] {INeutronLoadBalancerAware.class.getName(),
+                    IInventoryListener.class.getName(),
+                    AbstractHandler.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));
@@ -261,8 +267,9 @@ public class Activator extends ComponentActivatorAbstractBase {
             Properties lbaasPoolMemberHandlerProperties = new Properties();
             lbaasPoolMemberHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY,
                     AbstractEvent.HandlerType.NEUTRON_LOAD_BALANCER_POOL_MEMBER);
-            c.setInterface(new String[] {INeutronLoadBalancerAware.class.getName()},
-                                         lbaasPoolMemberHandlerProperties);
+            c.setInterface(new String[] {INeutronLoadBalancerPoolMemberAware.class.getName(),
+                    AbstractHandler.class.getName()},
+                    lbaasPoolMemberHandlerProperties);
             c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true));
             c.add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true));
             c.add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true));
@@ -275,11 +282,16 @@ public class Activator extends ComponentActivatorAbstractBase {
             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()},
+            c.setInterface(new String[]{INeutronSecurityRuleAware.class.getName(),
+                                        INeutronSecurityGroupAware.class.getName(),
+                            AbstractHandler.class.getName()},
                            portSecurityHandlerProperties);
             c.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true));
+            c.add(createServiceDependency().setService(SecurityServicesManager.class).setRequired(true));
+        }
+
+        if (imp.equals(SecurityServicesImpl.class)) {
+            c.setInterface(new String[] {SecurityServicesManager.class.getName()}, null);
         }
 
         if (imp.equals(FWaasHandler.class)) {
@@ -328,7 +340,6 @@ public class Activator extends ComponentActivatorAbstractBase {
              * 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));