X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fforwardingrulesmanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fforwardingrulesmanager%2Finternal%2FForwardingRulesManagerImpl.java;fp=opendaylight%2Fforwardingrulesmanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fforwardingrulesmanager%2Finternal%2FForwardingRulesManagerImpl.java;h=6cdc785a196593a20116efdef0976b9d8550355c;hb=48c293350f30f1d0104adcb548d233d7d79efd80;hp=bdaae5b28ce40245a43e040b1d46e13963c11277;hpb=1786548a9955660675a4f20ce49e99242e8f7035;p=controller.git diff --git a/opendaylight/forwardingrulesmanager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerImpl.java b/opendaylight/forwardingrulesmanager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerImpl.java index bdaae5b28c..6cdc785a19 100644 --- a/opendaylight/forwardingrulesmanager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerImpl.java +++ b/opendaylight/forwardingrulesmanager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerImpl.java @@ -93,6 +93,7 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, IConfigurationContainerAware, IInventoryListener, IObjectReader, ICacheUpdateAware, CommandProvider { private static final String SAVE = "Save"; + private static final String NODEDOWN = "Node is Down"; private static final Logger log = LoggerFactory .getLogger(ForwardingRulesManagerImpl.class); private Map flowsSaveEvent; @@ -1303,14 +1304,28 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, private void updateStaticFlowConfigsOnNodeDown(Node node) { log.trace("Updating Static Flow configs on node down: " + node); - for (FlowConfig config : staticFlows.values()) { + List toRemove = new ArrayList(); + for (Entry entry : staticFlows.entrySet()) { + + FlowConfig config = entry.getValue(); + if (config.isPortGroupEnabled()) { continue; } + if (config.installInHw() && config.getNode().equals(node)) { - config.setStatus("Node is down"); + if (config.isInternalFlow()) { + // Take note of this controller generated static flow + toRemove.add(entry.getKey()); + } else { + config.setStatus(NODEDOWN); + } } } + // Remove controller generated static flows for this node + for (Integer index : toRemove) { + staticFlows.remove(index); + } } private void updateStaticFlowConfigsOnContainerModeChange(UpdateType update) { @@ -1657,8 +1672,10 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, ConcurrentHashMap nonDynamicFlows = new ConcurrentHashMap(); for (Integer ordinal : staticFlows.keySet()) { FlowConfig config = staticFlows.get(ordinal); - if (config.isDynamic()) + // Do not save dynamic and controller generated static flows + if (config.isDynamic() || config.isInternalFlow()) { continue; + } nonDynamicFlows.put(ordinal, config); } objWriter.write(nonDynamicFlows, frmFileName); @@ -1802,10 +1819,10 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, public void notifyNode(Node node, UpdateType type, Map propMap) { switch (type) { - case ADDED: + case ADDED: addStaticFlowsToSwitch(node); break; - case REMOVED: + case REMOVED: cleanDatabaseForNode(node); updateStaticFlowConfigsOnNodeDown(node); break; @@ -1816,7 +1833,7 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, @Override public void notifyNodeConnector(NodeConnector nodeConnector, - UpdateType type, Map propMap) { + UpdateType type, Map propMap) { } private FlowConfig getDerivedFlowConfig(FlowConfig original, @@ -2049,7 +2066,6 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, * */ void init() { - log.info("Init"); frmAware = Collections .synchronizedSet(new HashSet()); frmFileName = GlobalConstants.STARTUPHOME.toString() + "frm_staticflows_" @@ -2085,7 +2101,6 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, * */ void destroy() { - log.info("Destroy"); destroyCaches(); } @@ -2095,7 +2110,6 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, * */ void start() { - log.info("Start"); /* * Read startup and build database if we have not already gotten the * configurations synced from another node @@ -2112,7 +2126,6 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, * */ void stop() { - log.info("Stop"); } public void setFlowProgrammerService(IFlowProgrammerService service) { @@ -2330,7 +2343,7 @@ public class ForwardingRulesManagerImpl implements IForwardingRulesManager, boolean verbose = false; String verboseCheck = ci.nextArgument(); if (verboseCheck != null) { - verbose = verboseCheck.equals("true"); + verbose = verboseCheck.equalsIgnoreCase("true"); } // Dump per node database