Based on Tarus mentioning a few weeks back that he has a need to be able
to have one notification that matches large number of UEIs, I've started
some work on notification configuration in this direction.  I have the
changes completely done in the daemon, I just need to add the necessary
support to the webUI for editing notifications.  Before I finish this up
and commit it, I want a sanity check to make sure that this is a good,
committable solution.

_Where we are today_

Right now, each configured notification can match exactly one UEI, like
this:

        <uei>uei.opennms.org/internal/discovery/newSuspect</uei>

Actually, that's a bit of a lie: the UEI can be "MATCH-ANY-UEI" and it
will match all UEIs (you can also do regexps...).  But, no matter what,
the <uei> tag is still required, and there can be only one.

Furthermore, each notification today must have exactly one filtering
rule, like this:

        <rule>IPADDR != '0.0.0.0'</rule>

This is the case even when the filtering rule makes no sense for a
certain event and could never possibly match.  An example is our
newSuspect event which has an interface, but since this is a *new*
suspect, there is no information in the database, so the filter cannot
possibly match.  There are some hacks to make this work, I don't like
them one bit, and I would like to see them go away. :-)

_Where I want to go_

1. Allow multiple UEIs to be specified for a single notification.
2. Make the filtering rule optional and simplify notification matching
in the daemon.
3. Eliminate special cases in the UEI configuration (MATCH-ANY-UEI, "~"
prefix regex matching) and replace with "real" object features to
represent them, i.e.: XML elements.

#1 is easy.  Backward compatible.  If you want to specify multiple UEIs,
instead of using <uei>uei</uei>, you use
<ueis><uei>uei1</uei><uei>uei2</uei></ueis>.  This will be invisible in
the GUI--you just select the UEIs you want.

#2 is easy.  One change will be required: events that don't have any
data that can be filtered on will need to have their <rule> removed. 
E.g.: newSuspect events.  For the shipped default notification configs,
we'll remove the useless "ipaddr != '0.0.0.0'" rule, and make the webUI
not have a rule by default.

#3 is easy.  Changes will be required if users are using the
special-case UEI features.  In this case, they will either have to
switch to a new XML element like <match-any-uei/> or tag their UEI
elements as regexp matches, e.g.: <uei
matchType="regexp">uei.opennms.org/.*</uei>.

I have the daemon components of #1 and #2 done, and the daemon component
of #3 will be easy.  The webUI work shouldn't take too much effort, as
well, just some focused time.


        What do you think?
        - djg

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/index.php/Mailing_List_FAQ

opennms-devel mailing list

To *unsubscribe* or change your subscription options, see the bottom of this 
page:
https://lists.sourceforge.net/lists/listinfo/opennms-devel

Reply via email to