vigigraph / maj_bdd.py @ 43e9f440
History | View | Annotate | Download (7.22 KB)
1 | f151053f | Thomas BURGUIERE | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | from sqlalchemy import and_ |
||
3 | |||
4 | f1b255cb | Francis LAHEUGUERE | from vigilo.models import Host, HostGroup |
5 | from vigilo.models import LowLevelService, ServiceGroup |
||
6 | from vigilo.models import PerfDataSource, Graph |
||
7 | from vigilo.models.session import DBSession |
||
8 | f151053f | Thomas BURGUIERE | |
9 | from datetime import datetime |
||
10 | |||
11 | import transaction |
||
12 | |||
13 | #DBSession.autocommit = True
|
||
14 | |||
15 | d9d07df6 | Thomas BURGUIERE | # Groupe d'hôtes (HostGroup)
|
16 | def create_HostGroup(name, parent=None): |
||
17 | g = DBSession.query(HostGroup).filter(HostGroup.name == name).first() |
||
18 | f151053f | Thomas BURGUIERE | if not g: |
19 | if parent:
|
||
20 | d9d07df6 | Thomas BURGUIERE | g = HostGroup(name=name, idparent=parent.idgroup) |
21 | f151053f | Thomas BURGUIERE | else:
|
22 | d9d07df6 | Thomas BURGUIERE | g = HostGroup(name=name) |
23 | f151053f | Thomas BURGUIERE | print "Ajout du Groupe: ", name |
24 | DBSession.add(g) |
||
25 | return g
|
||
26 | |||
27 | # Hôte (Host)
|
||
28 | f158722a | Francis LAHEUGUERE | #def create_Host(name, checkhostcmd, hosttpl, snmpcommunity, mainip, snmpport):
|
29 | def create_Host(name): |
||
30 | d9d07df6 | Thomas BURGUIERE | h = DBSession.query(Host).filter(Host.name == name).first() |
31 | f151053f | Thomas BURGUIERE | if not h: |
32 | f158722a | Francis LAHEUGUERE | h = Host(name=name, |
33 | checkhostcmd=u'dummy',
|
||
34 | hosttpl=u'linux',
|
||
35 | mainip=u"127.0.0.1",
|
||
36 | snmpcommunity=u"public",
|
||
37 | snmpport=161,
|
||
38 | weight=0)
|
||
39 | f151053f | Thomas BURGUIERE | print "Ajout de l'hôte: ", name |
40 | DBSession.add(h) |
||
41 | return h
|
||
42 | |||
43 | f158722a | Francis LAHEUGUERE | #Recherche de l'objet Host à partir du name
|
44 | def get_host(hostname): |
||
45 | """ Return Host object from hostname, None if not available"""
|
||
46 | return DBSession.query(Host) \
|
||
47 | .filter(Host.name == hostname) \ |
||
48 | .first() |
||
49 | |||
50 | d9d07df6 | Thomas BURGUIERE | # Ajout d'un hôte dans un groupe d'hôtes (Host -> HostGroup)
|
51 | def add_Host2HostGroup(host, group): |
||
52 | if host not in group.hosts: |
||
53 | print "Ajout de l'hote: %(h)s dans le group: %(g)s" % \ |
||
54 | {'h': host.name,
|
||
55 | 'g': group.name}
|
||
56 | group.hosts.append(host) |
||
57 | |||
58 | a00a2345 | Francois POIROTTE | def create_LowLevelService(hostname, servicename): |
59 | s = DBSession.query(LowLevelService) \ |
||
60 | .join((Host, LowLevelService.idhost == Host.idhost)) \ |
||
61 | .filter(LowLevelService.servicename == servicename) \ |
||
62 | 059cc5de | William MAISONMARCHEUX | .filter(Host.name == hostname) \ |
63 | d9d07df6 | Thomas BURGUIERE | .first() |
64 | if not s: |
||
65 | a00a2345 | Francois POIROTTE | s = LowLevelService(idhost=get_host(hostname).idhost, |
66 | d9d07df6 | Thomas BURGUIERE | servicename=servicename, |
67 | f158722a | Francis LAHEUGUERE | weight = 42,
|
68 | d9d07df6 | Thomas BURGUIERE | op_dep=u"?")
|
69 | print "Ajout du service", servicename |
||
70 | DBSession.add(s) |
||
71 | 9a994732 | Thomas BURGUIERE | return s
|
72 | d9d07df6 | Thomas BURGUIERE | |
73 | # Groupe de services (ServiceGroup)
|
||
74 | def create_ServiceGroup(name, parent=None): |
||
75 | g = DBSession.query(ServiceGroup).filter(ServiceGroup.name == name).first() |
||
76 | if not g: |
||
77 | if parent:
|
||
78 | g = ServiceGroup(name=name, idparent=parent.idgroup) |
||
79 | else:
|
||
80 | g = ServiceGroup(name=name) |
||
81 | print "Ajout du Groupe: ", name |
||
82 | DBSession.add(g) |
||
83 | return g
|
||
84 | |||
85 | # Ajout d'un hôte dans un groupe d'hôtes (Host -> HostGroup)
|
||
86 | a00a2345 | Francois POIROTTE | def add_LowLevelService2ServiceGroup(service, group): |
87 | 9a994732 | Thomas BURGUIERE | if service not in group.services: |
88 | d9d07df6 | Thomas BURGUIERE | print "Ajout du service: %(s)s dans le group: %(g)s" % \ |
89 | 9a994732 | Thomas BURGUIERE | {'s': service.servicename,
|
90 | d9d07df6 | Thomas BURGUIERE | 'g': group.name}
|
91 | 9a994732 | Thomas BURGUIERE | group.services.append(service) |
92 | d9d07df6 | Thomas BURGUIERE | |
93 | f158722a | Francis LAHEUGUERE | def _get_service(hostname, servicename): |
94 | """ Return Host object from hostname, None if not available"""
|
||
95 | a00a2345 | Francois POIROTTE | return DBSession.query(LowLevelService) \
|
96 | .join((Host, Host.idhost == LowLevelService.idhost)) \ |
||
97 | f158722a | Francis LAHEUGUERE | .filter(Host.name == hostname) \ |
98 | a00a2345 | Francois POIROTTE | .filter(LowLevelService.servicename == servicename) \ |
99 | 9a994732 | Thomas BURGUIERE | .first() |
100 | cd60da72 | Francis LAHEUGUERE | |
101 | #Recherche de l'objet ServiceGroup à partir du name
|
||
102 | def get_ServiceGroup(name): |
||
103 | return DBSession.query(ServiceGroup).filter(ServiceGroup.name == name).first()
|
||
104 | |||
105 | a00a2345 | Francois POIROTTE | #Recherche de l'objet LowLevelService à partir du name
|
106 | def get_LowLevelService(hostname, servicename): |
||
107 | s = DBSession.query(LowLevelService) \ |
||
108 | .join((Host, LowLevelService.idhost == Host.idhost)) \ |
||
109 | .filter(LowLevelService.servicename == servicename) \ |
||
110 | cd60da72 | Francis LAHEUGUERE | .filter(Host.name == hostname) \ |
111 | .first() |
||
112 | return s
|
||
113 | |||
114 | f158722a | Francis LAHEUGUERE | # DS (Graph)
|
115 | def create_graph(name, vlabel, perfdatasources): |
||
116 | gr = DBSession.query(Graph) \ |
||
117 | .filter(Graph.name == name) \ |
||
118 | .first() |
||
119 | if not gr: |
||
120 | gr = Graph(name=name, vlabel=vlabel) |
||
121 | print "Ajout du graph: ", vlabel |
||
122 | DBSession.add(gr) |
||
123 | return gr
|
||
124 | |||
125 | # DS (PerfDataSource)
|
||
126 | def create_ds(name, type, service, label, graphs): |
||
127 | ds = DBSession.query(PerfDataSource) \ |
||
128 | .filter(PerfDataSource.service == service) \ |
||
129 | .filter(PerfDataSource.name == name) \ |
||
130 | .first() |
||
131 | if not ds: |
||
132 | ds = PerfDataSource(name=name, type=type, service=service, label=label, graphs=graphs)
|
||
133 | print "Ajout de la datasource: ", label |
||
134 | DBSession.add(ds) |
||
135 | return ds
|
||
136 | |||
137 | cd60da72 | Francis LAHEUGUERE | |
138 | d9d07df6 | Thomas BURGUIERE | hg1 = create_HostGroup(u'Serveurs')
|
139 | hg2 = create_HostGroup(u'Telecoms')
|
||
140 | hg3 = create_HostGroup(u'Serveurs Linux', hg1)
|
||
141 | hg4 = create_HostGroup(u'NORTEL', hg2)
|
||
142 | hg5 = create_HostGroup(u'CISCO', hg2)
|
||
143 | |||
144 | f158722a | Francis LAHEUGUERE | h1 = create_Host(u'proto4.si.c-s.fr')
|
145 | h2 = create_Host(u'messagerie.si.c-s.fr')
|
||
146 | h3 = create_Host(u'testnortel.si.c-s.fr')
|
||
147 | h4 = create_Host(u'proto6.si.c-s.fr')
|
||
148 | 470f60ca | Francis LAHEUGUERE | h5 = create_Host(u'par.linux0')
|
149 | f151053f | Thomas BURGUIERE | |
150 | d9d07df6 | Thomas BURGUIERE | add_Host2HostGroup(h1, hg3) |
151 | add_Host2HostGroup(h2, hg3) |
||
152 | add_Host2HostGroup(h3, hg4) |
||
153 | add_Host2HostGroup(h4, hg5) |
||
154 | add_Host2HostGroup(h4, hg3) |
||
155 | 470f60ca | Francis LAHEUGUERE | add_Host2HostGroup(h5, hg3) |
156 | f151053f | Thomas BURGUIERE | |
157 | 9a994732 | Thomas BURGUIERE | sg1 = create_ServiceGroup(u'Général')
|
158 | sg2 = create_ServiceGroup(u'Interface Réseau')
|
||
159 | sg3 = create_ServiceGroup(u'Performance')
|
||
160 | sg4 = create_ServiceGroup(u'Partitions')
|
||
161 | sg5 = create_ServiceGroup(u'Processus')
|
||
162 | f151053f | Thomas BURGUIERE | |
163 | a00a2345 | Francois POIROTTE | s1 = create_LowLevelService(h1.name, u'Interface eth0')
|
164 | s2 = create_LowLevelService(h1.name, u'Interface eth1')
|
||
165 | s3 = create_LowLevelService(h1.name, u'Interface série')
|
||
166 | s4 = create_LowLevelService(h4.name, u'Interface')
|
||
167 | s5 = create_LowLevelService(h5.name, u'Interface Linux')
|
||
168 | |||
169 | add_LowLevelService2ServiceGroup(s1, sg2) |
||
170 | add_LowLevelService2ServiceGroup(s2, sg2) |
||
171 | add_LowLevelService2ServiceGroup(s3, sg1) |
||
172 | add_LowLevelService2ServiceGroup(s4, sg2) |
||
173 | add_LowLevelService2ServiceGroup(s5, sg2) |
||
174 | add_LowLevelService2ServiceGroup(s5, sg3) |
||
175 | 9a994732 | Thomas BURGUIERE | |
176 | f158722a | Francis LAHEUGUERE | gr1 = create_graph(u'graph1',u'Graph1', None) |
177 | gr2 = create_graph(u'graph2',u'Graph2', None) |
||
178 | gr3 = create_graph(u'graph3',u'Graph3', None) |
||
179 | gr4 = create_graph(u'graph4',u'Graph4', None) |
||
180 | 470f60ca | Francis LAHEUGUERE | #gr5 = create_graph(u'graph5',u'Graph5', None)
|
181 | gr5 = create_graph(u'IO',u'IO', None) |
||
182 | 6a089374 | Francis LAHEUGUERE | gr6 = create_graph(u'RAM',u'RAM', None) |
183 | e513c11c | Francis LAHEUGUERE | gr7 = create_graph(u'TCP connections',u'TCP connections', None) |
184 | f2a0c70f | Francis LAHEUGUERE | gr8 = create_graph(u'CPU usage (by type)',u'CPU usage (by type)', None) |
185 | f158722a | Francis LAHEUGUERE | |
186 | graphs = [] |
||
187 | for g in DBSession.query(Graph).all(): |
||
188 | graphs.append(g) |
||
189 | |||
190 | f2a0c70f | Francis LAHEUGUERE | |
191 | f158722a | Francis LAHEUGUERE | ds1 = create_ds(u'ineth0', u'GAUGE', s1 \ |
192 | f2a0c70f | Francis LAHEUGUERE | , u'Données en entrée sur eth0', graphs[1:2]) |
193 | f158722a | Francis LAHEUGUERE | ds2 = create_ds(u'outeth0', u'GAUGE', s2 \ |
194 | , u'Données en sortie sur eth0', graphs[1:3]) |
||
195 | ds3 = create_ds(u'outeth1', u'GAUGE', s3 \ |
||
196 | , u'Données en sortie sur eth1', graphs[2:4]) |
||
197 | ds4 = create_ds(u'ineth1', u'GAUGE', s4 \ |
||
198 | ad17826c | Francis LAHEUGUERE | , u'Données en entrée sur eth0', graphs[3:4]) |
199 | e513c11c | Francis LAHEUGUERE | ds5_1 = create_ds(u'IO Reads', u'GAUGE', s5 \ |
200 | , u'IO Reads', graphs[4:5]) |
||
201 | ds5_2 = create_ds(u'IO Writes', u'GAUGE', s5 \ |
||
202 | , u'IO Writes', graphs[4:5]) |
||
203 | 6a089374 | Francis LAHEUGUERE | ds6 = create_ds(u'RAM', u'GAUGE', s5 \ |
204 | e513c11c | Francis LAHEUGUERE | , u'RAM', graphs[5:6]) |
205 | ds7 = create_ds(u'TCP connections', u'GAUGE', s5 \ |
||
206 | , u'TCP connections', graphs[6:7]) |
||
207 | f2a0c70f | Francis LAHEUGUERE | ds8 = create_ds(u'CPU usage (by type)', u'GAUGE', s5 \ |
208 | , u'CPU usage (by type)', graphs[7:8]) |
||
209 | f151053f | Thomas BURGUIERE | |
210 | transaction.commit() |