use of org.opennms.netmgt.enlinkd.snmp.CdpCacheTableTracker in project opennms by OpenNMS.
the class EnLinkdSnmpIT method testCdpCacheTableCollection.
@Test
@JUnitSnmpAgents(value = { @JUnitSnmpAgent(host = RPict001_IP, port = 161, resource = RPict001_SNMP_RESOURCE) })
public void testCdpCacheTableCollection() throws Exception {
SnmpAgentConfig config = SnmpPeerFactory.getInstance().getAgentConfig(InetAddress.getByName(RPict001_IP));
class CdpCacheTableTrackerTester extends CdpCacheTableTracker {
int count = 0;
public int count() {
return count;
}
}
final CdpCacheTableTrackerTester cdpCacheTableTracker = new CdpCacheTableTrackerTester() {
public void processCdpCacheRow(final CdpCacheRow row) {
count++;
}
};
String trackerName = "cdpCacheTable";
try {
m_client.walk(config, cdpCacheTableTracker).withDescription(trackerName).withLocation(null).execute().get();
} catch (final InterruptedException e) {
LOG.error("run: Cdp Linkd collection interrupted, exiting", e);
return;
}
assertEquals(14, cdpCacheTableTracker.count());
}
use of org.opennms.netmgt.enlinkd.snmp.CdpCacheTableTracker in project opennms by OpenNMS.
the class NodeDiscoveryCdp method runCollection.
protected void runCollection() {
final Date now = new Date();
final CdpGlobalGroupTracker cdpGlobalGroup = new CdpGlobalGroupTracker();
SnmpAgentConfig peer = m_linkd.getSnmpAgentConfig(getPrimaryIpAddress(), getLocation());
try {
m_linkd.getLocationAwareSnmpClient().walk(peer, cdpGlobalGroup).withDescription("cdpGlobalGroup").withLocation(getLocation()).execute().get();
} catch (ExecutionException e) {
LOG.info("run: node [{}]: ExecutionException: cdpGlobalGroup: {}", getNodeId(), e.getMessage());
return;
} catch (final InterruptedException e) {
LOG.info("run: node [{}]: InterruptedException: cdpGlobalGroup: {}", getNodeId(), e.getMessage());
return;
}
if (cdpGlobalGroup.getCdpDeviceId() == null) {
LOG.info("run: node [{}]: CDP_MIB not supported", getNodeId());
return;
}
CdpElement cdpElement = cdpGlobalGroup.getCdpElement();
m_linkd.getQueryManager().store(getNodeId(), cdpElement);
if (cdpElement.getCdpGlobalRun() == TruthValue.FALSE) {
LOG.info("run: node [{}]. CDP disabled.", getNodeId());
return;
}
List<CdpLink> links = new ArrayList<>();
CdpCacheTableTracker cdpCacheTable = new CdpCacheTableTracker() {
public void processCdpCacheRow(final CdpCacheRow row) {
links.add(row.getLink());
}
};
try {
m_linkd.getLocationAwareSnmpClient().walk(peer, cdpCacheTable).withDescription("cdpCacheTable").withLocation(getLocation()).execute().get();
} catch (ExecutionException e) {
LOG.info("run: node [{}]: ExecutionException: cdpCacheTable: {}", getNodeId(), e.getMessage());
return;
} catch (final InterruptedException e) {
LOG.info("run: node [{}]: InterruptedException: cdpCacheTable: {}", getNodeId(), e.getMessage());
return;
}
final CdpInterfacePortNameGetter cdpInterfacePortNameGetter = new CdpInterfacePortNameGetter(peer, m_linkd.getLocationAwareSnmpClient(), getLocation(), getNodeId());
for (CdpLink link : links) m_linkd.getQueryManager().store(getNodeId(), cdpInterfacePortNameGetter.get(link));
m_linkd.getQueryManager().reconcileCdp(getNodeId(), now);
}
Aggregations