Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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()