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