From edd0de19d5f08d2f699884770d8ef56ea8c47c9d Mon Sep 17 00:00:00 2001 From: Pramila Singh Date: Mon, 1 Jul 2013 17:09:26 -0700 Subject: [PATCH] Restoring basic cache syncing for switch manager Signed-off-by: Pramila Singh --- .../controller/switchmanager/SpanConfig.java | 5 ++ .../switchmanager/SubnetConfig.java | 1 + .../switchmanager/SwitchConfig.java | 6 ++ .../internal/SwitchManagerImpl.java | 80 +++++++++++-------- 4 files changed, 59 insertions(+), 33 deletions(-) diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java index 80ed209819..83cb8b1cc9 100644 --- a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java +++ b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java @@ -150,4 +150,9 @@ public class SpanConfig implements Serializable { public boolean matchNode(String nodeId) { return this.nodeId.equals(nodeId); } + + @Override + public String toString() { + return ("Span Config [nodeId=" + nodeId + " spanPort=" + spanPort + "]"); + } } diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java index 87dd99da7f..895f117321 100644 --- a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java +++ b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java @@ -231,6 +231,7 @@ public class SubnetConfig implements Serializable { nodePorts.remove(sp); } + @Override public String toString() { return ("Subnet Config [Description=" + name + " Subnet=" + subnet + " NodeConnectors=" + nodePorts + "]"); diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java index 253096edc3..61b2f0a3a8 100644 --- a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java +++ b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java @@ -97,4 +97,10 @@ public class SwitchConfig implements Serializable { return false; return true; } + + @Override + public String toString() { + return ("Switch Config [Node=" + nodeId + " Description=" + description + + " Tier=" + tier + " Mode=" + mode + "]"); + } } diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java index ab31496103..d32f98650b 100644 --- a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java +++ b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java @@ -52,14 +52,14 @@ import org.opendaylight.controller.sal.core.Tier; import org.opendaylight.controller.sal.core.UpdateType; import org.opendaylight.controller.sal.inventory.IInventoryService; import org.opendaylight.controller.sal.inventory.IListenInventoryUpdates; -import org.opendaylight.controller.sal.utils.HexEncode; -import org.opendaylight.controller.sal.utils.StatusCode; import org.opendaylight.controller.sal.utils.GlobalConstants; +import org.opendaylight.controller.sal.utils.HexEncode; import org.opendaylight.controller.sal.utils.IObjectReader; import org.opendaylight.controller.sal.utils.ObjectReader; import org.opendaylight.controller.sal.utils.ObjectWriter; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; +import org.opendaylight.controller.sal.utils.StatusCode; import org.opendaylight.controller.switchmanager.IInventoryListener; import org.opendaylight.controller.switchmanager.ISpanAware; import org.opendaylight.controller.switchmanager.ISwitchManager; @@ -174,7 +174,7 @@ CommandProvider { public void startUp() { // Initialize configuration file names - subnetFileName = ROOT + "subnets" + this.getContainerName() + ".conf"; + subnetFileName = ROOT + "subnets_" + this.getContainerName() + ".conf"; spanFileName = ROOT + "spanPorts_" + this.getContainerName() + ".conf"; switchConfigFileName = ROOT + "switchConfig_" + this.getContainerName() + ".conf"; @@ -201,7 +201,6 @@ CommandProvider { } public void shutDown() { - destroyCaches(this.getContainerName()); } @SuppressWarnings("deprecation") @@ -499,11 +498,13 @@ CommandProvider { } conf.addNodeConnectors(switchPorts); + subnetsConfigList.put(name, conf); // Update Database Subnet sub = subnets.get(conf.getIPnum()); Set sp = conf.getNodeConnectors(switchPorts); sub.addNodeConnectors(sp); + subnets.put(conf.getIPnum(), sub); return new Status(StatusCode.SUCCESS, null); } @@ -515,11 +516,13 @@ CommandProvider { return new Status(StatusCode.NOTFOUND, "Subnet does not exist"); } conf.removeNodeConnectors(switchPorts); + subnetsConfigList.put(name, conf); // Update Database Subnet sub = subnets.get(conf.getIPnum()); Set sp = conf.getNodeConnectors(switchPorts); sub.deleteNodeConnectors(sp); + subnets.put(conf.getIPnum(), sub); return new Status(StatusCode.SUCCESS, null); } @@ -554,7 +557,7 @@ CommandProvider { @SuppressWarnings("unchecked") private void loadSubnetConfiguration() { ObjectReader objReader = new ObjectReader(); - ConcurrentMap confList = (ConcurrentMap) objReader + ConcurrentMap confList = (ConcurrentMap) objReader .read(this, subnetFileName); if (confList == null) { @@ -598,6 +601,11 @@ CommandProvider { @Override public void updateSwitchConfig(SwitchConfig cfgObject) { + // update default container only + if (!isDefaultContainer) { + return; + } + boolean modeChange = false; SwitchConfig sc = nodeConfigList.get(cfgObject.getNodeId()); @@ -607,28 +615,25 @@ CommandProvider { nodeConfigList.put(cfgObject.getNodeId(), cfgObject); try { - // update default container only - if (isDefaultContainer) { - String nodeId = cfgObject.getNodeId(); - Node node = Node.fromString(nodeId); - Map propMap; - if (nodeProps.get(node) != null) { - propMap = nodeProps.get(node); - } else { - propMap = new HashMap(); - } - Property desc = new Description(cfgObject.getNodeDescription()); - propMap.put(desc.getName(), desc); - Property tier = new Tier(Integer.parseInt(cfgObject.getTier())); - propMap.put(tier.getName(), tier); - addNodeProps(node, propMap); + String nodeId = cfgObject.getNodeId(); + Node node = Node.fromString(nodeId); + Map propMap; + if (nodeProps.get(node) != null) { + propMap = nodeProps.get(node); + } else { + propMap = new HashMap(); + } + Property desc = new Description(cfgObject.getNodeDescription()); + propMap.put(desc.getName(), desc); + Property tier = new Tier(Integer.parseInt(cfgObject.getTier())); + propMap.put(tier.getName(), tier); + addNodeProps(node, propMap); - log.info("Set Node {}'s Mode to {}", nodeId, - cfgObject.getMode()); + log.info("Set Node {}'s Mode to {}", nodeId, + cfgObject.getMode()); - if (modeChange) { - notifyModeChange(node, cfgObject.isProactive()); - } + if (modeChange) { + notifyModeChange(node, cfgObject.isProactive()); } } catch (Exception e) { log.debug("updateSwitchConfig: {}", e.getMessage()); @@ -1333,17 +1338,26 @@ CommandProvider { return; } - nodeProps = this.inventoryService.getNodeProps(); - Set nodeSet = nodeProps.keySet(); - if (nodeSet != null) { - for (Node node : nodeSet) { - log.debug("getInventories: {} added for container {}", - new Object[] { node, containerName }); - addNode(node, null); + Map> nodeProp = this.inventoryService.getNodeProps(); + for(Map.Entry> entry : nodeProp.entrySet()) { + Node node = entry.getKey(); + log.debug("getInventories: {} added for container {}", + new Object[] { node, containerName }); + Map propMap = entry.getValue(); + Set props = new HashSet(); + for(Property property : propMap.values()) { + props.add(property); } + addNode(node, props); } - nodeConnectorProps = inventoryService.getNodeConnectorProps(); + Map> nodeConnectorProp = this.inventoryService.getNodeConnectorProps(); + for(Map.Entry> entry : nodeConnectorProp.entrySet()) { + Map propMap = entry.getValue(); + for(Property property : propMap.values()) { + addNodeConnectorProp(entry.getKey(), property); + } + } } private void clearInventories() { -- 2.36.6