/** * {@inheritDoc} * * <p>The OpenNMS event listener runs this routine when a new event is detected. This can be run * on any event but only needs to run on uei.opennms.org/vacuumd/alarmListChanged */ @Override public void onEvent(Event event) { LOG.debug( "Qosd.onEvent: OpenNMS Event Detected by QosD. uei '{}' Dbid(): {} event.getTime(): {}", event.getUei(), event.getDbid(), event.getTime()); String s = event.getUei(); if (s == null) return; if (EventConstants.NODE_ADDED_EVENT_UEI.equals(s) || EventConstants.NODE_LABEL_CHANGED_EVENT_UEI.equals(s) || EventConstants.NODE_DELETED_EVENT_UEI.equals(s) || EventConstants.ASSET_INFO_CHANGED_EVENT_UEI.equals(s)) { try { LOG.debug("QosD.onEvent Event causing update to node list"); openNMSEventHandlerThread.updateNodeCache(); return; } catch (Exception ex) { LOG.error( "Qosd.onEvent. Problem calling openNMSEventHandlerThread.updateNodeCache(). Error:", ex); return; } } if (event.getUei().equals("uei.opennms.org/vacuumd/alarmListChanged")) { LOG.debug( "QosD.onEvent received 'uei.opennms.org/vacuumd/alarmListChanged' event; Updating alarm list"); } else { // used code from AlarmWriter.java Check value of <logmsg> attribute 'dest', if set to // "donotpersist" then simply return, the uei is not to be persisted to the database // The uei.opennms.org/vacuumd/alarmListChanged event must be set to be reised // as auto-action from vacumd-configuration.xml and is called // when vacumd updates the current ( alarm not acknowledgd and cleared ) alarm list // note alarmListChanged event may be marked as 'donotpersist' so checked first try { // this section prints out events received which are not // uei.opennms.org/vacuumd/alarmListChanged // return if a donotpersist event if (event.getLogmsg().getDest().equals("donotpersist")) { LOG.debug( "QosD.onEvent Ignoring event marked as 'doNotPersist'. Event Uei:{}", event.getUei()); return; } // AlarmData should not be null if QoSD-configuration.xml is set up only to receive raise // and not clearing alarms if (event.getAlarmData().getAlarmType() == 2) { LOG.debug( "Qosd.onEvent: uei '{}' Dbid(): {} alarm type = 2 (clearing alarm) so ignoring.", event.getUei(), event.getDbid()); return; } } catch (NullPointerException e) { LOG.error( "Qosd.onEvent: uei '{}' Dbid(): {}' problem dealing with event. Check QoSD-configuration.xml.", event.getUei(), event.getDbid()); return; } } // This forces the ossDao to update it's list on this event and call back to sendAlarms() to // send the // updated alarm list. try { LOG.debug("QosD.onEvent calling openNMSEventHandlerThread.sendAlarmList() to update list."); // ossDao.updateAlarmCacheAndSendAlarms(); openNMSEventHandlerThread.sendAlarmList(); } catch (Exception ex) { LOG.error( "Qosd.onEvent. Problem calling openNMSEventHandlerThread.sendAlarmList(). Error:", ex); } }