X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FInventoryService.java;h=4869a9500b489ca58c1eaf72359fb8aaeb72cd12;hb=ff1b4a79cca00743a00c3b0b1100bd0ab2b2fb31;hp=ec6ea1223e71f6103fcfef6aecb655c1108e6179;hpb=f55bb9e5a57ba18ad5994ea27bebb3a45a6c1f61;p=controller.git diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java index ec6ea1223e..4869a9500b 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java @@ -53,6 +53,7 @@ public class InventoryService implements IInventoryShimInternalListener, private ConcurrentMap> nodeProps; // properties are maintained in global container only private ConcurrentMap> nodeConnectorProps; // properties are maintained in global container only private boolean isDefaultContainer = false; + private String containerName = null; void setController(IController s) { this.controller = s; @@ -75,7 +76,7 @@ public class InventoryService implements IInventoryShimInternalListener, Dictionary props = c.getServiceProperties(); if (props != null) { - String containerName = (String) props.get("containerName"); + containerName = (String) props.get("containerName"); isDefaultContainer = containerName.equals(GlobalConstants.DEFAULT .toString()); } @@ -146,6 +147,7 @@ public class InventoryService implements IInventoryShimInternalListener, */ @Override public ConcurrentMap> getNodeProps() { + logger.debug("getNodePros for container {}", containerName); return nodeProps; } @@ -212,15 +214,30 @@ public class InventoryService implements IInventoryShimInternalListener, } private void addNode(Node node, Set props) { - logger.trace("{} added, props: {}", node, props); if (nodeProps == null) { return; } + Set nodeSet = nodeProps.keySet(); + if (((props == null) || props.isEmpty()) && (nodeSet != null) + && nodeSet.contains(node)) { + // node already added + return; + } + + logger.trace("addNode: {} added, props: {} for container {}", + new Object[] { node, props, containerName }); + // update local cache - Map propMap = new HashMap(); - for (Property prop : props) { - propMap.put(prop.getName(), prop); + Map propMap = nodeProps.get(node); + if (propMap == null) { + propMap = new HashMap(); + } + + if (props != null) { + for (Property prop : props) { + propMap.put(prop.getName(), prop); + } } nodeProps.put(node, propMap);