Fixed
Details
Assignee
Seth LegerSeth LegerReporter
Cyrille BolluCyrille BolluComponents
Affects versions
Priority
Minor
Details
Details
Assignee
Seth Leger
Seth LegerReporter
Cyrille Bollu
Cyrille BolluComponents
Affects versions
Priority
PagerDuty
PagerDuty
PagerDuty
Created June 15, 2012 at 11:12 AM
Updated January 27, 2017 at 4:20 PM
Resolved August 7, 2012 at 3:59 PM
Hi guys,
According to http://www.opennms.org/wiki/Configuring_notifications:
When an event is received, a few evaluations are performed:
Are notifications turned on (the "status" attribute on the "notifd-configuration" element in notifd-configuration.xml)? If not, the event is discarded and a notification is not performed.
Does the UEI in the event match a UEI configured in an enabled notification and does the rule in the notification match the event (see Rule Matching below)? If not, the event is discarded and notification is not performed. Note: the special UEI string "MATCH-ANY-UEI" can be used to match all event UEIs (the rule still needs to match, as well).
If the notification has a <varbind> configured with a name and value, it is used for a case sensitive match against the beginning an event parameter of the same name.
If the above evaluations pass, one or more notifications are sent. If the "match-all" attribute on the "notifd-configuration" element is set to "true", every matching notification will be executed by walking its destination path, otherwise only the first matching notification will be executed.
The fact that <varbind> matching is only done against the beginning of an event parameter is a limitation that could probably easily be overcome:
If I'm not mistaken, this match is done in file opennms\opennms-services\src\main\java\org\opennms\netmgt\config\NotifdConfigManager.java, method matchNotificationParameters.
There is the following test:
if (parmName.equals(notfName) && parmContent.startsWith(notfValue)) {
parmmatch = true;
}
As parmContent and nofValue are regular java Strings, this could easily be replaced by:
if (parmName.equals(notfName) && parmContent.matches(notfValue)) {
parmmatch = true;
}
What do you think?
Is this enough information for you to patch onms quickly, or would it be quicker if I provided you with a proper git-like patch?
BR,
Cyrille