Revision 320bb553
Suppression de fichiers obsolètes
Et des parties obsolètes de DEVNOTES (correlator)
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6778 b22e2e97-25c9-44ff-b637-2e5ceca36478
maj_bdd.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
import os |
|
3 |
import atexit |
|
4 |
from datetime import datetime |
|
5 |
from sqlalchemy import and_ |
|
6 |
import paste.deploy |
|
7 |
import tg |
|
8 |
|
|
9 |
tg.config = paste.deploy.appconfig('config:%s/%s' % (os.getcwd(), 'development.ini')) |
|
10 |
from vigilo.models.session import DBSession |
|
11 |
from vigilo.models.configure import configure_db |
|
12 |
configure_db(tg.config, 'sqlalchemy.', tg.config['db_basename']) |
|
13 |
|
|
14 |
def commit_on_exit(): |
|
15 |
""" |
|
16 |
Effectue un COMMIT sur la transaction à la fin de l'exécution |
|
17 |
du script d'insertion des données de test. |
|
18 |
""" |
|
19 |
import transaction |
|
20 |
transaction.commit() |
|
21 |
|
|
22 |
atexit.register(commit_on_exit) |
|
23 |
|
|
24 |
from vigilo.models.tables import Host, SupItemGroup |
|
25 |
from vigilo.models.tables import LowLevelService |
|
26 |
from vigilo.models.tables import PerfDataSource, Graph |
|
27 |
from vigilo.models.tables import Ventilation, VigiloServer, Application |
|
28 |
|
|
29 |
|
|
30 |
# Groupe d'hôtes (SupItemGroup) |
|
31 |
def create_SupItemGroup(name, parent=None): |
|
32 |
g = SupItemGroup.create(name, parent) |
|
33 |
return g |
|
34 |
|
|
35 |
# Hôte (Host) |
|
36 |
#def create_Host(name, checkhostcmd, hosttpl, snmpcommunity, address, snmpport): |
|
37 |
def create_Host(name): |
|
38 |
h = DBSession.query(Host).filter(Host.name == name).first() |
|
39 |
if not h: |
|
40 |
h = Host(name=name, |
|
41 |
checkhostcmd=u'dummy', |
|
42 |
hosttpl=u'linux', |
|
43 |
address=u"127.0.0.1", |
|
44 |
snmpcommunity=u"public", |
|
45 |
snmpport=161, |
|
46 |
weight=0) |
|
47 |
print "Ajout de l'hôte: ", name |
|
48 |
DBSession.add(h) |
|
49 |
return h |
|
50 |
|
|
51 |
#Recherche de l'objet Host à partir du name |
|
52 |
def get_host(hostname): |
|
53 |
""" Return Host object from hostname, None if not available""" |
|
54 |
return DBSession.query(Host) \ |
|
55 |
.filter(Host.name == hostname) \ |
|
56 |
.first() |
|
57 |
|
|
58 |
# Ajout d'un hôte dans un groupe d'hôtes (Host -> SupItemGroup) |
|
59 |
def add_Host2SupItemGroup(host, group): |
|
60 |
if host not in group.get_hosts(): |
|
61 |
print "Ajout de l'hote: %(h)s dans le group: %(g)s" % \ |
|
62 |
{'h': host.name, |
|
63 |
'g': group.name} |
|
64 |
host.groups.append(group) |
|
65 |
|
|
66 |
def create_LowLevelService(hostname, servicename): |
|
67 |
s = DBSession.query(LowLevelService) \ |
|
68 |
.join((Host, LowLevelService.idhost == Host.idhost)) \ |
|
69 |
.filter(LowLevelService.servicename == servicename) \ |
|
70 |
.filter(Host.name == hostname) \ |
|
71 |
.first() |
|
72 |
if not s: |
|
73 |
s = LowLevelService(idhost=get_host(hostname).idhost, |
|
74 |
servicename=servicename, |
|
75 |
weight = 42, |
|
76 |
op_dep=u"?") |
|
77 |
print "Ajout du service", servicename |
|
78 |
DBSession.add(s) |
|
79 |
return s |
|
80 |
|
|
81 |
|
|
82 |
# Ajout d'un hôte dans un groupe d'hôtes (Host -> SupItemGroup) |
|
83 |
def add_LowLevelService2SupItemGroup(service, group): |
|
84 |
if service not in group.get_services(): |
|
85 |
print "Ajout du service: %(s)s dans le group: %(g)s" % \ |
|
86 |
{'s': service.servicename, |
|
87 |
'g': group.name} |
|
88 |
service.groups.append(group) |
|
89 |
|
|
90 |
def _get_service(hostname, servicename): |
|
91 |
""" Return Host object from hostname, None if not available""" |
|
92 |
return DBSession.query(LowLevelService) \ |
|
93 |
.join((Host, Host.idhost == LowLevelService.idhost)) \ |
|
94 |
.filter(Host.name == hostname) \ |
|
95 |
.filter(LowLevelService.servicename == servicename) \ |
|
96 |
.first() |
|
97 |
|
|
98 |
#Recherche de l'objet SupItemGroup à partir du name |
|
99 |
def get_SupItemGroup(name): |
|
100 |
return DBSession.query(SupItemGroup).filter(SupItemGroup.name == name).first() |
|
101 |
|
|
102 |
#Recherche de l'objet LowLevelService à partir du name |
|
103 |
def get_LowLevelService(hostname, servicename): |
|
104 |
s = DBSession.query(LowLevelService) \ |
|
105 |
.join((Host, LowLevelService.idhost == Host.idhost)) \ |
|
106 |
.filter(LowLevelService.servicename == servicename) \ |
|
107 |
.filter(Host.name == hostname) \ |
|
108 |
.first() |
|
109 |
return s |
|
110 |
|
|
111 |
# DS (Graph) |
|
112 |
def create_graph(name, vlabel, perfdatasources): |
|
113 |
gr = DBSession.query(Graph) \ |
|
114 |
.filter(Graph.name == name) \ |
|
115 |
.first() |
|
116 |
if not gr: |
|
117 |
gr = Graph(name=name, vlabel=vlabel) |
|
118 |
print "Ajout du graph: ", vlabel |
|
119 |
DBSession.add(gr) |
|
120 |
return gr |
|
121 |
|
|
122 |
# DS (PerfDataSource) |
|
123 |
def create_ds(name, type, service, label, graphs): |
|
124 |
ds = DBSession.query(PerfDataSource) \ |
|
125 |
.filter(PerfDataSource.service == service) \ |
|
126 |
.filter(PerfDataSource.name == name) \ |
|
127 |
.first() |
|
128 |
if not ds: |
|
129 |
ds = PerfDataSource(name=name, type=type, service=service, label=label, graphs=graphs) |
|
130 |
print "Ajout de la datasource: ", label |
|
131 |
DBSession.add(ds) |
|
132 |
return ds |
|
133 |
|
|
134 |
# VigiloServer |
|
135 |
def create_Server(name, description): |
|
136 |
s = DBSession.query(VigiloServer).filter(VigiloServer.name == name).first() |
|
137 |
if not s: |
|
138 |
s = VigiloServer(name=name) |
|
139 |
print "Ajout du Server Vigilo: %s - %s" % (name, description) |
|
140 |
DBSession.add(s) |
|
141 |
return s |
|
142 |
|
|
143 |
# VigiloApplication |
|
144 |
def create_Application(name): |
|
145 |
a = DBSession.query(Application).filter(Application.name == name).first() |
|
146 |
if not a: |
|
147 |
a = Application(name=name) |
|
148 |
print "Ajout de l'application Vigilo: %s" % name |
|
149 |
DBSession.add(a) |
|
150 |
return a |
|
151 |
|
|
152 |
# Ventilation |
|
153 |
def create_Ventilation(host, server, application): |
|
154 |
v = None |
|
155 |
h = DBSession.query(Host).filter(Host.name == host).first() |
|
156 |
s = DBSession.query(VigiloServer).filter(VigiloServer.name == server).first() |
|
157 |
a = DBSession.query(Application).filter(Application.name == application).first() |
|
158 |
if h and s: |
|
159 |
v = Ventilation(idhost=h.idhost, idvigiloserver=s.idvigiloserver, idapp=a.idapp) |
|
160 |
print "Ajout Ventilation - host %s - server %s - application %s" % (host, server, application) |
|
161 |
DBSession.add(v) |
|
162 |
return v |
|
163 |
|
|
164 |
|
|
165 |
hg1 = create_SupItemGroup(u'Serveurs') |
|
166 |
hg2 = create_SupItemGroup(u'Telecoms') |
|
167 |
hg3 = create_SupItemGroup(u'Serveurs Linux', hg1) |
|
168 |
hg4 = create_SupItemGroup(u'NORTEL', hg2) |
|
169 |
hg5 = create_SupItemGroup(u'CISCO', hg2) |
|
170 |
|
|
171 |
h1 = create_Host(u'proto4.si.c-s.fr') |
|
172 |
h2 = create_Host(u'messagerie.si.c-s.fr') |
|
173 |
h3 = create_Host(u'testnortel.si.c-s.fr') |
|
174 |
h4 = create_Host(u'proto6.si.c-s.fr') |
|
175 |
h5 = create_Host(u'par.linux0') |
|
176 |
|
|
177 |
add_Host2SupItemGroup(h1, hg3) |
|
178 |
add_Host2SupItemGroup(h2, hg3) |
|
179 |
add_Host2SupItemGroup(h3, hg4) |
|
180 |
add_Host2SupItemGroup(h4, hg5) |
|
181 |
add_Host2SupItemGroup(h4, hg3) |
|
182 |
add_Host2SupItemGroup(h5, hg3) |
|
183 |
|
|
184 |
sg1 = create_SupItemGroup(u'Général') |
|
185 |
sg2 = create_SupItemGroup(u'Interface Réseau') |
|
186 |
sg3 = create_SupItemGroup(u'Performance') |
|
187 |
sg4 = create_SupItemGroup(u'Partitions') |
|
188 |
sg5 = create_SupItemGroup(u'Processus') |
|
189 |
|
|
190 |
s1 = create_LowLevelService(h1.name, u'Interface eth0') |
|
191 |
s2 = create_LowLevelService(h1.name, u'Interface eth1') |
|
192 |
s3 = create_LowLevelService(h1.name, u'Interface série') |
|
193 |
s4 = create_LowLevelService(h4.name, u'Interface') |
|
194 |
s5 = create_LowLevelService(h5.name, u'Interface Linux') |
|
195 |
|
|
196 |
add_LowLevelService2SupItemGroup(s1, sg2) |
|
197 |
add_LowLevelService2SupItemGroup(s2, sg2) |
|
198 |
add_LowLevelService2SupItemGroup(s3, sg1) |
|
199 |
add_LowLevelService2SupItemGroup(s4, sg2) |
|
200 |
add_LowLevelService2SupItemGroup(s5, sg2) |
|
201 |
add_LowLevelService2SupItemGroup(s5, sg3) |
|
202 |
|
|
203 |
gr1 = create_graph(u'graph1',u'Graph1', None) |
|
204 |
gr2 = create_graph(u'graph2',u'Graph2', None) |
|
205 |
gr3 = create_graph(u'graph3',u'Graph3', None) |
|
206 |
gr4 = create_graph(u'graph4',u'Graph4', None) |
|
207 |
#gr5 = create_graph(u'graph5',u'Graph5', None) |
|
208 |
gr5 = create_graph(u'IO',u'IO', None) |
|
209 |
gr6 = create_graph(u'RAM',u'RAM', None) |
|
210 |
gr7 = create_graph(u'TCP connections',u'TCP connections', None) |
|
211 |
gr8 = create_graph(u'CPU usage (by type)',u'CPU usage (by type)', None) |
|
212 |
|
|
213 |
graphs = [] |
|
214 |
for g in DBSession.query(Graph).all(): |
|
215 |
graphs.append(g) |
|
216 |
|
|
217 |
|
|
218 |
ds1 = create_ds(u'ineth0', u'GAUGE', s1 \ |
|
219 |
, u'Données en entrée sur eth0', graphs[1:2]) |
|
220 |
ds2 = create_ds(u'outeth0', u'GAUGE', s2 \ |
|
221 |
, u'Données en sortie sur eth0', graphs[1:3]) |
|
222 |
ds3 = create_ds(u'outeth1', u'GAUGE', s3 \ |
|
223 |
, u'Données en sortie sur eth1', graphs[2:4]) |
|
224 |
ds4 = create_ds(u'ineth1', u'GAUGE', s4 \ |
|
225 |
, u'Données en entrée sur eth0', graphs[3:4]) |
|
226 |
ds5_1 = create_ds(u'IO Reads', u'GAUGE', s5 \ |
|
227 |
, u'IO Reads', graphs[4:5]) |
|
228 |
ds5_2 = create_ds(u'IO Writes', u'GAUGE', s5 \ |
|
229 |
, u'IO Writes', graphs[4:5]) |
|
230 |
ds6 = create_ds(u'RAM', u'GAUGE', s5 \ |
|
231 |
, u'RAM', graphs[5:6]) |
|
232 |
ds7 = create_ds(u'TCP connections', u'GAUGE', s5 \ |
|
233 |
, u'TCP connections', graphs[6:7]) |
|
234 |
ds8 = create_ds(u'CPU usage (by type)', u'GAUGE', s5 \ |
|
235 |
, u'CPU usage (by type)', graphs[7:8]) |
|
236 |
|
|
237 |
# Serveurs Vigilo |
|
238 |
sv1 = create_Server(u'http://localhost', u'RRD+Nagios') |
|
239 |
|
|
240 |
# Applications Vigilo |
|
241 |
ap1 = create_Application(u'rrdgraph') |
|
242 |
ap2 = create_Application(u'nagios') |
|
243 |
|
|
244 |
# Ventilation |
|
245 |
if sv1 is not None and ap1 is not None: |
|
246 |
create_Ventilation(u'par.linux0', sv1.name, ap1.name) |
|
247 |
if sv1 is not None and ap2 is not None: |
|
248 |
create_Ventilation(u'par.linux0', sv1.name, ap2.name) |
|
249 |
|
Also available in: Unified diff