Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / vigiboard_plugin / hls.py @ 4febadf0

History | View | Annotate | Download (1.94 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
"""
4
Un plugin pour VigiBoard qui ajoute une colonne avec les services de haut
5
niveau (L{HighLevelService}) impactés par un événement.
6
"""
7

    
8
from pylons.i18n import ugettext as _
9
from tg import url
10

    
11
from vigiboard.controllers.vigiboard_plugin import VigiboardRequestPlugin
12
from vigilo.models.configure import DBSession
13
from vigilo.models import HighLevelService, \
14
                            CorrEvent, Event, SupItem
15

    
16
class PluginHLS(VigiboardRequestPlugin):
17
    """
18
    Plugin qui permet de voir les services de haut niveau impactés par
19
    un événement.
20
    """
21
    def get_value(self, idcorrevent):
22
        """
23
        Renvoie le nom des services de haut niveau impactés par l'événement.
24

25
        @param idcorrevent: Identifiant de l'événement corrélé.
26
        @type idcorrevent: C{int}
27
        @return: Un dictionnaire dont la clé "services" contient une liste
28
            des noms des services de haut niveau impactés par l'événement
29
            corrélé dont l'identifiant est L{idcorrevent}.
30
        """
31
        supitem = self.get_correvent_supitem(idcorrevent)
32

    
33
        if not supitem:
34
            return []
35

    
36
        services = supitem.impacted_hls(
37
            HighLevelService.servicename
38
        ).distinct().order_by(
39
            HighLevelService.servicename.asc()
40
        ).all()
41

    
42
        return {'services': [service.servicename for service in services]}
43

    
44
    def get_correvent_supitem(self, idcorrevent):
45
        """
46
        Retourne le supitem ayant causé l'évènement 
47
        corrélé dont l'identifiant est passé en paramètre.
48
        """
49
        # On récupère l'item recherché dans la BDD
50
        supitem = DBSession.query(SupItem
51
            ).join(
52
                (Event, Event.idsupitem == SupItem.idsupitem),
53
                (CorrEvent, CorrEvent.idcause == Event.idevent),
54
            ).filter(CorrEvent.idcorrevent == idcorrevent).first()
55
        return supitem
56