Commit 7d74277f authored by Jan Koester's avatar Jan Koester
Browse files

bugfix

parent 3e6f42a2
Loading
Loading
Loading
Loading
+10 −5
Changes for tools/mkzabbix.py: 10 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ PARSER = r'''// snmpdd notification -> {trap: n, rows: {table: {row: {column: va
// (zabbix_trap_receiver.pl); OIDs numeric, enterprises.<PEN>... or SNMPDD-MIB names
var E = '1.3.6.1.4.1.' + '{$SNMPDD.PEN}'.replace(/\s/g, '');
var STATUS = {ok: '1', warning: '2', critical: '3', unknown: '4'};
var SKIP = 'snmpdd:skip';
var NAMES = %NAMES%;
var NOTIFS = %NOTIFS%;
function text(hex) {
@@ -142,7 +143,7 @@ def js(body):

def summary_script(n):
    return js('''
if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) throw 'not in this notification';
if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) return SKIP;
return %s(d.rows[1][0][%d]);''' % (n, 'status' if n == 2 else '', n))


@@ -164,7 +165,7 @@ if (d.trap === %d) {
  for (var i = 0; i < all.length; i++)
    if (rowName(%d, all[i]) === NAME && all[i][%d] !== undefined) return %s(all[i][%d]);
}%s
throw 'not in this notification';''' % (t, t, t, c, 'status' if kind else '', c, event))
return SKIP;''' % (t, t, t, c, 'status' if kind else '', c, event))


def discovery_script(t):
@@ -172,7 +173,7 @@ def discovery_script(t):
    if t == 8:
        extra = ", '{#DISK}': r[2], '{#ID}': r[3], '{#ATTR}': r[4] || ''"
    return js('''
if (d.trap !== %d) throw 'not a report of this table';
if (d.trap !== %d) return SKIP;
var out = [], all = rows(d, %d);
for (var i = 0; i < all.length; i++) {
  var r = all[i];
@@ -183,13 +184,17 @@ return JSON.stringify(out);''' % (t, t, t, extra))


EVENT_SCRIPT = js('''
if (d.trap !== 11 && d.trap !== 13) throw 'not a SMART event';
if (d.trap !== 11 && d.trap !== 13) return SKIP;
var ev = (d.rows[7] || {})[0] || {};
return (d.trap === 13 ? 'self-test failed: ' : 'SMART warning: ') + (ev[2] || '?') + (ev[5] ? ' - ' + ev[5] : '');''')


# A JavaScript step can't discard (Zabbix allows no "custom on fail" for it):
# the script returns SKIP for a notification that isn't about its item, the
# validation step after it discards that.
def preprocessing(script):
    return [{'type': 'JAVASCRIPT', 'parameters': [script], 'error_handler': 'DISCARD_VALUE'}]
    return [{'type': 'JAVASCRIPT', 'parameters': [script]},
            {'type': 'NOT_MATCHES_REGEX', 'parameters': ['^snmpdd:skip$'], 'error_handler': 'DISCARD_VALUE'}]


def dependent(name, key, script, value_type='UNSIGNED', units=None, valuemap=None, tags=(), history='90d',
+290 −58

File changed.

Preview size limit exceeded, changes collapsed.