vigiboard / vigiboard / model / vigilo_bdd / events.py @ dde732e5
History | View | Annotate | Download (4.49 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4:
|
3 |
"""Modèle pour la table Events"""
|
4 |
|
5 |
from sqlalchemy.orm import mapper |
6 |
from sqlalchemy import Table, Column, DefaultClause, ForeignKey |
7 |
from sqlalchemy.types import Integer, String, Text, DateTime |
8 |
|
9 |
from sqlalchemy.databases.mysql import MSEnum, MSBoolean |
10 |
|
11 |
from vigiboard.model import metadata |
12 |
from datetime import datetime |
13 |
from vigiboard.config.vigilo_conf.vigicore import vigicore_config |
14 |
|
15 |
# Generation par SQLAutoCode
|
16 |
|
17 |
events = Table(vigicore_config['vigicore_bdd.basename'] + 'events', metadata, |
18 |
Column(u'idevent', Integer(), primary_key=True, nullable=False, |
19 |
autoincrement=True),
|
20 |
Column(u'hostname',
|
21 |
String(length=100, convert_unicode=True, assert_unicode=None), |
22 |
ForeignKey(vigicore_config['vigicore_bdd.basename'] +'host.name'), |
23 |
index=True, primary_key=False, nullable=False), |
24 |
Column(u'servicename',
|
25 |
String(length=100, convert_unicode=True, assert_unicode=None), |
26 |
ForeignKey(vigicore_config['vigicore_bdd.basename'] + 'service.name'), |
27 |
index=True, primary_key=False), |
28 |
Column(u'server_source',
|
29 |
String(length=100, convert_unicode=True, assert_unicode=None), |
30 |
primary_key=False),
|
31 |
Column(u'severity', Integer(), primary_key=False, nullable=False), |
32 |
Column(u'status', MSEnum('None','Acknowledged','AAClosed'), |
33 |
primary_key=False, nullable=False, |
34 |
server_default=DefaultClause('None', for_update=False)), |
35 |
Column(u'active', MSBoolean(), primary_key=False, default='True'), |
36 |
Column(u'timestamp', DateTime(timezone=False), primary_key=False), |
37 |
Column(u'output',
|
38 |
Text(length=None, convert_unicode=True, assert_unicode=None), |
39 |
primary_key=False, nullable=False), |
40 |
Column(u'event_timestamp', DateTime(timezone=False), primary_key=False), |
41 |
Column(u'last_check', DateTime(timezone=False), primary_key=False), |
42 |
Column(u'recover_output',
|
43 |
Text(length=None, convert_unicode=True, assert_unicode=None), |
44 |
primary_key=False),
|
45 |
Column(u'timestamp_active', DateTime(timezone=False), primary_key=False), |
46 |
Column(u'timestamp_cleared', DateTime(timezone=False), primary_key=False), |
47 |
Column(u'trouble_ticket',
|
48 |
String(length=20, convert_unicode=True, assert_unicode=None), |
49 |
primary_key=False),
|
50 |
Column(u'occurence', Integer(), primary_key=False), |
51 |
mysql_engine='InnoDB',
|
52 |
mysql_charset='utf8'
|
53 |
) |
54 |
|
55 |
# Classe a mapper
|
56 |
|
57 |
class Events(object): |
58 |
|
59 |
"""
|
60 |
Classe liée avec la table associée
|
61 |
"""
|
62 |
|
63 |
def __init__(self, hostname, servicename, server_source = '', severity = 0, |
64 |
status = 'None', active = True, timestamp = datetime.now(), |
65 |
output = '', event_timestamp = datetime.now(),
|
66 |
last_check = datetime.now(), recover_output = '',
|
67 |
timestamp_active = datetime.now(), |
68 |
timestamp_cleared=None, trouble_ticket = None, |
69 |
occurence = 1):
|
70 |
|
71 |
self.hostname = hostname
|
72 |
self.servicename = servicename
|
73 |
self.server_source = server_source
|
74 |
self.severity = severity
|
75 |
self.status = status
|
76 |
self.active = active
|
77 |
self.timestamp = timestamp
|
78 |
self.output = output
|
79 |
self.event_timestamp = event_timestamp
|
80 |
self.last_check = last_check
|
81 |
self.recover_output = recover_output
|
82 |
self.timestamp_active = timestamp_active
|
83 |
self.timestamp_cleared = timestamp_cleared
|
84 |
self.trouble_ticket = trouble_ticket
|
85 |
self.occurence = occurence
|
86 |
|
87 |
def get_date(self, element): |
88 |
|
89 |
"""
|
90 |
Permet de convertir une variable de temps en la chaîne de caractère :
|
91 |
jour mois heure:minutes:secondes
|
92 |
|
93 |
@param element: nom de l'élément à convertir de la classe elle même
|
94 |
"""
|
95 |
|
96 |
element = self.__dict__[element]
|
97 |
date = datetime.now() - element |
98 |
if date.days < 7 : |
99 |
return element.strftime('%a %H:%M:%S') |
100 |
else :
|
101 |
return element.strftime('%d %b %H:%M:%S') |
102 |
|
103 |
def get_since_date(self, element): |
104 |
|
105 |
"""
|
106 |
Permet d'obtenir le temps écoulé entre maintenant (datetime.now())
|
107 |
et le temps contenu dans la variable de temps indiquée
|
108 |
|
109 |
@param element: nom de l'élément de la classe elle même à utiliser
|
110 |
pour le calcul
|
111 |
"""
|
112 |
|
113 |
date = datetime.now() - self.__dict__[element]
|
114 |
minutes, seconds = divmod(date.seconds, 60) |
115 |
hours, minutes = divmod(minutes, 60) |
116 |
return "%dd %dh %d'" % (date.days , hours , minutes) |
117 |
|
118 |
mapper(Events, events) |