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