Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / plugins / servicename.py @ a2fa6a5b

History | View | Annotate | Download (2.01 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
################################################################################
4
#
5
# Copyright (C) 2007-2012 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 le nom du service
23
à l'origine de l'événement corrélé.
24
"""
25
import tw.forms as twf
26
from pylons.i18n import lazy_ugettext as l_
27

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

    
31
class PluginServicename(VigiboardRequestPlugin):
32
    """
33
    Affiche le nom du service à l'origine de l'événement corrélé.
34
    Si l'événement corrélé porte directement sur un hôte,
35
    alors le nom de service vaut None.
36
    """
37
    def get_search_fields(self):
38
        return [
39
            twf.TextField(
40
                'service',
41
                label_text=l_('Service'),
42
                validator=twf.validators.String(if_missing=None),
43
            )
44
        ]
45

    
46
    def handle_search_fields(self, query, search, state, subqueries):
47
        if state != ITEMS:
48
            return
49

    
50
        if search.get('service'):
51
            service = sql_escape_like(search['service'])
52
            query.add_filter(query.items.c.servicename.ilike(service))
53

    
54
    def get_data(self, event):
55
        return {
56
            'servicename': event.servicename,
57
        }