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 |
|