Remove ad-sal from lbaas - part 1 15/16515/3
authorFlavio Fernandes <ffernand@redhat.com>
Sat, 14 Mar 2015 12:26:45 +0000 (08:26 -0400)
committerFlavio Fernandes <ffernand@redhat.com>
Mon, 16 Mar 2015 14:31:02 +0000 (14:31 +0000)
Removing ad-sal inventory listener and switchmanager from lbaas.
With this change, lbaas handler will not be getting notifyNode() callbacks.
That will be addressed on part 2.

Change-Id: I56d37877577320030cb871691e244a725f142152
Signed-off-by: Flavio Fernandes <ffernand@redhat.com>
openstack/net-virt-providers/pom.xml
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/LoadBalancerService.java
openstack/net-virt/pom.xml
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/Activator.java
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSHandler.java
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolHandler.java
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolMemberHandler.java
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/LoadBalancerProvider.java
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NodeCacheManagerImpl.java

index 0f74278c8f0c21f658ee74e41c878bedc937c425..b266a4637dc63697491c90ce4529c9b8636ec3c0 100644 (file)
@@ -38,10 +38,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.neutron</groupId>
       <artifactId>neutron-spi</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-common-api</artifactId>
index 47434b23bf21a935d8f1021d8685da15f21f53b8..a68430f76f3813ae900d5a3e2586eed3d9c465f1 100644 (file)
@@ -13,8 +13,6 @@ import java.math.BigInteger;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.Node.NodeIDType;
 import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
 import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
@@ -26,7 +24,6 @@ import org.opendaylight.ovsdb.plugin.api.Status;
 import org.opendaylight.ovsdb.plugin.api.StatusCode;
 import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
 import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
@@ -43,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
@@ -93,16 +91,11 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
             logger.error("LB config is invalid: {}", lbConfig);
             return new Status(StatusCode.BADREQUEST);
         }
-        if (!node.getType().equals(NodeIDType.OPENFLOW)) {
-            logger.trace("Ignoring non-OpenFlow node {} from flow programming", node);
-            return new Status(StatusCode.BADREQUEST);
-        }
         logger.debug("Performing {} rules for member {} with index {} on LB with VIP {} and total members {}",
                 action, member.getIP(), member.getIndex(), lbConfig.getVip(), lbConfig.getMembers().size());
 
         NodeBuilder nodeBuilder = new NodeBuilder();
-        nodeBuilder.setId(new NodeId(Constants.OPENFLOW_NODE_PREFIX
-                + String.valueOf(node.getID())));
+        nodeBuilder.setId(new NodeId(Constants.OPENFLOW_NODE_PREFIX + node.getId().getValue()));
         nodeBuilder.setKey(new NodeKey(nodeBuilder.getId()));
 
         //Update the multipath rule
@@ -135,14 +128,10 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
             logger.error("LB config is invalid: {}", lbConfig);
             return new Status(StatusCode.BADREQUEST);
         }
-        if (!node.getType().equals(NodeIDType.OPENFLOW)) {
-            logger.trace("Ignoring non-OpenFlow node {} from flow programming", node);
-            return new Status(StatusCode.BADREQUEST);
-        }
         logger.debug("Performing {} rules for VIP {} and {} members", action, lbConfig.getVip(), lbConfig.getMembers().size());
 
         NodeBuilder nodeBuilder = new NodeBuilder();
-        nodeBuilder.setId(new NodeId(Constants.OPENFLOW_NODE_PREFIX + String.valueOf(node.getID())));
+        nodeBuilder.setId(new NodeId(Constants.OPENFLOW_NODE_PREFIX + node.getId().getValue()));
         nodeBuilder.setKey(new NodeKey(nodeBuilder.getId()));
 
         if (action.equals(org.opendaylight.ovsdb.openstack.netvirt.api.Action.ADD)) {
index bbb5b67505e051fcf99b508795443bea6baf6c4f..b44b719e471509395229d767d8e9211083e1e6a6 100644 (file)
@@ -47,14 +47,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.neutron</groupId>
       <artifactId>neutron-spi</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>switchmanager</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>library</artifactId>
index 2a2c228745f69017476f3b3ebf8f71d18130c314..d2056f08500e39c6416d4eff3b4a632352da69c4 100644 (file)
@@ -33,8 +33,6 @@ 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.controller.switchmanager.IInventoryListener;
-import org.opendaylight.controller.switchmanager.ISwitchManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
 import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
@@ -188,7 +186,7 @@ public class Activator extends DependencyActivatorBase {
 
         manager.add(createComponent()
                 .setInterface(new String[]{INeutronLoadBalancerAware.class.getName(),
-                                IInventoryListener.class.getName(), AbstractHandler.class.getName()},
+                                AbstractHandler.class.getName()},
                         lbaasHandlerProperties)
                 .setImplementation(LBaaSHandler.class)
                 .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))
@@ -196,9 +194,9 @@ public class Activator extends DependencyActivatorBase {
                 .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronLoadBalancerPoolCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true))
-                .add(createServiceDependency().setService(ISwitchManager.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true))
-                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)));
+                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true))
+                .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)));
 
         Dictionary<String, Object> lbaasPoolHandlerProperties = new Hashtable<>();
         lbaasPoolHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY,
@@ -212,16 +210,16 @@ public class Activator extends DependencyActivatorBase {
                 .add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true))
-                .add(createServiceDependency().setService(ISwitchManager.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true))
-                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)));
+                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true))
+                .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)));
 
         Dictionary<String, Object> 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(),
+                .setInterface(new String[]{INeutronLoadBalancerPoolMemberAware.class.getName(),
                         AbstractHandler.class.getName()}, lbaasPoolMemberHandlerProperties)
                 .setImplementation(LBaaSPoolMemberHandler.class)
                 .add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))
@@ -229,9 +227,9 @@ public class Activator extends DependencyActivatorBase {
                 .add(createServiceDependency().setService(INeutronLoadBalancerCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronLoadBalancerPoolCRUD.class).setRequired(true))
                 .add(createServiceDependency().setService(LoadBalancerProvider.class).setRequired(true))
-                .add(createServiceDependency().setService(ISwitchManager.class).setRequired(true))
                 .add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true))
-                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true)));
+                .add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true))
+                .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)));
 
         Dictionary<String, Object> portSecurityHandlerProperties = new Hashtable<>();
         portSecurityHandlerProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY,
index 01583e98de29addc2f67751525a5ab1a7748eaca..952226f6cacd75dcd1bc766e116bb9286655855f 100644 (file)
@@ -19,15 +19,11 @@ import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
 import org.opendaylight.neutron.spi.NeutronLoadBalancer;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.core.Property;
-import org.opendaylight.controller.sal.core.UpdateType;
-import org.opendaylight.controller.switchmanager.IInventoryListener;
-import org.opendaylight.controller.switchmanager.ISwitchManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,7 +40,7 @@ import java.util.Map;
 //TODO: Implement INeutronLoadBalancerHealthMonitorAware, INeutronLoadBalancerListenerAware, INeutronLoadBalancerPoolMemberAware,
 
 public class LBaaSHandler extends AbstractHandler
-        implements INeutronLoadBalancerAware, IInventoryListener {
+        implements INeutronLoadBalancerAware {
 
     private static final Logger logger = LoggerFactory.getLogger(LBaaSHandler.class);
 
@@ -55,7 +51,7 @@ public class LBaaSHandler extends AbstractHandler
     private volatile INeutronNetworkCRUD neutronNetworkCache;
     private volatile INeutronSubnetCRUD neutronSubnetCache;
     private volatile LoadBalancerProvider loadBalancerProvider;
-    private volatile ISwitchManager switchManager;
+    private volatile NodeCacheManager nodeCacheManager;
 
     @Override
     public int canCreateNeutronLoadBalancer(NeutronLoadBalancer neutronLB) {
@@ -77,13 +73,14 @@ public class LBaaSHandler extends AbstractHandler
     private void doNeutronLoadBalancerCreate(NeutronLoadBalancer neutronLB) {
         Preconditions.checkNotNull(loadBalancerProvider);
         LoadBalancerConfiguration lbConfig = extractLBConfiguration(neutronLB);
+        final List<Node> nodes = nodeCacheManager.getNodes();
 
         if (!lbConfig.isValid()) {
             logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB {} creation because no nodes available.", lbConfig.getName());
         } else {
-            for (Node node: this.switchManager.getNodes()) {
+            for (Node node : nodes) {
                 loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
             }
         }
@@ -116,13 +113,14 @@ public class LBaaSHandler extends AbstractHandler
     private void doNeutronLoadBalancerDelete(NeutronLoadBalancer neutronLB) {
         Preconditions.checkNotNull(loadBalancerProvider);
         LoadBalancerConfiguration lbConfig = extractLBConfiguration(neutronLB);
+        final List<Node> nodes = nodeCacheManager.getNodes();
 
         if (!lbConfig.isValid()) {
             logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB {} deletion because no nodes available.", lbConfig.getName());
         } else {
-            for (Node node: this.switchManager.getNodes()) {
+            for (Node node : nodes) {
                 loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE);
             }
         }
@@ -222,10 +220,12 @@ public class LBaaSHandler extends AbstractHandler
     }
 
     /**
+     FIXME!
+
      * On the addition of a new node, we iterate through all existing loadbalancer
      * instances and program the node for all of them. It is sufficient to do that only
      * when a node is added, and only for the LB instances (and not individual members).
-     */
+     *
     @Override
     public void notifyNode(Node node, UpdateType type, Map<String, Property> propMap) {
         logger.debug("notifyNode: Node {} update {} from Controller's inventory Service", node, type);
@@ -239,11 +239,11 @@ public class LBaaSHandler extends AbstractHandler
                if (type.equals(UpdateType.ADDED)) {
                    loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
 
-               /* When node disappears, we do nothing for now. Making a call to
+               * When node disappears, we do nothing for now. Making a call to
                 * loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE)
                 * can lead to TransactionCommitFailedException. Similarly when node is changed,
                 * because of remove followed by add, we do nothing.
-                */
+                *
 
                  //(type.equals(UpdateType.REMOVED) || type.equals(UpdateType.CHANGED))
                } else {
@@ -252,10 +252,6 @@ public class LBaaSHandler extends AbstractHandler
             }
         }
     }
+    */
 
-    @Override
-    public void notifyNodeConnector(NodeConnector arg0, UpdateType arg1,
-            Map<String, Property> arg2) {
-        //NOOP
-    }
 }
index ede5213fe907777c8062ef6f5f9b9e590b93a828..188676d05863141ff10426c92f07eb92f2d64a6f 100755 (executable)
@@ -18,11 +18,11 @@ import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
 import org.opendaylight.neutron.spi.NeutronLoadBalancer;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.switchmanager.ISwitchManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,7 +50,7 @@ public class LBaaSPoolHandler extends AbstractHandler
     private volatile INeutronNetworkCRUD neutronNetworkCache;
     private volatile INeutronSubnetCRUD neutronSubnetCache;
     private volatile LoadBalancerProvider loadBalancerProvider;
-    private volatile ISwitchManager switchManager;
+    private volatile NodeCacheManager nodeCacheManager;
 
     @Override
     public int canCreateNeutronLoadBalancerPool(NeutronLoadBalancerPool neutronLBPool) {
@@ -80,11 +80,12 @@ public class LBaaSPoolHandler extends AbstractHandler
     private void doNeutronLoadBalancerPoolCreate(NeutronLoadBalancerPool neutronLBPool) {
         Preconditions.checkNotNull(loadBalancerProvider);
         List<LoadBalancerConfiguration> lbConfigList = extractLBConfiguration(neutronLBPool);
+        final List<Node> nodes = nodeCacheManager.getNodes();
         if (lbConfigList == null) {
             logger.debug("Neutron LB configuration invalid for pool {} ", neutronLBPool.getLoadBalancerPoolID());
         } else if (lbConfigList.size() == 0) {
             logger.debug("No Neutron LB VIP not created yet for pool {} ", neutronLBPool.getLoadBalancerPoolID());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB pool {} creation because no nodes available.", neutronLBPool.getLoadBalancerPoolID());
         } else {
             for (LoadBalancerConfiguration lbConfig: lbConfigList) {
@@ -92,7 +93,7 @@ public class LBaaSPoolHandler extends AbstractHandler
                     logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
                     continue;
                 } else {
-                    for (Node node: this.switchManager.getNodes()) {
+                    for (Node node : nodes) {
                         loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
                     }
                 }
@@ -135,11 +136,12 @@ public class LBaaSPoolHandler extends AbstractHandler
         Preconditions.checkNotNull(loadBalancerProvider);
 
         List<LoadBalancerConfiguration> lbConfigList = extractLBConfiguration(neutronLBPool);
+        final List<Node> nodes = nodeCacheManager.getNodes();
         if (lbConfigList == null) {
             logger.debug("Neutron LB configuration invalid for pool {} ", neutronLBPool.getLoadBalancerPoolID());
         } else if (lbConfigList.size() == 0) {
             logger.debug("No Neutron LB VIP not created yet for pool {} ", neutronLBPool.getLoadBalancerPoolID());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB pool {} deletion because no nodes available.", neutronLBPool.getLoadBalancerPoolID());
         } else {
             for (LoadBalancerConfiguration lbConfig: lbConfigList) {
@@ -147,7 +149,7 @@ public class LBaaSPoolHandler extends AbstractHandler
                     logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
                     continue;
                 } else {
-                    for (Node node: this.switchManager.getNodes()) {
+                    for (Node node : nodes) {
                         loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE);
                     }
                 }
index 9b575b76aa75ef06709ad1f6c46730d18417f7f1..9968fd775c101e66fdadcc80e1ba621996fad60f 100755 (executable)
@@ -19,17 +19,18 @@ import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
 import org.opendaylight.neutron.spi.NeutronLoadBalancer;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
 import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.switchmanager.ISwitchManager;
 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
 import java.net.HttpURLConnection;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -49,7 +50,7 @@ public class LBaaSPoolMemberHandler extends AbstractHandler
     private volatile INeutronNetworkCRUD neutronNetworkCache;
     private volatile INeutronSubnetCRUD neutronSubnetCache;
     private volatile LoadBalancerProvider loadBalancerProvider;
-    private volatile ISwitchManager switchManager;
+    private volatile NodeCacheManager nodeCacheManager;
 
     @Override
     public int canCreateNeutronLoadBalancerPoolMember(NeutronLoadBalancerPoolMember neutronLBPoolMember) {
@@ -76,16 +77,17 @@ public class LBaaSPoolMemberHandler extends AbstractHandler
     private void doNeutronLoadBalancerPoolMemberCreate(NeutronLoadBalancerPoolMember neutronLBPoolMember) {
         Preconditions.checkNotNull(loadBalancerProvider);
         LoadBalancerConfiguration lbConfig = extractLBConfiguration(neutronLBPoolMember);
+        final List<Node> nodes = nodeCacheManager.getNodes();
         if (lbConfig == null) {
             logger.debug("Neutron LB configuration invalid for member {} ", neutronLBPoolMember.getPoolMemberAddress());
         } else if (lbConfig.getVip() == null) {
             logger.debug("Neutron LB VIP not created yet for member {} ", neutronLBPoolMember.getPoolMemberID());
         } else if (!lbConfig.isValid()) {
             logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB pool member {} creation because no nodes available.", neutronLBPoolMember.getPoolMemberID());
         } else {
-            for (Node node: this.switchManager.getNodes())
+            for (Node node : nodes)
                 loadBalancerProvider.programLoadBalancerPoolMemberRules(node,
                         lbConfig,
                         lbConfig.getMembers().get(neutronLBPoolMember.getPoolMemberID()), Action.ADD);
@@ -124,13 +126,14 @@ public class LBaaSPoolMemberHandler extends AbstractHandler
         Preconditions.checkNotNull(loadBalancerProvider);
 
         LoadBalancerConfiguration lbConfig = extractLBConfiguration(neutronLBPoolMember);
+        final List<Node> nodes = nodeCacheManager.getNodes();
         if (lbConfig == null) {
             logger.debug("Neutron LB configuration invalid for member {} ", neutronLBPoolMember.getPoolMemberAddress());
         } else if (lbConfig.getVip() == null) {
             logger.debug("Neutron LB VIP not created yet for member {} ", neutronLBPoolMember.getPoolMemberID());
         } else if (!lbConfig.isValid()) {
             logger.debug("Neutron LB pool configuration invalid for {} ", lbConfig.getName());
-        } else if (this.switchManager.getNodes().size() == 0) {
+        } else if (nodes.isEmpty()) {
             logger.debug("Noop with LB pool member {} deletion because no nodes available.", neutronLBPoolMember.getPoolMemberID());
         } else {
             /* As of now, deleting a member involves recomputing member indices.
@@ -139,7 +142,7 @@ public class LBaaSPoolMemberHandler extends AbstractHandler
             LoadBalancerConfiguration newLBConfig = new LoadBalancerConfiguration(lbConfig);
             newLBConfig.removeMember(neutronLBPoolMember.getPoolMemberID());
 
-            for (Node node: this.switchManager.getNodes()) {
+            for (Node node : nodes) {
                 loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE);
                 loadBalancerProvider.programLoadBalancerRules(node, newLBConfig, Action.ADD);
             }
index 1e854a5fa7745c545b9058642a4d922bc8d509f6..f6dab65571fd7b72b1e5b843bc25ece9b1667647 100755 (executable)
@@ -10,9 +10,9 @@
 
 package org.opendaylight.ovsdb.openstack.netvirt.api;
 
-import org.opendaylight.controller.sal.core.Node;
 import org.opendaylight.ovsdb.plugin.api.Status;
 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 
 /**
  * This interface allows load-balancer flows to be written to nodes
index 2bfece62007ebafac59681db90b2a956948af15d..c5c4c2d2a63527c4416272a0d00f2079802e7b41 100644 (file)
@@ -46,11 +46,9 @@ public class NodeCacheManagerImpl extends AbstractHandler
 
     private void _processNodeAdded(Node node) {
         nodeCache.add(node);
-        logger.info("XXXX added node {}. cache is now {}", node, nodeCache);  // TODO: debug, remove
     }
     private void _processNodeRemoved(Node node) {
         nodeCache.remove(node);
-        logger.info("XXXX removed node {}. cache is now {}", node, nodeCache);  // TODO: debug, remove
     }
 
     /**