Revision 20367931
Réorganisation du code (controllers, etc)
Mise en place d'un système de plugin pour ajouter des colonnes à la volée
Internationalisation complète
Création de quelques tests
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@274 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/model/vigiboard_bdd/events.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 |
"""Model For Events Table""" |
|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4: |
|
3 |
"""Modèle pour la table Events""" |
|
3 | 4 |
|
4 | 5 |
from sqlalchemy.orm import mapper, relation |
5 |
from sqlalchemy import Table, ForeignKeyConstraint, Column, Index, DefaultClause, ForeignKey
|
|
6 |
from sqlalchemy import Table, Column, Index, DefaultClause, ForeignKey |
|
6 | 7 |
from sqlalchemy.types import Integer, String, Text, DateTime, Boolean |
7 | 8 |
|
8 |
from sqlalchemy.databases.mysql import MSEnum |
|
9 |
from sqlalchemy.databases.mysql import MSEnum, MSBoolean
|
|
9 | 10 |
|
10 | 11 |
from vigiboard.model import metadata |
11 |
from tg import config |
|
12 | 12 |
from datetime import datetime |
13 |
|
|
13 |
from vigiboard.config.vigiboard_config import vigiboard_config |
|
14 | 14 |
# Generation par SQLAutoCode |
15 | 15 |
|
16 |
events = Table(config['vigiboard_bdd.basename'] + 'events', metadata, |
|
17 |
Column(u'idevent', Integer(), primary_key=True, nullable=False), |
|
18 |
Column(u'hostname', String(length=100, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False), |
|
19 |
Column(u'servicename', String(length=100, convert_unicode=False, assert_unicode=None), primary_key=False), |
|
20 |
Column(u'server_source', String(length=100, convert_unicode=False, assert_unicode=None), primary_key=False), |
|
21 |
Column(u'severity', Integer(), primary_key=False, nullable=False), |
|
22 |
Column(u'status', MSEnum('None','Acknowledged','AAClosed'), primary_key=False, nullable=False, server_default=DefaultClause('None', for_update=False)), |
|
23 |
Column(u'active', Boolean(), primary_key=False, server_default=DefaultClause('TRUE', for_update=False)), |
|
24 |
Column(u'timestamp', DateTime(timezone=False), primary_key=False), |
|
25 |
Column(u'output', Text(length=None, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False), |
|
26 |
Column(u'event_timestamp', DateTime(timezone=False), primary_key=False), |
|
27 |
Column(u'last_check', DateTime(timezone=False), primary_key=False), |
|
28 |
Column(u'recover_output', Text(length=None, convert_unicode=False, assert_unicode=None), primary_key=False), |
|
29 |
Column(u'timestamp_active', DateTime(timezone=False), primary_key=False), |
|
30 |
Column(u'timestamp_cleared', DateTime(timezone=False), primary_key=False), |
|
31 |
Column(u'trouble_ticket', String(length=20, convert_unicode=False, assert_unicode=None), primary_key=False), |
|
32 |
Column(u'occurence', Integer(), primary_key=False), |
|
33 |
ForeignKeyConstraint([u'servicename'], [config['vigiboard_bdd.basename'] + u'service.name'], name=u'events_ibfk_1'), |
|
34 |
ForeignKeyConstraint([u'hostname'], [config['vigiboard_bdd.basename'] + u'host.name'], name=u'events_ibfk_2') |
|
35 |
|
|
16 |
events = Table(vigiboard_config['vigiboard_bdd.basename'] + 'events', metadata, |
|
17 |
Column(u'idevent', Integer(), primary_key=True, nullable=False,autoincrement=True), |
|
18 |
Column(u'hostname', String(length=100, convert_unicode=True, assert_unicode=None), ForeignKey(vigiboard_config['vigiboard_bdd.basename'] +'host.name'),index=True,primary_key=False, nullable=False), |
|
19 |
Column(u'servicename', String(length=100, convert_unicode=True, assert_unicode=None), ForeignKey(vigiboard_config['vigiboard_bdd.basename'] + 'service.name'),index=True,primary_key=False), |
|
20 |
Column(u'server_source', String(length=100, convert_unicode=True, assert_unicode=None), primary_key=False), |
|
21 |
Column(u'severity', Integer(), primary_key=False, nullable=False), |
|
22 |
Column(u'status', MSEnum('None','Acknowledged','AAClosed'), primary_key=False, nullable=False, server_default=DefaultClause('None', for_update=False)), |
|
23 |
Column(u'active', MSBoolean(), primary_key=False, default='True'), |
|
24 |
Column(u'timestamp', DateTime(timezone=False), primary_key=False), |
|
25 |
Column(u'output', Text(length=None, convert_unicode=True, assert_unicode=None), primary_key=False, nullable=False), |
|
26 |
Column(u'event_timestamp', DateTime(timezone=False), primary_key=False), |
|
27 |
Column(u'last_check', DateTime(timezone=False), primary_key=False), |
|
28 |
Column(u'recover_output', Text(length=None, convert_unicode=True, assert_unicode=None), primary_key=False), |
|
29 |
Column(u'timestamp_active', DateTime(timezone=False), primary_key=False), |
|
30 |
Column(u'timestamp_cleared', DateTime(timezone=False), primary_key=False), |
|
31 |
Column(u'trouble_ticket', String(length=20, convert_unicode=True, assert_unicode=None), primary_key=False), |
|
32 |
Column(u'occurence', Integer(), primary_key=False), |
|
33 |
mysql_engine='InnoDB', |
|
34 |
mysql_charset='utf8' |
|
36 | 35 |
) |
37 | 36 |
|
38 |
Index(u'hostname', events.c.hostname, events.c.servicename, unique=False) |
|
39 |
Index(u'servicename', events.c.servicename, unique=False) |
|
40 |
|
|
41 | 37 |
# Classe a mapper |
42 | 38 |
|
43 | 39 |
class Events(object): |
40 |
|
|
41 |
""" |
|
42 |
Classe liée avec la table associée |
|
43 |
""" |
|
44 |
|
|
45 |
def __init__(self,hostname,servicename,server_source='',severity=0,status='None',active=True,timestamp=datetime.now(),output='',event_timestamp=datetime.now(),last_check=datetime.now(),recover_output='',timestamp_active=datetime.now(),timestamp_cleared="0000-00-00 00:00:00",trouble_ticket=None,occurence=1): |
|
46 |
self.hostname = hostname |
|
47 |
self.servicename = servicename |
|
48 |
self.server_source = server_source |
|
49 |
self.severity = severity |
|
50 |
self.status = status |
|
51 |
self.active = active |
|
52 |
self.timestamp = timestamp |
|
53 |
self.output = output |
|
54 |
self.event_timestamp = event_timestamp |
|
55 |
self.last_check = last_check |
|
56 |
self.recover_output = recover_output |
|
57 |
self.timestamp_active = timestamp_active |
|
58 |
self.timestamp_cleared = timestamp_cleared |
|
59 |
self.trouble_ticket = trouble_ticket |
|
60 |
self.occurence = occurence |
|
61 |
|
|
62 |
def GetDate(self,element): |
|
63 |
|
|
64 |
""" |
|
65 |
Permet de convertir une variable de temps en la chaîne de caractère : |
|
66 |
jour mois heure:minutes:secondes |
|
67 |
|
|
68 |
@param element: nom de l'élément à convertir de la classe elle même |
|
69 |
""" |
|
70 |
|
|
71 |
element = self.__dict__[element] |
|
72 |
date = datetime.now() - element |
|
73 |
if date.days < 7 : |
|
74 |
return element.strftime('%a %H:%M:%S') |
|
75 |
else : |
|
76 |
return element.strftime('%d %b %H:%M:%S') |
|
77 |
|
|
78 |
def GetSinceDate(self,element): |
|
79 |
|
|
80 |
""" |
|
81 |
Permet d'obtenir le temps écoulé entre maintenant (datetime.now()) |
|
82 |
et le temps contenu dans la variable de temps indiquée |
|
83 |
|
|
84 |
@param element: nom de l'élément de la classe elle même à utiliser |
|
85 |
pour le calcul |
|
86 |
""" |
|
44 | 87 |
|
45 |
def GetDate(self,element): |
|
46 |
element = self.__dict__[element] |
|
47 |
date = datetime.now() - element |
|
48 |
if date.days < 7 : |
|
49 |
return element.strftime('%a %H:%M:%S') |
|
50 |
else : |
|
51 |
return element.strftime('%d %b %H:%M:%S') |
|
52 |
|
|
53 |
def GetSinceDate(self,element): |
|
54 |
date = datetime.now() - self.__dict__[element] |
|
55 |
minutes, seconds = divmod(date.seconds, 60) |
|
56 |
hours, minutes = divmod(minutes, 60) |
|
57 |
return "%dd %dh %d'" % (date.days , hours , minutes) |
|
88 |
date = datetime.now() - self.__dict__[element] |
|
89 |
minutes, seconds = divmod(date.seconds, 60) |
|
90 |
hours, minutes = divmod(minutes, 60) |
|
91 |
return "%dd %dh %d'" % (date.days , hours , minutes) |
|
58 | 92 |
|
59 | 93 |
mapper(Events,events) |
Also available in: Unified diff