Revision 3e6ee4db
Correction de quelques coquilles.
Corrections des tests unitaires de VigiBoard.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@1235 b22e2e97-25c9-44ff-b637-2e5ceca36478
development.ini | ||
---|---|---|
22 | 22 |
[app:main] |
23 | 23 |
use = egg:vigiboard |
24 | 24 |
|
25 |
; Nombre d'évènements par page.
|
|
25 |
; Nombre d'événements par page.
|
|
26 | 26 |
vigiboard_items_per_page = 15 |
27 | 27 |
|
28 | 28 |
; URL vers laquelle le logo de Vigilo redirige. |
29 | 29 |
vigiboard_links.logo = / |
30 | 30 |
|
31 |
; Ordre de tri pour la priorité des évènements.
|
|
31 |
; Ordre de tri pour la priorité des événements.
|
|
32 | 32 |
; - Utiliser "asc" si la priorité est inversement proportionnelle à sa |
33 | 33 |
; valeur (ie: plus le nombre est bas, plus la priorité est élevée). |
34 | 34 |
; - Utiliser "desc" si la priorité est proportionnelle à sa valeur |
... | ... | |
123 | 123 |
handlers = console |
124 | 124 |
|
125 | 125 |
[logger_vigiboard] |
126 |
level = DEBUG
|
|
126 |
level = INFO
|
|
127 | 127 |
handlers = vigiboard_log |
128 | 128 |
qualname = vigiboard |
129 | 129 |
|
... | ... | |
149 | 149 |
[handler_sql_log] |
150 | 150 |
class = FileHandler |
151 | 151 |
args = ('log/sql.log','a') |
152 |
level = DEBUG
|
|
152 |
level = INFO
|
|
153 | 153 |
formatter = generic |
154 | 154 |
|
155 | 155 |
[handler_root_log] |
156 | 156 |
class = FileHandler |
157 | 157 |
args = ('log/root.log','a') |
158 |
level = DEBUG
|
|
158 |
level = INFO
|
|
159 | 159 |
formatter = generic |
160 | 160 |
|
161 | 161 |
[handler_vigiboard_log] |
162 | 162 |
class = FileHandler |
163 | 163 |
args = ('log/vigiboard.log','a') |
164 |
level = DEBUG
|
|
164 |
level = INFO
|
|
165 | 165 |
formatter = generic |
166 | 166 |
|
167 | 167 |
[handler_auth_log] |
168 | 168 |
class = FileHandler |
169 | 169 |
args = ('log/auth.log','a') |
170 |
level = DEBUG
|
|
170 |
level = INFO
|
|
171 | 171 |
formatter = generic |
172 | 172 |
|
173 | 173 |
# If you create additional formatters, add them as a key to [formatters] |
production.ini | ||
---|---|---|
25 | 25 |
# Requis par Vigiboard |
26 | 26 |
appname = vigiboard |
27 | 27 |
|
28 |
; Ordre de tri pour la priorité des évènements.
|
|
28 |
; Ordre de tri pour la priorité des événements.
|
|
29 | 29 |
; - Utiliser "asc" si la priorité est inversement proportionnelle à sa |
30 | 30 |
; valeur (ie: plus le nombre est bas, plus la priorité est élevée). |
31 | 31 |
; - Utiliser "desc" si la priorité est proportionnelle à sa valeur |
vigiboard/controllers/root.py | ||
---|---|---|
4 | 4 |
|
5 | 5 |
from tg import expose, validate, require, flash, \ |
6 | 6 |
tmpl_context, request, config, session, redirect, url |
7 |
from tw.forms import validators
|
|
7 |
from tw.forms import validators |
|
8 | 8 |
from pylons.i18n import ugettext as _ |
9 | 9 |
from pylons.controllers.util import abort |
10 | 10 |
from sqlalchemy import not_, and_, asc |
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
43 | 43 |
] |
44 | 44 |
|
45 | 45 |
self.join = [ |
46 |
(Event, EventsAggregate.idcause == Event.idevent),
|
|
47 |
(Host, Event.hostname == Host.name),
|
|
48 |
(ServiceLowLevel, Event.servicename == ServiceLowLevel.name),
|
|
49 |
(HostGroup, Host.name == HostGroup.hostname),
|
|
50 |
(ServiceGroup, ServiceLowLevel.name == ServiceGroup.servicename),
|
|
51 |
(StateName, StateName.idstatename == Event.current_state),
|
|
52 |
]
|
|
46 |
(Event, EventsAggregate.idcause == Event.idevent), |
|
47 |
(Host, Event.hostname == Host.name), |
|
48 |
(ServiceLowLevel, Event.servicename == ServiceLowLevel.name), |
|
49 |
(HostGroup, Host.name == HostGroup.hostname), |
|
50 |
(ServiceGroup, ServiceLowLevel.name == ServiceGroup.servicename), |
|
51 |
(StateName, StateName.idstatename == Event.current_state), |
|
52 |
] |
|
53 | 53 |
|
54 |
self.outerjoin = [] |
|
54 |
self.outerjoin = [ |
|
55 |
] |
|
55 | 56 |
|
56 | 57 |
self.filter = [ |
57 | 58 |
HostGroup.idgroup.in_(self.user_groups), |
vigiboard/tests/functional/test_userutils.py | ||
---|---|---|
12 | 12 |
|
13 | 13 |
class TestUserUtils(TestController): |
14 | 14 |
"""Test retrieval of groups of hosts/services.""" |
15 |
|
|
16 | 15 |
def test_groups_inheritance(self): |
17 | 16 |
""" |
18 | 17 |
S'assure que les groupes sont correctement hérités. |
... | ... | |
46 | 45 |
grp = User.by_user_name(username).groups |
47 | 46 |
|
48 | 47 |
# Permet de rafraîchir les instances. |
49 |
DBSession.add(hostmanagers) |
|
50 |
DBSession.add(hosteditors) |
|
48 |
hostmanagers = DBSession.query(Group).filter( |
|
49 |
Group.name==u'hostmanagers').one() |
|
50 |
hosteditors = DBSession.query(Group).filter( |
|
51 |
Group.name==u'hosteditors').one() |
|
51 | 52 |
|
52 | 53 |
# On vérifie que la liste est correcte : le manager doit avoir accès |
53 | 54 |
# aux groupes 'hostmanagers' & 'hosteditors' (dont il hérite). |
vigiboard/tests/functional/test_vigiboardrequest.py | ||
---|---|---|
11 | 11 |
|
12 | 12 |
from vigiboard.model import DBSession, \ |
13 | 13 |
Event, EventHistory, EventsAggregate, \ |
14 |
Permission, User, \ |
|
14 |
Permission, User, StateName, \
|
|
15 | 15 |
Group, Host, HostGroup, ServiceLowLevel, ServiceGroup |
16 | 16 |
from vigiboard.tests import TestController |
17 | 17 |
from vigiboard.controllers.vigiboardrequest import VigiboardRequest |
... | ... | |
22 | 22 |
"""Test de la classe Vigiboard Request""" |
23 | 23 |
|
24 | 24 |
def setUp(self): |
25 |
TestController.setUp(self) |
|
25 |
super(TestVigiboardRequest, self).setUp() |
|
26 |
|
|
27 |
# Les noms d'états. |
|
28 |
DBSession.add(StateName(statename=u'OK', order=0)) |
|
29 |
DBSession.add(StateName(statename=u'WARNING', order=2)) |
|
30 |
DBSession.flush() |
|
31 |
transaction.commit() |
|
26 | 32 |
|
27 | 33 |
# On peuple la base de données. |
28 | 34 |
|
29 | 35 |
# Les groupes et leurs dépendances |
30 |
hosteditors = Group(name=u'hosteditors')
|
|
31 |
DBSession.add(hosteditors)
|
|
36 |
self.editorsgroup = Group(name=u'editorsgroup')
|
|
37 |
DBSession.add(self.editorsgroup)
|
|
32 | 38 |
DBSession.flush() |
33 | 39 |
|
34 |
hostmanagers = Group(name=u'hostmanagers', parent=hosteditors)
|
|
35 |
DBSession.add(hostmanagers)
|
|
40 |
self.managersgroup = Group(name=u'managersgroup', parent=self.editorsgroup)
|
|
41 |
DBSession.add(self.managersgroup)
|
|
36 | 42 |
DBSession.flush() |
37 | 43 |
|
38 | 44 |
manage_perm = Permission.by_permission_name(u'manage') |
39 | 45 |
edit_perm = Permission.by_permission_name(u'edit') |
40 | 46 |
|
41 |
hostmanagers.permissions.append(manage_perm)
|
|
42 |
hosteditors.permissions.append(edit_perm)
|
|
47 |
self.managersgroup.permissions.append(manage_perm)
|
|
48 |
self.editorsgroup.permissions.append(edit_perm)
|
|
43 | 49 |
DBSession.flush() |
44 | 50 |
|
45 |
# Les dépendances des évènements
|
|
51 |
# Les dépendances des événements
|
|
46 | 52 |
host_template = { |
47 | 53 |
'checkhostcmd': u'halt', |
48 | 54 |
'snmpcommunity': u'public', |
... | ... | |
53 | 59 |
} |
54 | 60 |
|
55 | 61 |
service_template = { |
56 |
'servicetype': u'foo', |
|
57 | 62 |
'command': u'halt', |
58 | 63 |
'op_dep': u'+', |
59 | 64 |
} |
60 | 65 |
|
61 |
DBSession.add(Host(name=u'monhost', **host_template))
|
|
62 |
DBSession.add(ServiceLowLevel(name=u'monservice', **service_template))
|
|
63 |
DBSession.add(Host(name=u'monhostuser', **host_template))
|
|
64 |
DBSession.add(ServiceLowLevel(name=u'monserviceuser', **service_template))
|
|
66 |
DBSession.add(Host(name=u'managerhost', **host_template))
|
|
67 |
DBSession.add(ServiceLowLevel(name=u'managerservice', **service_template))
|
|
68 |
DBSession.add(Host(name=u'editorhost', **host_template))
|
|
69 |
DBSession.add(ServiceLowLevel(name=u'editorservice', **service_template))
|
|
65 | 70 |
DBSession.flush() |
66 | 71 |
|
67 | 72 |
# Table de jointure entre les hôtes/services et les groupes |
68 |
DBSession.add(HostGroup(hostname = u"monhost",
|
|
69 |
idgroup=hostmanagers.idgroup))
|
|
70 |
DBSession.add(HostGroup(hostname = u"monhostuser",
|
|
71 |
idgroup=hosteditors.idgroup))
|
|
72 |
DBSession.add(ServiceGroup(servicename = u"monservice",
|
|
73 |
idgroup=hostmanagers.idgroup))
|
|
74 |
DBSession.add(ServiceGroup(servicename = u"monserviceuser",
|
|
75 |
idgroup=hosteditors.idgroup))
|
|
73 |
DBSession.add(HostGroup(hostname = u"managerhost",
|
|
74 |
idgroup=self.managersgroup.idgroup))
|
|
75 |
DBSession.add(HostGroup(hostname = u"editorhost",
|
|
76 |
idgroup=self.editorsgroup.idgroup))
|
|
77 |
DBSession.add(ServiceGroup(servicename = u"managerservice",
|
|
78 |
idgroup=self.managersgroup.idgroup))
|
|
79 |
DBSession.add(ServiceGroup(servicename = u"editorservice",
|
|
80 |
idgroup=self.editorsgroup.idgroup))
|
|
76 | 81 |
DBSession.flush() |
77 | 82 |
|
78 |
# Les évènements eux-mêmes
|
|
83 |
# Les événements eux-mêmes
|
|
79 | 84 |
event_template = { |
80 | 85 |
'message': u'foo', |
81 |
'current_state': u'WARNING',
|
|
86 |
'current_state': StateName.statename_to_value(u'WARNING'),
|
|
82 | 87 |
} |
83 | 88 |
|
84 |
event1 = Event(idevent=41, hostname=u'monhost',
|
|
85 |
servicename=u'monservice', **event_template)
|
|
86 |
event2 = Event(idevent=42, hostname=u'monhostuser',
|
|
87 |
servicename=u'monservice', **event_template)
|
|
88 |
event3 = Event(idevent=43, hostname=u'monhost',
|
|
89 |
servicename=u'monserviceuser', **event_template)
|
|
90 |
event4 = Event(idevent=44, hostname=u'monhostuser',
|
|
91 |
servicename=u'monserviceuser', **event_template)
|
|
89 |
event1 = Event(hostname=u'managerhost',
|
|
90 |
servicename=u'managerservice', **event_template)
|
|
91 |
event2 = Event(hostname=u'editorhost',
|
|
92 |
servicename=u'managerservice', **event_template)
|
|
93 |
event3 = Event(hostname=u'managerhost',
|
|
94 |
servicename=u'editorservice', **event_template)
|
|
95 |
event4 = Event(hostname=u'editorhost',
|
|
96 |
servicename=u'editorservice', **event_template)
|
|
92 | 97 |
|
93 | 98 |
DBSession.add(event1) |
94 | 99 |
DBSession.add(event2) |
... | ... | |
116 | 121 |
idevent=event4.idevent, timestamp=datetime.now())) |
117 | 122 |
DBSession.flush() |
118 | 123 |
|
119 |
# Les évènements corrélés
|
|
124 |
# Les événements corrélés
|
|
120 | 125 |
aggregate_template = { |
121 | 126 |
'timestamp_active': datetime.now(), |
122 | 127 |
'priority': 1, |
... | ... | |
134 | 139 |
DBSession.add(self.aggregate1) |
135 | 140 |
DBSession.add(self.aggregate2) |
136 | 141 |
DBSession.flush() |
142 |
|
|
143 |
for e in DBSession.query(Event).all(): |
|
144 |
print "Event", e.idevent, e.hostname, e.servicename, e.current_state |
|
145 |
for ea in DBSession.query(EventsAggregate).all(): |
|
146 |
print "EAggr", ea.idcause, ea.status |
|
147 |
for g in DBSession.query(Group).all(): |
|
148 |
print "Group", g.idgroup, g.name, repr(g.idparent) |
|
149 |
for hg in DBSession.query(HostGroup).all(): |
|
150 |
print "HGrup", hg.idgroup, hg.hostname |
|
151 |
for sg in DBSession.query(ServiceGroup).all(): |
|
152 |
print "SGrup", sg.idgroup, sg.servicename |
|
137 | 153 |
transaction.commit() |
138 | 154 |
|
139 | 155 |
def tearDown(self): |
... | ... | |
158 | 174 |
vigi_req = VigiboardRequest(User.by_user_name(u'editor')) |
159 | 175 |
|
160 | 176 |
# On effectue les tests suivants : |
161 |
# le nombre de lignes (historique et évènements) doivent
|
|
177 |
# le nombre de lignes (historique et événements) doivent
|
|
162 | 178 |
# correspondre (vérification des droits imposés par les groupes) |
163 | 179 |
# le plugin fonctionne correctement |
164 | 180 |
|
Also available in: Unified diff