Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / plugins / hls.py @ df25ac35

History | View | Annotate | Download (1.85 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 vigiboard.controllers.plugins import VigiboardRequestPlugin
9
from vigilo.models.session import DBSession
10
from vigilo.models.tables import HighLevelService, CorrEvent, Event, SupItem
11

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

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

    
29
        if not supitem:
30
            return []
31

    
32
        services = supitem.impacted_hls(
33
            HighLevelService.servicename
34
        ).distinct().order_by(
35
            HighLevelService.servicename.asc()
36
        ).all()
37

    
38
        return {'services': [service.servicename for service in services]}
39

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