Index: InventoryService.java =================================================================== --- InventoryService.java (revision 13486) +++ InventoryService.java (working copy) @@ -4,6 +4,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.TreeMap; import org.apache.log4j.Category; @@ -11,6 +12,7 @@ import org.opennms.core.resource.Vault; import org.opennms.netmgt.config.RWSConfig; import org.opennms.netmgt.dao.NodeDao; +import org.opennms.netmgt.model.OnmsIpInterface; import org.opennms.netmgt.model.OnmsNode; import org.opennms.rancid.ConnectionProperties; import org.opennms.rancid.InventoryElement2; @@ -114,11 +116,46 @@ nodeModel.put("RWSStatus","OK"); OnmsNode node = m_nodeDao.get(nodeid); - String rancidName = node.getLabel(); + String rancidName; + log().debug("getRancidNodeBase rancid node name search..."); + + // Test if node label is known in Rancid + if(checkRancidNode(node.getLabel())) { + rancidName = node.getLabel(); + log().debug("getRancidNodeBase rancid node name found by label : " + rancidName); + } + else { + // else, fall back to the Primary IP address if it exists + String intf = ""; + OnmsIpInterface primaryInterface = node.getPrimaryInterface(); + + if (primaryInterface == null) { + log().debug("getRancidNodeBase primaryIP not found"); + Set ipInterfaces = node.getIpInterfaces(); + for (OnmsIpInterface onmsIpInterface : ipInterfaces) { + log().debug("getRancidNodeBase alternate intf found : " + onmsIpInterface.getIpAddress()); + intf = onmsIpInterface.getIpAddress(); + break; + } + } + else { + intf = primaryInterface.getIpAddress(); + } + + if(intf != null && intf.length() > 0 && checkRancidNode(intf)) { + rancidName = intf; + log().debug("getRancidNodeBase rancid node name found by IPAddr : " + rancidName); + } + else { + // TODO manage unknown nodes better ? + rancidName = node.getLabel(); + log().debug("getRancidNodeBase rancid node name NOT found"); + } + } + log().debug("getRancidNodeBase rancid node name: " + rancidName); - nodeModel.put("id", rancidName); nodeModel.put("db_id", nodeid); nodeModel.put("status_general", ElementUtil.getNodeStatusString(node.getType().charAt(0)));