Search in sources :

Example 1 with CollectionTimedOut

use of org.opennms.netmgt.collection.api.CollectionTimedOut 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);
            }
        });
    }
}
Also used : RpcExceptionHandler(org.opennms.core.rpc.api.RpcExceptionHandler) CollectionTimedOut(org.opennms.netmgt.collection.api.CollectionTimedOut) CollectionUnknown(org.opennms.netmgt.collection.api.CollectionUnknown) SnmpAgentTimeoutException(org.opennms.netmgt.snmp.SnmpAgentTimeoutException) CollectionWarning(org.opennms.netmgt.collection.api.CollectionWarning) CollectionTracker(org.opennms.netmgt.snmp.CollectionTracker) CollectionAgent(org.opennms.netmgt.collection.api.CollectionAgent) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

ExecutionException (java.util.concurrent.ExecutionException)1 RpcExceptionHandler (org.opennms.core.rpc.api.RpcExceptionHandler)1 CollectionAgent (org.opennms.netmgt.collection.api.CollectionAgent)1 CollectionTimedOut (org.opennms.netmgt.collection.api.CollectionTimedOut)1 CollectionUnknown (org.opennms.netmgt.collection.api.CollectionUnknown)1 CollectionWarning (org.opennms.netmgt.collection.api.CollectionWarning)1 CollectionTracker (org.opennms.netmgt.snmp.CollectionTracker)1 SnmpAgentTimeoutException (org.opennms.netmgt.snmp.SnmpAgentTimeoutException)1