/** * Handles the event driven access to acknowledging <code>OnmsAcknowledgable</code>s. The acknowledgment event * contains 4 parameters: * ackUser: The user acknowledging the <code>OnmsAcknowledgable</code> * ackAction: ack, unack, esc, clear * ackType: <code>AckType</code. representing either an <code>OnmsAlarm</code>, <code>OnmsNotification</code>, etc. * refId: The ID of the <code>OnmsAcknowledgable</code> * * @param event a {@link org.opennms.netmgt.xml.event.Event} object. */ @EventHandler(uei=EventConstants.ACKNOWLEDGE_EVENT_UEI) public void handleAckEvent(Event event) { LOG.info("handleAckEvent: Received acknowledgment event: {}", event); OnmsAcknowledgment ack; try { ack = new OnmsAcknowledgment(event); m_ackDao.processAck(ack); } catch (ParseException e) { LOG.error("handleAckEvent: unable to process acknowledgment event: {}", event, e); } }
acknowledgmentDao.findLatestAckForRefId(alarms.iterator() .next() .getId()) .ifPresent(acks::add); } else { acks.addAll(acknowledgmentDao.findLatestAcks());
/** * Retrieve the messages in the configured mail folder, searches for notification replies, * and creates and processes the acknowledgments. */ protected void findAndProcessAcks() { LOG.debug("findAndProcessAcks: checking for acknowledgments..."); Collection<OnmsAcknowledgment> acks; try { List<Message> msgs = retrieveAckMessages(); //TODO: need a read *new* messages feature acks = createAcks(msgs); if (acks != null) { LOG.debug("findAndProcessAcks: Found {} acks. Processing...", acks.size()); m_ackDao.processAcks(acks); LOG.debug("findAndProcessAcks: acks processed."); } } catch (JavaMailerException e) { LOG.error("findAndProcessAcks: Exception thrown in JavaMail", e); } LOG.debug("findAndProcessAcks: completed checking for and processing acknowledgments."); }
@Override @Transactional public List<OnmsAcknowledgment> getAcknowledgments(int alarmId) { CriteriaBuilder cb = new CriteriaBuilder(OnmsAcknowledgment.class); cb.eq("refId", alarmId); cb.eq("ackType", AckType.ALARM); return m_ackDao.findMatching(cb.toCriteria()); }
/** * {@inheritDoc} */ @Transactional @Override public void unacknowledgeMatchingAlarms(OnmsCriteria criteria, String user) { List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); for (OnmsAlarm alarm : alarms) { OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckAction(AckAction.UNACKNOWLEDGE); m_ackDao.processAck(ack); } }
} finally { if (acks.size() > 0) { m_ackDao.processAcks(acks);
/** * {@inheritDoc} */ @Transactional @Override public void acknowledgeMatchingAlarms(String user, Date timestamp, OnmsCriteria criteria) { List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.ACKNOWLEDGE); m_ackDao.processAck(ack); } }
@Override @Transactional public void acknowledgeAlarm(OnmsAlarm alarm, Date now) { LOG.info("Acknowledging alarm with id: {} @ {}", alarm.getId(), now); final OnmsAlarm alarmInTrans = alarmDao.get(alarm.getId()); if (alarmInTrans == null) { LOG.warn("Alarm disappeared: {}. Skipping ack.", alarm); return; } OnmsAcknowledgment ack = new OnmsAcknowledgment(alarmInTrans, DEFAULT_USER, now); ack.setAckAction(AckAction.ACKNOWLEDGE); acknowledgmentDao.processAck(ack); }
@Override @Transactional public void unacknowledgeAlarm(OnmsAlarm alarm, Date now) { LOG.info("Un-Acknowledging alarm with id: {} @ {}", alarm.getId(), now); final OnmsAlarm alarmInTrans = alarmDao.get(alarm.getId()); if (alarmInTrans == null) { LOG.warn("Alarm disappeared: {}. Skipping un-ack.", alarm); return; } OnmsAcknowledgment ack = new OnmsAcknowledgment(alarmInTrans, DEFAULT_USER, now); ack.setAckAction(AckAction.UNACKNOWLEDGE); acknowledgmentDao.processAck(ack); }
/** * {@inheritDoc} */ @Transactional @Override public void escalateAlarms(int[] alarmIds, String user, Date timestamp) { OnmsCriteria criteria = new OnmsCriteria(OnmsAlarm.class); criteria.add(Restrictions.in("id", Arrays.asList(ArrayUtils.toObject(alarmIds)))); List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.ESCALATE); m_ackDao.processAck(ack); } }
/** * {@inheritDoc} */ @Transactional @Override public void clearAlarms(int[] alarmIds, String user, Date timestamp) { OnmsCriteria criteria = new OnmsCriteria(OnmsAlarm.class); criteria.add(Restrictions.in("id", Arrays.asList(ArrayUtils.toObject(alarmIds)))); List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.CLEAR); m_ackDao.processAck(ack); } }