Revision 24d74687
Mise à jour de VigiBoard et de ses tests unitaires suite aux changements
dans le modèle (r2606).
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@2607 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/controllers/root.py | ||
---|---|---|
20 | 20 |
|
21 | 21 |
from vigilo.models.session import DBSession |
22 | 22 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, SupItem, \ |
23 |
HostGroup, ServiceGroup, StateName, User
|
|
23 |
SupItemGroup, StateName, User
|
|
24 | 24 |
from vigilo.models.functions import sql_escape_like |
25 | 25 |
from vigilo.models.tables.secondary_tables import EVENTSAGGREGATE_TABLE |
26 | 26 |
|
... | ... | |
55 | 55 |
}, error_handler=process_form_errors) |
56 | 56 |
@expose('events_table.html') |
57 | 57 |
@require(Any(not_anonymous(), msg=l_("You need to be authenticated"))) |
58 |
def default(self, page=1, hostgroup=None, servicegroup=None,
|
|
58 |
def default(self, page=1, supitemgroup=None,
|
|
59 | 59 |
host=None, service=None, output=None, trouble_ticket=None, |
60 | 60 |
from_date=None, to_date=None, *argv, **krgv): |
61 | 61 |
""" |
... | ... | |
101 | 101 |
'tt': '', |
102 | 102 |
'from_date': '', |
103 | 103 |
'to_date': '', |
104 |
'hostgroup': '', |
|
105 |
'servicegroup': '', |
|
104 |
'supitemgroup': '', |
|
106 | 105 |
} |
107 | 106 |
|
108 | 107 |
# Application des filtres si nécessaire |
109 |
if hostgroup: |
|
110 |
search['hostgroup'] = hostgroup |
|
111 |
hostgroup = sql_escape_like(hostgroup) |
|
112 |
aggregates.add_join((HostGroup, HostGroup.idgroup == \ |
|
113 |
aggregates.items.c.idhostgroup)) |
|
114 |
aggregates.add_filter(HostGroup.name.ilike('%%%s%%' % hostgroup)) |
|
115 |
|
|
116 |
if servicegroup: |
|
117 |
search['servicegroup'] = servicegroup |
|
118 |
servicegroup = sql_escape_like(servicegroup) |
|
119 |
aggregates.add_join((ServiceGroup, ServiceGroup.idgroup == \ |
|
120 |
aggregates.items.c.idservicegroup)) |
|
108 |
if supitemgroup: |
|
109 |
search['supitemgroup'] = supitemgroup |
|
110 |
supitemgroup = sql_escape_like(supitemgroup) |
|
111 |
aggregates.add_join((SupItemGroup, SupItemGroup.idgroup == \ |
|
112 |
aggregates.items.c.idsupitemgroup)) |
|
121 | 113 |
aggregates.add_filter( |
122 |
ServiceGroup.name.ilike('%%%s%%' % servicegroup))
|
|
114 |
SupItemGroup.name.ilike('%%%s%%' % supitemgroup))
|
|
123 | 115 |
|
124 | 116 |
if host: |
125 | 117 |
search['host'] = host |
... | ... | |
279 | 271 |
'tt': '', |
280 | 272 |
'from_date': '', |
281 | 273 |
'to_date': '', |
282 |
'hostgroup': '', |
|
283 |
'servicegroup': '', |
|
274 |
'supitemgroup': '', |
|
284 | 275 |
}, |
285 | 276 |
refresh_times=config['vigiboard_refresh_times'], |
286 | 277 |
) |
... | ... | |
360 | 351 |
'tt': '', |
361 | 352 |
'from_date': '', |
362 | 353 |
'to_date': '', |
363 |
'hostgroup': '', |
|
364 |
'servicegroup': '', |
|
354 |
'supitemgroup': '', |
|
365 | 355 |
}, |
366 | 356 |
refresh_times=config['vigiboard_refresh_times'], |
367 | 357 |
) |
... | ... | |
441 | 431 |
'tt': '', |
442 | 432 |
'from_date': '', |
443 | 433 |
'to_date': '', |
444 |
'hostgroup': '', |
|
445 |
'servicegroup': '', |
|
434 |
'supitemgroup': '', |
|
446 | 435 |
}, |
447 | 436 |
refresh_times=config['vigiboard_refresh_times'], |
448 | 437 |
) |
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
14 | 14 |
from vigilo.models.session import DBSession |
15 | 15 |
from vigilo.models.tables import Event, CorrEvent, EventHistory, \ |
16 | 16 |
Host, LowLevelService, StateName |
17 |
from vigilo.models.tables.secondary_tables import HOST_GROUP_TABLE, \ |
|
18 |
SERVICE_GROUP_TABLE |
|
17 |
from vigilo.models.tables.secondary_tables import SUPITEM_GROUP_TABLE |
|
19 | 18 |
from vigiboard.widgets.edit_event import create_edit_event_form, EditEventForm |
20 | 19 |
from vigiboard.widgets.search_form import create_search_form, SearchForm |
21 | 20 |
from vigiboard.controllers.plugins import VigiboardRequestPlugin |
... | ... | |
56 | 55 |
lang = lang.replace('_', '-') |
57 | 56 |
lang = lang.split('-')[0] |
58 | 57 |
|
59 |
self.user_groups = user.groups |
|
58 |
self.user_groups = user.supitemgroups
|
|
60 | 59 |
self.lang = lang |
61 | 60 |
self.generaterq = False |
62 |
|
|
61 |
|
|
62 |
# Sélectionne tous les IDs des services auxquels |
|
63 |
# l'utilisateur a accès. |
|
63 | 64 |
lls_query = DBSession.query( |
64 | 65 |
LowLevelService.idservice.label("idsupitem"), |
65 | 66 |
LowLevelService.servicename.label("servicename"), |
66 | 67 |
Host.name.label("hostname"), |
67 |
SERVICE_GROUP_TABLE.c.idgroup.label("idservicegroup"), |
|
68 |
HOST_GROUP_TABLE.c.idgroup.label("idhostgroup"), |
|
68 |
SUPITEM_GROUP_TABLE.c.idgroup.label("idsupitemgroup"), |
|
69 | 69 |
).join( |
70 |
(Host, Host.idhost == LowLevelService.idhost), |
|
70 |
(Host, Host.idhost == LowLevelService.idhost),
|
|
71 | 71 |
).outerjoin( |
72 |
(HOST_GROUP_TABLE, |
|
73 |
HOST_GROUP_TABLE.c.idhost == LowLevelService.idhost), |
|
74 |
(SERVICE_GROUP_TABLE, |
|
75 |
SERVICE_GROUP_TABLE.c.idservice == LowLevelService.idservice), |
|
76 |
).filter( |
|
77 |
or_( |
|
78 |
HOST_GROUP_TABLE.c.idgroup.in_(self.user_groups), |
|
79 |
SERVICE_GROUP_TABLE.c.idgroup.in_(self.user_groups), |
|
72 |
(SUPITEM_GROUP_TABLE, |
|
73 |
or_( |
|
74 |
SUPITEM_GROUP_TABLE.c.idsupitem == \ |
|
75 |
LowLevelService.idhost, |
|
76 |
SUPITEM_GROUP_TABLE.c.idsupitem == \ |
|
77 |
LowLevelService.idservice, |
|
78 |
) |
|
80 | 79 |
), |
80 |
).filter( |
|
81 |
SUPITEM_GROUP_TABLE.c.idgroup.in_(self.user_groups) |
|
81 | 82 |
) |
82 |
|
|
83 |
|
|
84 |
# Sélectionne tous les IDs des hôtes auxquels |
|
85 |
# l'utilisateur a accès. |
|
83 | 86 |
host_query = DBSession.query( |
84 | 87 |
Host.idhost.label("idsupitem"), |
85 | 88 |
expr_null().label("servicename"), |
86 | 89 |
Host.name.label("hostname"), |
87 |
expr_null().label("idservicegroup"), |
|
88 |
HOST_GROUP_TABLE.c.idgroup.label('idhostgroup'), |
|
89 |
).join((HOST_GROUP_TABLE, HOST_GROUP_TABLE.c.idhost == Host.idhost) |
|
90 |
).filter(HOST_GROUP_TABLE.c.idgroup.label('idhostgroup' |
|
91 |
).in_(self.user_groups), |
|
90 |
SUPITEM_GROUP_TABLE.c.idgroup.label('idsupitemgroup'), |
|
91 |
).join( |
|
92 |
(SUPITEM_GROUP_TABLE, SUPITEM_GROUP_TABLE.c.idsupitem == \ |
|
93 |
Host.idhost), |
|
94 |
).filter( |
|
95 |
SUPITEM_GROUP_TABLE.c.idgroup.in_(self.user_groups), |
|
92 | 96 |
) |
93 | 97 |
|
94 |
# Object Selectable renvoyant des informations sur un supitem
|
|
98 |
# Objet Selectable renvoyant des informations sur un SupItem
|
|
95 | 99 |
# concerné par une alerte, avec prise en compte des droits d'accès. |
96 | 100 |
# On est obligés d'utiliser sqlalchemy.sql.expression.union |
97 | 101 |
# pour indiquer à SQLAlchemy de NE PAS regrouper les tables |
vigiboard/tests/functional/plugins/test_plugin_hls.py | ||
---|---|---|
6 | 6 |
from nose.tools import assert_equal |
7 | 7 |
|
8 | 8 |
from vigilo.models.session import DBSession |
9 |
from vigilo.models.tables import Permission, StateName, \ |
|
10 |
HostGroup, Host, HighLevelService, \
|
|
9 |
from vigilo.models.tables import Permission, StateName, GroupHierarchy, \
|
|
10 |
SupItemGroup, Host, HighLevelService, \
|
|
11 | 11 |
Event, CorrEvent, ImpactedPath, ImpactedHLS |
12 | 12 |
from vigiboard.tests import TestController |
13 | 13 |
|
... | ... | |
15 | 15 |
""" Peuple la base de données. """ |
16 | 16 |
|
17 | 17 |
# On ajoute un groupe d'hôtes |
18 |
hostmanagers = HostGroup(name = u'managersgroup')
|
|
18 |
hostmanagers = SupItemGroup(name=u'managersgroup')
|
|
19 | 19 |
DBSession.add(hostmanagers) |
20 | 20 |
DBSession.flush() |
21 | 21 |
|
22 |
DBSession.add(GroupHierarchy( |
|
23 |
parent=hostmanagers, |
|
24 |
child=hostmanagers, |
|
25 |
hops=0, |
|
26 |
)) |
|
27 |
|
|
22 | 28 |
# On lui octroie les permissions |
23 | 29 |
manage_perm = Permission.by_permission_name(u'manage') |
24 | 30 |
hostmanagers.permissions.append(manage_perm) |
... | ... | |
37 | 43 |
DBSession.add(host) |
38 | 44 |
|
39 | 45 |
# On affecte cet hôte au groupe précédemment créé. |
40 |
hostmanagers.hosts.append(host)
|
|
46 |
hostmanagers.supitems.append(host)
|
|
41 | 47 |
DBSession.flush() |
42 | 48 |
|
43 | 49 |
# On ajoute un évènement causé par cet hôte. |
... | ... | |
236 | 242 |
extra_environ={'REMOTE_USER': 'manager'}) |
237 | 243 |
# On vérifie que le plugin retourne bien les 4 HLS impactés. |
238 | 244 |
assert_equal(resp.json, {"services": ['HLS12', 'HLS22']}) |
239 |
|
|
245 |
|
vigiboard/tests/functional/test_correvents_table.py | ||
---|---|---|
9 | 9 |
import transaction |
10 | 10 |
|
11 | 11 |
from vigilo.models.session import DBSession |
12 |
from vigilo.models.tables import Event, CorrEvent, \ |
|
13 |
Permission, StateName, \ |
|
14 |
Host, HostGroup, LowLevelService
|
|
12 |
from vigilo.models.tables import Event, CorrEvent, GroupHierarchy, \
|
|
13 |
Permission, StateName, Host, SupItemGroup, \
|
|
14 |
LowLevelService |
|
15 | 15 |
from vigiboard.tests import TestController |
16 | 16 |
|
17 | 17 |
def populate_DB(): |
18 | 18 |
""" Peuple la base de données. """ |
19 | 19 |
# On ajoute les groupes et leurs dépendances |
20 |
hosteditors = HostGroup(name=u'editorsgroup')
|
|
20 |
hosteditors = SupItemGroup(name=u'editorsgroup')
|
|
21 | 21 |
DBSession.add(hosteditors) |
22 |
hostmanagers = HostGroup(name=u'managersgroup', parent=hosteditors)
|
|
22 |
hostmanagers = SupItemGroup(name=u'managersgroup')
|
|
23 | 23 |
DBSession.add(hostmanagers) |
24 | 24 |
DBSession.flush() |
25 | 25 |
|
26 |
DBSession.add(GroupHierarchy( |
|
27 |
parent=hosteditors, |
|
28 |
child=hosteditors, |
|
29 |
hops=0, |
|
30 |
)) |
|
31 |
DBSession.add(GroupHierarchy( |
|
32 |
parent=hostmanagers, |
|
33 |
child=hostmanagers, |
|
34 |
hops=0, |
|
35 |
)) |
|
36 |
DBSession.add(GroupHierarchy( |
|
37 |
parent=hosteditors, |
|
38 |
child=hostmanagers, |
|
39 |
hops=1, |
|
40 |
)) |
|
41 |
DBSession.flush() |
|
42 |
|
|
26 | 43 |
manage_perm = Permission.by_permission_name(u'manage') |
27 | 44 |
edit_perm = Permission.by_permission_name(u'edit') |
28 | 45 |
|
... | ... | |
46 | 63 |
DBSession.add(editorhost) |
47 | 64 |
|
48 | 65 |
# Affectation des hôtes aux groupes. |
49 |
hosteditors.hosts.append(editorhost)
|
|
50 |
hostmanagers.hosts.append(managerhost)
|
|
66 |
hosteditors.supitems.append(editorhost)
|
|
67 |
hostmanagers.supitems.append(managerhost)
|
|
51 | 68 |
DBSession.flush() |
52 | 69 |
|
53 | 70 |
# Création des services techniques de test. |
vigiboard/tests/functional/test_details_plugin.py | ||
---|---|---|
9 | 9 |
|
10 | 10 |
from vigiboard.tests import TestController |
11 | 11 |
from vigilo.models.session import DBSession |
12 |
from vigilo.models.tables import ServiceGroup, HostGroup, \
|
|
12 |
from vigilo.models.tables import SupItemGroup, GroupHierarchy, \
|
|
13 | 13 |
Host, Permission, StateName, \ |
14 | 14 |
LowLevelService, Event, CorrEvent |
15 | 15 |
|
... | ... | |
27 | 27 |
""" |
28 | 28 |
timestamp = datetime.now() |
29 | 29 |
|
30 |
hostgroup = HostGroup( |
|
31 |
name=u'foo', |
|
32 |
) |
|
30 |
hostgroup = SupItemGroup(name=u'foo') |
|
33 | 31 |
DBSession.add(hostgroup) |
34 | 32 |
|
33 |
DBSession.add(GroupHierarchy( |
|
34 |
parent=hostgroup, |
|
35 |
child=hostgroup, |
|
36 |
hops=0, |
|
37 |
)) |
|
38 |
|
|
35 | 39 |
host = Host( |
36 | 40 |
name=u'bar', |
37 | 41 |
checkhostcmd=u'', |
... | ... | |
46 | 50 |
DBSession.add(host) |
47 | 51 |
DBSession.flush() |
48 | 52 |
|
49 |
hostgroup.hosts.append(host)
|
|
53 |
hostgroup.supitems.append(host)
|
|
50 | 54 |
DBSession.flush() |
51 | 55 |
|
52 |
servicegroup = ServiceGroup( |
|
53 |
name=u'foo', |
|
54 |
) |
|
56 |
servicegroup = SupItemGroup(name=u'bar') |
|
55 | 57 |
DBSession.add(servicegroup) |
56 | 58 |
|
59 |
DBSession.add(GroupHierarchy( |
|
60 |
parent=servicegroup, |
|
61 |
child=servicegroup, |
|
62 |
hops=0, |
|
63 |
)) |
|
64 |
|
|
57 | 65 |
service = LowLevelService( |
58 | 66 |
host=host, |
59 | 67 |
command=u'', |
... | ... | |
64 | 72 |
DBSession.add(service) |
65 | 73 |
DBSession.flush() |
66 | 74 |
|
67 |
servicegroup.services.append(service)
|
|
75 |
servicegroup.supitems.append(service)
|
|
68 | 76 |
DBSession.flush() |
69 | 77 |
|
70 | 78 |
event = Event( |
... | ... | |
101 | 109 |
"""Dialogue des détails avec un LLS et les bons droits.""" |
102 | 110 |
hostgroup, idcorrevent, idcause = insert_deps(True) |
103 | 111 |
manage = Permission.by_permission_name(u'manage') |
104 |
manage.hostgroups.append(hostgroup)
|
|
112 |
manage.supitemgroups.append(hostgroup)
|
|
105 | 113 |
DBSession.flush() |
106 | 114 |
transaction.commit() |
107 | 115 |
|
... | ... | |
130 | 138 |
"""Dialogue des détails avec un hôte et les bons droits.""" |
131 | 139 |
hostgroup, idcorrevent, idcause = insert_deps(False) |
132 | 140 |
manage = Permission.by_permission_name(u'manage') |
133 |
manage.hostgroups.append(hostgroup)
|
|
141 |
manage.supitemgroups.append(hostgroup)
|
|
134 | 142 |
DBSession.flush() |
135 | 143 |
transaction.commit() |
136 | 144 |
|
vigiboard/tests/functional/test_history_table.py | ||
---|---|---|
11 | 11 |
|
12 | 12 |
from vigilo.models.session import DBSession |
13 | 13 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
14 |
Permission, StateName, \ |
|
15 |
Host, HostGroup, LowLevelService, ServiceGroup
|
|
14 |
Permission, StateName, GroupHierarchy, \
|
|
15 |
Host, SupItemGroup, LowLevelService
|
|
16 | 16 |
from vigiboard.tests import TestController |
17 | 17 |
|
18 | 18 |
def populate_DB(): |
19 | 19 |
""" Peuple la base de données. """ |
20 | 20 |
# On ajoute un groupe d'hôtes et un groupe de services. |
21 |
hostmanagers = HostGroup(name = u'managersgroup') |
|
22 |
DBSession.add(hostmanagers) |
|
23 |
servicemanagers = ServiceGroup(name = u'managersgroup') |
|
24 |
DBSession.add(servicemanagers) |
|
21 |
supitemmanagers = SupItemGroup(name=u'managersgroup') |
|
22 |
DBSession.add(supitemmanagers) |
|
25 | 23 |
DBSession.flush() |
26 | 24 |
|
25 |
DBSession.add(GroupHierarchy( |
|
26 |
parent=supitemmanagers, |
|
27 |
child=supitemmanagers, |
|
28 |
hops=0, |
|
29 |
)) |
|
30 |
|
|
27 | 31 |
# On ajoute la permission 'manage' à ces deux groupes. |
28 | 32 |
manage_perm = Permission.by_permission_name(u'manage') |
29 |
hostmanagers.permissions.append(manage_perm) |
|
30 |
servicemanagers.permissions.append(manage_perm) |
|
33 |
supitemmanagers.permissions.append(manage_perm) |
|
31 | 34 |
DBSession.flush() |
32 | 35 |
|
33 | 36 |
# On crée un hôte de test, et on l'ajoute au groupe d'hôtes. |
... | ... | |
41 | 44 |
weight = 42, |
42 | 45 |
) |
43 | 46 |
DBSession.add(managerhost) |
44 |
hostmanagers.hosts.append(managerhost)
|
|
47 |
supitemmanagers.supitems.append(managerhost)
|
|
45 | 48 |
DBSession.flush() |
46 | 49 |
|
47 | 50 |
# On crée un services de bas niveau, et on l'ajoute au groupe de services. |
... | ... | |
53 | 56 |
weight = 42, |
54 | 57 |
) |
55 | 58 |
DBSession.add(managerservice) |
56 |
servicemanagers.services.append(managerservice)
|
|
59 |
supitemmanagers.supitems.append(managerservice)
|
|
57 | 60 |
DBSession.flush() |
58 | 61 |
|
59 | 62 |
return (managerhost, managerservice) |
vigiboard/tests/functional/test_raw_events_table.py | ||
---|---|---|
10 | 10 |
|
11 | 11 |
from vigilo.models.session import DBSession |
12 | 12 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
13 |
Permission, StateName, \ |
|
14 |
Host, HostGroup, LowLevelService, ServiceGroup
|
|
13 |
Permission, StateName, GroupHierarchy, \
|
|
14 |
Host, LowLevelService, SupItemGroup
|
|
15 | 15 |
from vigiboard.tests import TestController |
16 | 16 |
|
17 | 17 |
def populate_DB(caused_by_service): |
18 | 18 |
""" Peuple la base de données. """ |
19 | 19 |
# On ajoute un groupe d'hôtes et un groupe de services. |
20 |
hostmanagers = HostGroup(name = u'managersgroup') |
|
21 |
DBSession.add(hostmanagers) |
|
22 |
servicemanagers = ServiceGroup(name = u'managersgroup') |
|
23 |
DBSession.add(servicemanagers) |
|
20 |
supitemmanagers = SupItemGroup(name = u'managersgroup') |
|
21 |
DBSession.add(supitemmanagers) |
|
22 |
DBSession.flush() |
|
23 |
|
|
24 |
DBSession.add(GroupHierarchy( |
|
25 |
parent=supitemmanagers, |
|
26 |
child=supitemmanagers, |
|
27 |
hops=0, |
|
28 |
)) |
|
24 | 29 |
DBSession.flush() |
25 | 30 |
|
26 | 31 |
# On ajoute la permission 'manage' à ces deux groupes. |
27 | 32 |
manage_perm = Permission.by_permission_name(u'manage') |
28 |
hostmanagers.permissions.append(manage_perm) |
|
29 |
servicemanagers.permissions.append(manage_perm) |
|
33 |
supitemmanagers.permissions.append(manage_perm) |
|
30 | 34 |
DBSession.flush() |
31 | 35 |
|
32 | 36 |
# On crée un hôte de test, et on l'ajoute au groupe d'hôtes. |
... | ... | |
40 | 44 |
weight = 42, |
41 | 45 |
) |
42 | 46 |
DBSession.add(managerhost) |
43 |
hostmanagers.hosts.append(managerhost)
|
|
47 |
supitemmanagers.supitems.append(managerhost)
|
|
44 | 48 |
DBSession.flush() |
45 | 49 |
|
46 | 50 |
# On crée un services de bas niveau, et on l'ajoute au groupe de services. |
... | ... | |
52 | 56 |
weight = 42, |
53 | 57 |
) |
54 | 58 |
DBSession.add(managerservice) |
55 |
servicemanagers.services.append(managerservice)
|
|
59 |
supitemmanagers.supitems.append(managerservice)
|
|
56 | 60 |
DBSession.flush() |
57 | 61 |
|
58 | 62 |
if caused_by_service: |
... | ... | |
94 | 98 |
|
95 | 99 |
def add_masked_event(idcorrevent): |
96 | 100 |
transaction.begin() |
97 |
hostmanagers = HostGroup.by_group_name(u'managersgroup')
|
|
101 |
hostmanagers = SupItemGroup.by_group_name(u'managersgroup')
|
|
98 | 102 |
nb_hosts = DBSession.query(Host).count() |
99 | 103 |
|
100 | 104 |
masked_host = Host( |
... | ... | |
107 | 111 |
weight = 42, |
108 | 112 |
) |
109 | 113 |
DBSession.add(masked_host) |
110 |
hostmanagers.hosts.append(masked_host)
|
|
114 |
hostmanagers.supitems.append(masked_host)
|
|
111 | 115 |
DBSession.flush() |
112 | 116 |
|
113 | 117 |
event = Event( |
vigiboard/tests/functional/test_root.py | ||
---|---|---|
17 | 17 |
|
18 | 18 |
from vigilo.models.session import DBSession |
19 | 19 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
20 |
Permission, StateName, \ |
|
21 |
Host, HostGroup, ServiceGroup, LowLevelService
|
|
20 |
Permission, StateName, GroupHierarchy, \
|
|
21 |
Host, SupItemGroup, LowLevelService
|
|
22 | 22 |
|
23 | 23 |
from vigiboard.tests import TestController |
24 | 24 |
|
25 | 25 |
def populate_DB(): |
26 | 26 |
""" Peuple la base de données. """ |
27 | 27 |
# On ajoute un groupe d'hôtes et un groupe de services. |
28 |
hostmanagers = HostGroup(name = u'managersgroup') |
|
29 |
DBSession.add(hostmanagers) |
|
30 |
servicemanagers = ServiceGroup(name = u'managersgroup') |
|
31 |
DBSession.add(servicemanagers) |
|
28 |
supitemmanagers = SupItemGroup(name = u'managersgroup') |
|
29 |
DBSession.add(supitemmanagers) |
|
30 |
DBSession.flush() |
|
31 |
|
|
32 |
DBSession.add(GroupHierarchy( |
|
33 |
parent=supitemmanagers, |
|
34 |
child=supitemmanagers, |
|
35 |
hops=0, |
|
36 |
)) |
|
32 | 37 |
DBSession.flush() |
33 | 38 |
|
34 | 39 |
# On ajoute la permission 'manage' à ces deux groupes. |
35 | 40 |
manage_perm = Permission.by_permission_name(u'manage') |
36 |
hostmanagers.permissions.append(manage_perm) |
|
37 |
servicemanagers.permissions.append(manage_perm) |
|
41 |
supitemmanagers.permissions.append(manage_perm) |
|
38 | 42 |
DBSession.flush() |
39 | 43 |
|
40 | 44 |
# On crée un 2 hôtes, et on les ajoute au groupe d'hôtes. |
... | ... | |
48 | 52 |
weight = 42, |
49 | 53 |
) |
50 | 54 |
DBSession.add(host1) |
51 |
hostmanagers.hosts.append(host1)
|
|
55 |
supitemmanagers.supitems.append(host1)
|
|
52 | 56 |
host2 = Host( |
53 | 57 |
name = u'host2', |
54 | 58 |
checkhostcmd = u'halt', |
... | ... | |
59 | 63 |
weight = 42, |
60 | 64 |
) |
61 | 65 |
DBSession.add(host2) |
62 |
hostmanagers.hosts.append(host2)
|
|
66 |
supitemmanagers.supitems.append(host2)
|
|
63 | 67 |
DBSession.flush() |
64 | 68 |
|
65 | 69 |
# On crée 2 services de bas niveau, et on les ajoute au groupe de services. |
... | ... | |
71 | 75 |
weight = 42, |
72 | 76 |
) |
73 | 77 |
DBSession.add(service1) |
74 |
servicemanagers.services.append(service1)
|
|
78 |
supitemmanagers.supitems.append(service1)
|
|
75 | 79 |
service2 = LowLevelService( |
76 | 80 |
host = host2, |
77 | 81 |
servicename = u'service2', |
... | ... | |
80 | 84 |
weight = 42, |
81 | 85 |
) |
82 | 86 |
DBSession.add(service2) |
83 |
servicemanagers.services.append(service2)
|
|
87 |
supitemmanagers.supitems.append(service2)
|
|
84 | 88 |
DBSession.flush() |
85 | 89 |
|
86 | 90 |
return ([host1, host2], [service1, service2]) |
vigiboard/tests/functional/test_search_form_host.py | ||
---|---|---|
8 | 8 |
|
9 | 9 |
from vigiboard.tests import TestController |
10 | 10 |
from vigilo.models.session import DBSession |
11 |
from vigilo.models.tables import HostGroup, Host, Permission, \ |
|
12 |
Event, CorrEvent, StateName |
|
11 |
from vigilo.models.tables import SupItemGroup, Host, Permission, \ |
|
12 |
Event, CorrEvent, StateName, \ |
|
13 |
GroupHierarchy |
|
13 | 14 |
|
14 | 15 |
def insert_deps(): |
15 | 16 |
"""Insère les dépendances nécessaires aux tests.""" |
16 | 17 |
timestamp = datetime.now() |
17 | 18 |
|
18 |
hostgroup = HostGroup(
|
|
19 |
hostgroup = SupItemGroup(
|
|
19 | 20 |
name=u'foo', |
20 | 21 |
) |
21 | 22 |
DBSession.add(hostgroup) |
22 | 23 |
DBSession.flush() |
23 | 24 |
|
25 |
DBSession.add(GroupHierarchy( |
|
26 |
parent=hostgroup, |
|
27 |
child=hostgroup, |
|
28 |
hops=0, |
|
29 |
)) |
|
30 |
DBSession.flush() |
|
31 |
|
|
24 | 32 |
host = Host( |
25 | 33 |
name=u'bar', |
26 | 34 |
checkhostcmd=u'', |
... | ... | |
35 | 43 |
DBSession.add(host) |
36 | 44 |
DBSession.flush() |
37 | 45 |
|
38 |
hostgroup.hosts.append(host)
|
|
46 |
hostgroup.supitems.append(host)
|
|
39 | 47 |
DBSession.flush() |
40 | 48 |
|
41 | 49 |
event = Event( |
... | ... | |
71 | 79 |
# pour lesquel l'utilisateur a les permissions. |
72 | 80 |
hostgroup = insert_deps() |
73 | 81 |
manage = Permission.by_permission_name(u'manage') |
74 |
manage.hostgroups.append(hostgroup)
|
|
82 |
manage.supitemgroups.append(hostgroup)
|
|
75 | 83 |
DBSession.flush() |
76 | 84 |
transaction.commit() |
77 | 85 |
|
vigiboard/tests/functional/test_search_form_hostgroup.py | ||
---|---|---|
8 | 8 |
|
9 | 9 |
from vigiboard.tests import TestController |
10 | 10 |
from vigilo.models.session import DBSession |
11 |
from vigilo.models.tables import HostGroup, Host, Permission, \
|
|
12 |
Event, CorrEvent, StateName
|
|
11 |
from vigilo.models.tables import SupItemGroup, Host, Permission, StateName, \
|
|
12 |
Event, CorrEvent, GroupHierarchy
|
|
13 | 13 |
|
14 | 14 |
def insert_deps(): |
15 | 15 |
"""Insère les dépendances nécessaires aux tests.""" |
16 | 16 |
timestamp = datetime.now() |
17 | 17 |
|
18 |
hostgroup = HostGroup(
|
|
18 |
hostgroup = SupItemGroup(
|
|
19 | 19 |
name=u'foo', |
20 | 20 |
) |
21 | 21 |
DBSession.add(hostgroup) |
22 | 22 |
DBSession.flush() |
23 | 23 |
|
24 |
DBSession.add(GroupHierarchy( |
|
25 |
parent=hostgroup, |
|
26 |
child=hostgroup, |
|
27 |
hops=0, |
|
28 |
)) |
|
29 |
DBSession.flush() |
|
30 |
|
|
24 | 31 |
host = Host( |
25 | 32 |
name=u'bar', |
26 | 33 |
checkhostcmd=u'', |
... | ... | |
35 | 42 |
DBSession.add(host) |
36 | 43 |
DBSession.flush() |
37 | 44 |
|
38 |
hostgroup.hosts.append(host)
|
|
45 |
hostgroup.supitems.append(host)
|
|
39 | 46 |
DBSession.flush() |
40 | 47 |
|
41 | 48 |
event = Event( |
... | ... | |
73 | 80 |
# ayant la permission 'manage' de voir cette alerte. |
74 | 81 |
hostgroup = insert_deps() |
75 | 82 |
manage = Permission.by_permission_name(u'manage') |
76 |
manage.hostgroups.append(hostgroup)
|
|
83 |
manage.supitemgroups.append(hostgroup)
|
|
77 | 84 |
DBSession.flush() |
78 | 85 |
transaction.commit() |
79 | 86 |
|
80 | 87 |
# On envoie une requête avec recherche sur le groupe d'hôtes créé, |
81 | 88 |
# on s'attend à recevoir 1 résultat. |
82 |
response = self.app.get('/?hostgroup=foo',
|
|
89 |
response = self.app.get('/?supitemgroup=foo',
|
|
83 | 90 |
extra_environ={'REMOTE_USER': 'manager'}) |
84 | 91 |
|
85 | 92 |
# Il doit y avoir 1 seule ligne de résultats. |
... | ... | |
96 | 103 |
"""Teste la recherche par hostgroup sur un groupe inexistant.""" |
97 | 104 |
# On envoie une requête avec recherche sur un groupe d'hôtes |
98 | 105 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
99 |
response = self.app.get('/?hostgroup=foot',
|
|
106 |
response = self.app.get('/?supitemgroup=foot',
|
|
100 | 107 |
extra_environ={'REMOTE_USER': 'manager'}) |
101 | 108 |
|
102 | 109 |
# Il doit y avoir 1 seule ligne de résultats. |
... | ... | |
123 | 130 |
# On envoie une requête avec recherche sur le groupe d'hôtes créé, |
124 | 131 |
# mais avec un utilisateur ne disposant pas des permissions adéquates. |
125 | 132 |
# On s'attend à n'obtenir aucun résultat. |
126 |
response = self.app.get('/?hostgroup=foo',
|
|
133 |
response = self.app.get('/?supitemgroup=foo',
|
|
127 | 134 |
extra_environ={'REMOTE_USER': 'manager'}) |
128 | 135 |
|
129 | 136 |
# Il doit y avoir 1 seule ligne de résultats. |
vigiboard/tests/functional/test_search_form_misc.py | ||
---|---|---|
9 | 9 |
|
10 | 10 |
from vigiboard.tests import TestController |
11 | 11 |
from vigilo.models.session import DBSession |
12 |
from vigilo.models.tables import HostGroup, Host, Permission, \
|
|
13 |
Event, CorrEvent, StateName |
|
12 |
from vigilo.models.tables import SupItemGroup, Host, Permission, \
|
|
13 |
Event, CorrEvent, StateName, GroupHierarchy
|
|
14 | 14 |
|
15 | 15 |
def insert_deps(): |
16 | 16 |
"""Insère les dépendances nécessaires aux tests.""" |
... | ... | |
30 | 30 |
DBSession.add(host) |
31 | 31 |
DBSession.flush() |
32 | 32 |
|
33 |
hostgroup = HostGroup( |
|
34 |
name=u'foo', |
|
35 |
) |
|
36 |
hostgroup.hosts.append(host) |
|
33 |
hostgroup = SupItemGroup(name=u'foo') |
|
34 |
hostgroup.supitems.append(host) |
|
37 | 35 |
DBSession.add(hostgroup) |
38 | 36 |
DBSession.flush() |
39 | 37 |
|
38 |
DBSession.add(GroupHierarchy( |
|
39 |
parent=hostgroup, |
|
40 |
child=hostgroup, |
|
41 |
hops=0, |
|
42 |
)) |
|
43 |
DBSession.flush() |
|
44 |
|
|
40 | 45 |
event = Event( |
41 | 46 |
supitem=host, |
42 | 47 |
timestamp=timestamp, |
... | ... | |
61 | 66 |
|
62 | 67 |
# On attribut les permissions. |
63 | 68 |
manage = Permission.by_permission_name(u'manage') |
64 |
manage.hostgroups.append(hostgroup)
|
|
69 |
manage.supitemgroups.append(hostgroup)
|
|
65 | 70 |
DBSession.flush() |
66 | 71 |
return timestamp |
67 | 72 |
|
vigiboard/tests/functional/test_search_form_service.py | ||
---|---|---|
8 | 8 |
|
9 | 9 |
from vigiboard.tests import TestController |
10 | 10 |
from vigilo.models.session import DBSession |
11 |
from vigilo.models.tables import ServiceGroup, HostGroup, \
|
|
11 |
from vigilo.models.tables import SupItemGroup, GroupHierarchy, \
|
|
12 | 12 |
Host, Permission, StateName, \ |
13 | 13 |
LowLevelService, Event, CorrEvent |
14 | 14 |
|
... | ... | |
16 | 16 |
"""Insère les dépendances nécessaires aux tests.""" |
17 | 17 |
timestamp = datetime.now() |
18 | 18 |
|
19 |
hostgroup = HostGroup( |
|
20 |
name=u'foo', |
|
21 |
) |
|
19 |
hostgroup = SupItemGroup(name=u'foo') |
|
22 | 20 |
DBSession.add(hostgroup) |
23 | 21 |
|
22 |
DBSession.add(GroupHierarchy( |
|
23 |
parent=hostgroup, |
|
24 |
child=hostgroup, |
|
25 |
hops=0, |
|
26 |
)) |
|
27 |
DBSession.flush() |
|
28 |
|
|
24 | 29 |
host = Host( |
25 | 30 |
name=u'bar', |
26 | 31 |
checkhostcmd=u'', |
... | ... | |
35 | 40 |
DBSession.add(host) |
36 | 41 |
DBSession.flush() |
37 | 42 |
|
38 |
hostgroup.hosts.append(host)
|
|
43 |
hostgroup.supitems.append(host)
|
|
39 | 44 |
DBSession.flush() |
40 | 45 |
|
41 |
servicegroup = ServiceGroup( |
|
42 |
name=u'foo', |
|
43 |
) |
|
46 |
servicegroup = SupItemGroup(name=u'bar') |
|
44 | 47 |
DBSession.add(servicegroup) |
45 | 48 |
|
49 |
DBSession.add(GroupHierarchy( |
|
50 |
parent=servicegroup, |
|
51 |
child=servicegroup, |
|
52 |
hops=0, |
|
53 |
)) |
|
54 |
DBSession.flush() |
|
55 |
|
|
46 | 56 |
service = LowLevelService( |
47 | 57 |
host=host, |
48 | 58 |
command=u'', |
... | ... | |
53 | 63 |
DBSession.add(service) |
54 | 64 |
DBSession.flush() |
55 | 65 |
|
56 |
servicegroup.services.append(service)
|
|
66 |
servicegroup.supitems.append(service)
|
|
57 | 67 |
DBSession.flush() |
58 | 68 |
|
59 | 69 |
event = Event( |
... | ... | |
82 | 92 |
class TestSearchFormService(TestController): |
83 | 93 |
"""Teste la récupération d'événements selon le groupe de services.""" |
84 | 94 |
|
85 |
def test_search_service_when_allowed_by_hostgroup(self):
|
|
95 |
def test_search_service_when_allowed_by_host(self): |
|
86 | 96 |
""" |
87 | 97 |
Teste la recherche par service avec des droits implicites |
88 | 98 |
(droits accordés car l'utilisateur a les droits sur l'hôte). |
... | ... | |
95 | 105 |
print "Adding permission for 'manager' on host group '%s'" % \ |
96 | 106 |
hostgroup.name |
97 | 107 |
manage = Permission.by_permission_name(u'manage') |
98 |
manage.hostgroups.append(hostgroup)
|
|
108 |
manage.supitemgroups.append(hostgroup)
|
|
99 | 109 |
DBSession.flush() |
100 | 110 |
transaction.commit() |
101 | 111 |
|
... | ... | |
114 | 124 |
print "There are %d columns in the result set" % len(cols) |
115 | 125 |
assert_true(len(cols) > 1) |
116 | 126 |
|
117 |
def test_search_service_when_allowed_by_servicegroup(self):
|
|
127 |
def test_search_service_when_allowed_by_service(self): |
|
118 | 128 |
""" |
119 | 129 |
Teste la recherche par service avec des droits explicites |
120 | 130 |
(droits accordés car l'utilisateur a explicitement les droits |
... | ... | |
127 | 137 |
print "Adding permission for 'manager' on service group '%s'" % \ |
128 | 138 |
servicegroup.name |
129 | 139 |
manage = Permission.by_permission_name(u'manage') |
130 |
manage.servicegroups.append(servicegroup)
|
|
140 |
manage.supitemgroups.append(servicegroup)
|
|
131 | 141 |
DBSession.flush() |
132 | 142 |
transaction.commit() |
133 | 143 |
|
vigiboard/tests/functional/test_search_form_servicegroup.py | ||
---|---|---|
8 | 8 |
|
9 | 9 |
from vigiboard.tests import TestController |
10 | 10 |
from vigilo.models.session import DBSession |
11 |
from vigilo.models.tables import ServiceGroup, Host, Permission, Event, \ |
|
12 |
LowLevelService, CorrEvent, StateName |
|
11 |
from vigilo.models.tables import SupItemGroup, Host, Permission, Event, \ |
|
12 |
LowLevelService, CorrEvent, StateName, \ |
|
13 |
GroupHierarchy |
|
13 | 14 |
|
14 | 15 |
def insert_deps(): |
15 | 16 |
"""Insère les dépendances nécessaires aux tests.""" |
... | ... | |
29 | 30 |
DBSession.add(host) |
30 | 31 |
DBSession.flush() |
31 | 32 |
|
32 |
servicegroup = ServiceGroup(
|
|
33 |
servicegroup = SupItemGroup(
|
|
33 | 34 |
name=u'foo', |
34 | 35 |
) |
35 | 36 |
DBSession.add(servicegroup) |
36 | 37 |
|
38 |
DBSession.add(GroupHierarchy( |
|
39 |
parent=servicegroup, |
|
40 |
child=servicegroup, |
|
41 |
hops=0, |
|
42 |
)) |
|
43 |
DBSession.flush() |
|
44 |
|
|
37 | 45 |
service = LowLevelService( |
38 | 46 |
host=host, |
39 | 47 |
command=u'', |
... | ... | |
44 | 52 |
DBSession.add(service) |
45 | 53 |
DBSession.flush() |
46 | 54 |
|
47 |
servicegroup.services.append(service)
|
|
55 |
servicegroup.supitems.append(service)
|
|
48 | 56 |
event = Event( |
49 | 57 |
supitem=service, |
50 | 58 |
timestamp=timestamp, |
... | ... | |
80 | 88 |
# ayant la permission 'manage' de voir cette alerte. |
81 | 89 |
servicegroup = insert_deps() |
82 | 90 |
manage = Permission.by_permission_name(u'manage') |
83 |
manage.servicegroups.append(servicegroup)
|
|
91 |
manage.supitemgroups.append(servicegroup)
|
|
84 | 92 |
DBSession.flush() |
85 | 93 |
transaction.commit() |
86 | 94 |
|
87 | 95 |
# On envoie une requête avec recherche sur le groupe |
88 | 96 |
# de services créé, on s'attend à recevoir 1 résultat. |
89 |
response = self.app.get('/?servicegroup=foo',
|
|
97 |
response = self.app.get('/?supitemgroup=foo',
|
|
90 | 98 |
extra_environ={'REMOTE_USER': 'manager'}) |
91 | 99 |
|
92 | 100 |
# Il doit y avoir 1 seule ligne de résultats. |
... | ... | |
103 | 111 |
"""Teste la recherche par servicegroup sur un groupe inexistant.""" |
104 | 112 |
# On envoie une requête avec recherche sur un groupe de services |
105 | 113 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
106 |
response = self.app.get('/?servicegroup=foot',
|
|
114 |
response = self.app.get('/?supitemgroup=foot',
|
|
107 | 115 |
extra_environ={'REMOTE_USER': 'manager'}) |
108 | 116 |
|
109 | 117 |
# Il doit y avoir 1 seule ligne de résultats. |
... | ... | |
130 | 138 |
# On envoie une requête avec recherche sur le groupe de services |
131 | 139 |
# services créé, mais avec un utilisateur ne disposant pas des |
132 | 140 |
# permissions adéquates. On s'attend à n'obtenir aucun résultat. |
133 |
response = self.app.get('/?servicegroup=foo',
|
|
141 |
response = self.app.get('/?supitemgroup=foo',
|
|
134 | 142 |
extra_environ={'REMOTE_USER': 'manager'}) |
135 | 143 |
|
136 | 144 |
# Il doit y avoir 1 seule ligne de résultats. |
vigiboard/tests/functional/test_userutils.py | ||
---|---|---|
7 | 7 |
from nose.tools import assert_true |
8 | 8 |
|
9 | 9 |
from vigilo.models.session import DBSession |
10 |
from vigilo.models.tables import HostGroup, Permission, User
|
|
10 |
from vigilo.models.tables import SupItemGroup, Permission, User, GroupHierarchy
|
|
11 | 11 |
from vigiboard.tests import TestController |
12 | 12 |
|
13 | 13 |
class TestGroupPermissionsInheritance(TestController): |
... | ... | |
18 | 18 |
""" |
19 | 19 |
|
20 | 20 |
# Création de 2 groupes d'utilisateurs. |
21 |
hosteditors = HostGroup(name=u'hosteditors', parent=None)
|
|
21 |
hosteditors = SupItemGroup(name=u'hosteditors')
|
|
22 | 22 |
DBSession.add(hosteditors) |
23 | 23 |
|
24 |
hostmanagers = HostGroup(name=u'hostmanagers', parent=hosteditors)
|
|
24 |
hostmanagers = SupItemGroup(name=u'hostmanagers')
|
|
25 | 25 |
DBSession.add(hostmanagers) |
26 | 26 |
|
27 |
# Hiérarchie des groupes. |
|
28 |
DBSession.add(GroupHierarchy( |
|
29 |
parent=hosteditors, |
|
30 |
child=hosteditors, |
|
31 |
hops=0, |
|
32 |
)) |
|
33 |
DBSession.add(GroupHierarchy( |
|
34 |
parent=hostmanagers, |
|
35 |
child=hostmanagers, |
|
36 |
hops=0, |
|
37 |
)) |
|
38 |
DBSession.add(GroupHierarchy( |
|
39 |
parent=hosteditors, |
|
40 |
child=hostmanagers, |
|
41 |
hops=1, |
|
42 |
)) |
|
43 |
|
|
27 | 44 |
# L'attribution des permissions. |
28 | 45 |
manage_perm = Permission.by_permission_name(u'manage') |
29 | 46 |
edit_perm = Permission.by_permission_name(u'edit') |
30 | 47 |
|
31 |
manage_perm.hostgroups.append(hostmanagers)
|
|
32 |
edit_perm.hostgroups.append(hosteditors)
|
|
48 |
manage_perm.supitemgroups.append(hostmanagers)
|
|
49 |
edit_perm.supitemgroups.append(hosteditors)
|
|
33 | 50 |
DBSession.flush() |
34 | 51 |
transaction.commit() |
35 | 52 |
|
... | ... | |
42 | 59 |
username = response.request.environ \ |
43 | 60 |
['repoze.who.identity'] \ |
44 | 61 |
['repoze.who.userid'] |
45 |
grp = User.by_user_name(username).groups |
|
62 |
grp = User.by_user_name(username).supitemgroups
|
|
46 | 63 |
|
47 | 64 |
# Permet de rafraîchir les instances. |
48 |
hostmanagers = DBSession.query(HostGroup).filter(
|
|
49 |
HostGroup.name==u'hostmanagers').one()
|
|
50 |
hosteditors = DBSession.query(HostGroup).filter(
|
|
51 |
HostGroup.name==u'hosteditors').one()
|
|
65 |
hostmanagers = DBSession.query(SupItemGroup).filter(
|
|
66 |
SupItemGroup.name==u'hostmanagers').one()
|
|
67 |
hosteditors = DBSession.query(SupItemGroup).filter(
|
|
68 |
SupItemGroup.name==u'hosteditors').one()
|
|
52 | 69 |
|
53 | 70 |
# On vérifie que la liste est correcte : le manager doit avoir accès |
54 | 71 |
# aux groupes 'hostmanagers' & 'hosteditors' (dont il hérite). |
... | ... | |
63 | 80 |
username = response.request.environ \ |
64 | 81 |
['repoze.who.identity'] \ |
65 | 82 |
['repoze.who.userid'] |
66 |
grp = User.by_user_name(username).groups |
|
83 |
grp = User.by_user_name(username).supitemgroups
|
|
67 | 84 |
|
68 | 85 |
# L'utilisateur editor ne doit avoir accès qu'au groupe 'hosteditors'. |
69 | 86 |
assert_true(not(hostmanagers.idgroup in grp) and |
vigiboard/widgets/search_form.py | ||
---|---|---|
25 | 25 |
style = 'display: none' |
26 | 26 |
|
27 | 27 |
class fields(WidgetsList): |
28 |
hostgroup = TextField(label_text=l_('Host group')) |
|
29 |
servicegroup = TextField(label_text=l_('Service group')) |
|
28 |
supitemgroup = TextField(label_text=l_('Group')) |
|
30 | 29 |
host = TextField(label_text=l_('Host')) |
31 | 30 |
service = TextField(label_text=l_('Service')) |
32 | 31 |
output = TextField(label_text=l_('Output')) |
Also available in: Unified diff