use of org.opennms.netmgt.snmp.SnmpAgentTimeoutException in project opennms by OpenNMS.
the class SnmpCollectionSet method collect.
void collect() throws CollectionException {
// XXX Should we have a call to hasDataToCollect here?
try {
// now collect the data
CollectionAgent agent = getCollectionAgent();
logStartedWalker();
CompletableFuture<CollectionTracker> future = m_client.walk(getAgentConfig(), getTracker()).withDescription("SnmpCollectors for " + agent.getHostAddress()).withLocation(getCollectionAgent().getLocationName()).withTimeToLive(m_snmpCollection.getServiceParameters().getServiceInterval()).execute();
// wait for collection to finish
try {
future.get();
} finally {
logFinishedWalker();
}
// Execute POST Updates (add custom parameters)
SnmpPropertyExtenderProcessor processor = new SnmpPropertyExtenderProcessor();
processor.process(this, m_snmpCollection.getName(), m_agent.getSysObjectId(), m_agent.getHostAddress());
m_status = CollectionStatus.SUCCEEDED;
} catch (InterruptedException | ExecutionException e) {
throw RpcExceptionUtils.handleException(e, new RpcExceptionHandler<CollectionException>() {
@Override
public CollectionException onInterrupted(Throwable t) {
Thread.currentThread().interrupt();
return new CollectionUnknown(String.format("Collection of SNMP data for interface %s at location %s was interrupted.", getCollectionAgent().getHostAddress(), getCollectionAgent().getLocationName()), t);
}
@Override
public CollectionException onTimedOut(Throwable t) {
return new CollectionUnknown(String.format("No response received when remotely collecting SNMP data" + " for interface %s at location %s.", getCollectionAgent().getHostAddress(), getCollectionAgent().getLocationName()), t);
}
@Override
public CollectionException onRejected(Throwable t) {
return new CollectionUnknown(String.format("The request to remotely collect SNMP data" + " for interface %s at location %s was rejected.", getCollectionAgent().getHostAddress(), getCollectionAgent().getLocationName()), t);
}
@Override
public CollectionException onUnknown(Throwable t) {
if (t instanceof SnmpAgentTimeoutException) {
return new CollectionTimedOut(t.getMessage());
} else if (t.getCause() != null && t.getCause() instanceof SnmpAgentTimeoutException) {
return new CollectionTimedOut(t.getCause().getMessage());
}
return new CollectionWarning(String.format("Unexpected exception when collecting SNMP data for interface %s at location %s.", getCollectionAgent().getHostAddress(), getCollectionAgent().getLocationName()), t);
}
});
}
}
Aggregations