Exemplo n.º 1
0
  /**
   * {@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);
    }
  }