private ConcurrentMap<Node, Map<String, Property>> nodeProps; // properties are maintained in global container only
private ConcurrentMap<NodeConnector, Map<String, Property>> nodeConnectorProps; // properties are maintained in global container only
private boolean isDefaultContainer = false;
+ private String containerName = null;
void setController(IController s) {
this.controller = s;
Dictionary props = c.getServiceProperties();
if (props != null) {
- String containerName = (String) props.get("containerName");
+ containerName = (String) props.get("containerName");
isDefaultContainer = containerName.equals(GlobalConstants.DEFAULT
.toString());
}
*/
@Override
public ConcurrentMap<Node, Map<String, Property>> getNodeProps() {
+ logger.debug("getNodePros for container {}", containerName);
return nodeProps;
}
}
private void addNode(Node node, Set<Property> props) {
- logger.trace("{} added, props: {}", node, props);
if (nodeProps == null) {
return;
}
+ Set<Node> 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<String, Property> propMap = new HashMap<String, Property>();
- for (Property prop : props) {
- propMap.put(prop.getName(), prop);
+ Map<String, Property> propMap = nodeProps.get(node);
+ if (propMap == null) {
+ propMap = new HashMap<String, Property>();
+ }
+
+ if (props != null) {
+ for (Property prop : props) {
+ propMap.put(prop.getName(), prop);
+ }
}
nodeProps.put(node, propMap);
@Override
public void tagUpdated(String containerName, Node n, short oldTag,
short newTag, UpdateType t) {
+ logger.debug("tagUpdated: {} type {} for container {}", new Object[] {
+ n, t, containerName });
}
@Override
@Override
public void nodeConnectorUpdated(String containerName, NodeConnector p,
UpdateType t) {
+ logger.debug("nodeConnectorUpdated: {} type {} for container {}",
+ new Object[] { p, t, containerName });
if (this.containerMap == null) {
logger.error("containerMap is NULL");
return;
// notify InventoryService
notifyInventoryShimInternalListener(containerName, p, t, null);
+ notifyInventoryShimInternalListener(containerName, p.getNode(), t, null);
}
private void notifyInventoryShimExternalListener(Node node,
type, props);
logger.trace(
"notifyInventoryShimInternalListener {} type {} for container {}",
- nodeConnector, type, container);
+ new Object[] { nodeConnector, type, container });
}
}
notifyInventoryShimExternalListener(node, type, props);
}
+ private void notifyInventoryShimInternalListener(String container,
+ Node node, UpdateType type, Set<Property> props) {
+ IInventoryShimInternalListener inventoryShimInternalListener = inventoryShimInternalListeners
+ .get(container);
+ if (inventoryShimInternalListener != null) {
+ inventoryShimInternalListener.updateNode(node, type, props);
+ logger.trace(
+ "notifyInventoryShimInternalListener {} type {} for container {}",
+ new Object[] { node, type, container });
+ }
+ }
+
private void addNode(ISwitch sw) {
Node node;
try {
@Override
public void updateNode(Node node, UpdateType type, Set<Property> props) {
+ log.debug("updateNode: {} type {} props {} for container {}",
+ new Object[] { node, type, props, containerName });
switch (type) {
case ADDED:
addNode(node, props);
Node node = nodeConnector.getNode();
Map<String, Property> propMap = new HashMap<String, Property>();
- log.trace("{} {}", nodeConnector, type);
+ log.debug("updateNodeConnector: {} type {} props {} for container {}",
+ new Object[] { nodeConnector, type, props, containerName });
if (nodeConnectorProps == null) {
return;
Set<Node> nodeSet = nodeProps.keySet();
if (nodeSet != null) {
for (Node node : nodeSet) {
+ log.debug("getInventories: {} added for container {}",
+ new Object[] { node, containerName });
addNode(node, null);
}
}
}
private void bulkUpdateService(IInventoryListener service) {
+ Map<String, Property> propMap;
+ UpdateType type = UpdateType.ADDED;
+
for (Node node : getNodes()) {
- service.notifyNode(node, UpdateType.ADDED, null);
+ propMap = nodeProps.get(node);
+ service.notifyNode(node, type, propMap);
}
- Map<String, Property> propMap = new HashMap<String, Property>();
- propMap.put(State.StatePropName, new State(State.EDGE_UP));
for (NodeConnector nodeConnector : nodeConnectorProps.keySet()) {
- if (isNodeConnectorEnabled(nodeConnector)) {
- service.notifyNodeConnector(nodeConnector, UpdateType.ADDED,
- propMap);
- }
+ propMap = nodeConnectorProps.get(nodeConnector);
+ service.notifyNodeConnector(nodeConnector, type, propMap);
}
}