Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / plugins / output.py @ 25892058

History | View | Annotate | Download (1.92 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
################################################################################
4
#
5
# Copyright (C) 2007-2013 CS-SI
6
#
7
# This program is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License version 2 as
9
# published by the Free Software Foundation.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
################################################################################
20

    
21
"""
22
Un plugin pour VigiBoard qui ajoute une colonne avec la sortie
23
de la commande de test exécutée par Nagios sur cet hôte/service.
24
"""
25
import tw.forms as twf
26
from pylons.i18n import lazy_ugettext as l_
27

    
28
from vigilo.models.tables import Event
29
from vigilo.models.functions import sql_escape_like
30
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS
31

    
32
class PluginOutput(VigiboardRequestPlugin):
33
    """Ajoute une colonne avec le message de Nagios."""
34
    def get_search_fields(self):
35
        return [
36
            twf.TextField(
37
                'output',
38
                label_text=l_('Output'),
39
                validator=twf.validators.String(if_missing=None),
40
            )
41
        ]
42

    
43
    def handle_search_fields(self, query, search, state, subqueries):
44
        if state != ITEMS:
45
            return
46

    
47
        if search.get('output'):
48
            output = sql_escape_like(search['output'])
49
            query.add_filter(Event.message.ilike(output))
50

    
51
    def get_data(self, event):
52
        return {
53
            'output': event[0].cause.message,
54
        }