vigiboard / vigiboard / tests / functional / utils.py @ 8ba2de75
History | View | Annotate | Download (5.74 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4:
|
3 |
# Copyright (C) 2006-2011 CS-SI
|
4 |
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
|
5 |
|
6 |
"""
|
7 |
Fonctions utilitaires réutilisables dans les différents tests.
|
8 |
"""
|
9 |
|
10 |
from nose.tools import assert_true, assert_equal |
11 |
from datetime import datetime |
12 |
import transaction |
13 |
|
14 |
from vigilo.models.session import DBSession |
15 |
from vigilo.models.tables import Event, CorrEvent, DataPermission, \ |
16 |
Permission, StateName, Host, SupItemGroup, \ |
17 |
LowLevelService, User, UserGroup, Permission |
18 |
from vigiboard.tests import TestController |
19 |
|
20 |
def populate_DB(): |
21 |
""" Peuple la base de données. """
|
22 |
|
23 |
# Création des 4 groupes de supitems :
|
24 |
# - 1 groupe racine 'root' ;
|
25 |
root = SupItemGroup(name=u'root', parent=None) |
26 |
DBSession.add(root) |
27 |
# - 1 groupe principal 'maingroup' ;
|
28 |
maingroup = SupItemGroup(name=u'maingroup', parent=root)
|
29 |
DBSession.add(maingroup) |
30 |
# - 2 sous-groupes 'group1' et 'group2', faisant tous
|
31 |
# les deux parties du groupe principal 'maingroup'.
|
32 |
group1 = SupItemGroup(name=u'group1', parent=maingroup)
|
33 |
DBSession.add(group1) |
34 |
group2 = SupItemGroup(name=u'group2', parent=maingroup)
|
35 |
DBSession.add(group2) |
36 |
DBSession.flush() |
37 |
|
38 |
# Création de 2 groupes d'utilisateurs (contenant chacun un utilisateur) :
|
39 |
vigiboard_perm = Permission.by_permission_name(u'vigiboard-access')
|
40 |
# - le premier avec des droits étendus
|
41 |
# (il a indirectement accès à tous les groupes de supitems) ;
|
42 |
usergroup = UserGroup(group_name=u'users_with_access')
|
43 |
usergroup.permissions.append(vigiboard_perm) |
44 |
DBSession.add(DataPermission( |
45 |
group = root, |
46 |
usergroup = usergroup, |
47 |
access = u'r',
|
48 |
)) |
49 |
user = User( |
50 |
user_name=u'access',
|
51 |
fullname=u'',
|
52 |
email=u'user.has@access',
|
53 |
) |
54 |
user.usergroups.append(usergroup) |
55 |
DBSession.add(user) |
56 |
|
57 |
# - le second avec des droits plus restreints
|
58 |
# (il n'a accès qu'au groupe de supitems 'group1').
|
59 |
usergroup = UserGroup(group_name=u'users_with_limited_access')
|
60 |
usergroup.permissions.append(vigiboard_perm) |
61 |
DBSession.add(DataPermission( |
62 |
group = group1, |
63 |
usergroup = usergroup, |
64 |
access = u'r',
|
65 |
)) |
66 |
user = User( |
67 |
user_name=u'limited_access',
|
68 |
fullname=u'',
|
69 |
email=u'user.has.limited@access',
|
70 |
) |
71 |
user.usergroups.append(usergroup) |
72 |
DBSession.add(user) |
73 |
DBSession.flush() |
74 |
|
75 |
# Création de 3 hôtes (1 par groupe de supitems).
|
76 |
host_template = { |
77 |
'checkhostcmd': u'halt', |
78 |
'snmpcommunity': u'public', |
79 |
'hosttpl': u'/dev/null', |
80 |
'address': u'192.168.1.1', |
81 |
'snmpport': 42, |
82 |
'weight': 42, |
83 |
} |
84 |
|
85 |
maingroup_host = Host(name=u'maingroup_host', **host_template)
|
86 |
DBSession.add(maingroup_host) |
87 |
group1_host = Host(name=u'group1_host', **host_template)
|
88 |
DBSession.add(group1_host) |
89 |
group2_host = Host(name=u'group2_host', **host_template)
|
90 |
DBSession.add(group2_host) |
91 |
|
92 |
# Affectation des hôtes aux groupes.
|
93 |
maingroup.supitems.append(maingroup_host) |
94 |
group1.supitems.append(group1_host) |
95 |
group2.supitems.append(group2_host) |
96 |
DBSession.flush() |
97 |
|
98 |
# Création de 3 services de bas niveau (1 par hôte).
|
99 |
service_template = { |
100 |
'command': u'halt', |
101 |
'weight': 42, |
102 |
} |
103 |
|
104 |
group1_service = LowLevelService( |
105 |
host = group1_host, |
106 |
servicename = u'group1_service',
|
107 |
**service_template |
108 |
) |
109 |
DBSession.add(group1_service) |
110 |
|
111 |
group2_service = LowLevelService( |
112 |
host = group2_host, |
113 |
servicename = u'group2_service',
|
114 |
**service_template |
115 |
) |
116 |
DBSession.add(group2_service) |
117 |
|
118 |
maingroup_service = LowLevelService( |
119 |
host = maingroup_host, |
120 |
servicename = u'maingroup_service',
|
121 |
**service_template |
122 |
) |
123 |
DBSession.add(maingroup_service) |
124 |
DBSession.flush() |
125 |
|
126 |
# Ajout de 6 événements (1 par supitem)
|
127 |
event_template = { |
128 |
'message': u'foo', |
129 |
'current_state': StateName.statename_to_value(u'WARNING'), |
130 |
'timestamp': datetime.now(),
|
131 |
} |
132 |
|
133 |
event1 = Event(supitem=maingroup_host, **event_template) |
134 |
DBSession.add(event1) |
135 |
event2 = Event(supitem=maingroup_service, **event_template) |
136 |
DBSession.add(event2) |
137 |
event3 = Event(supitem=group1_host, **event_template) |
138 |
DBSession.add(event3) |
139 |
event4 = Event(supitem=group1_service, **event_template) |
140 |
DBSession.add(event4) |
141 |
event5 = Event(supitem=group2_host, **event_template) |
142 |
DBSession.add(event5) |
143 |
event6 = Event(supitem=group2_service, **event_template) |
144 |
DBSession.add(event6) |
145 |
DBSession.flush() |
146 |
|
147 |
# Ajout de 5 événements corrélés (1 pour chaque évènement,
|
148 |
# sauf celui touchant le 'maingroup_service' qui sera rattaché
|
149 |
# à l'évènement corrélé causé par le 'maingroup_host').
|
150 |
aggregate_template = { |
151 |
'timestamp_active': datetime.now(),
|
152 |
'priority': 1, |
153 |
'ack': CorrEvent.ACK_NONE,
|
154 |
} |
155 |
|
156 |
aggregate1 = CorrEvent( |
157 |
idcause=event1.idevent, **aggregate_template) |
158 |
aggregate3 = CorrEvent( |
159 |
idcause=event3.idevent, **aggregate_template) |
160 |
aggregate4 = CorrEvent( |
161 |
idcause=event4.idevent, **aggregate_template) |
162 |
aggregate5 = CorrEvent( |
163 |
idcause=event5.idevent, **aggregate_template) |
164 |
aggregate6 = CorrEvent( |
165 |
idcause=event6.idevent, **aggregate_template) |
166 |
|
167 |
aggregate1.events.append(event1) |
168 |
aggregate1.events.append(event2) |
169 |
aggregate3.events.append(event3) |
170 |
aggregate4.events.append(event4) |
171 |
aggregate5.events.append(event5) |
172 |
aggregate6.events.append(event6) |
173 |
DBSession.add(aggregate1) |
174 |
DBSession.add(aggregate3) |
175 |
DBSession.add(aggregate4) |
176 |
DBSession.add(aggregate5) |
177 |
DBSession.add(aggregate6) |
178 |
DBSession.flush() |
179 |
|
180 |
transaction.commit() |