vigiboard / vigiboard / model / vigiboard_bdd / events.py @ 20367931
History | View | Annotate | Download (4.35 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, relation |
6 |
from sqlalchemy import Table, Column, Index, DefaultClause, ForeignKey |
7 |
from sqlalchemy.types import Integer, String, Text, DateTime, Boolean |
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.vigiboard_config import vigiboard_config |
14 |
# Generation par SQLAutoCode
|
15 |
|
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'
|
35 |
) |
36 |
|
37 |
# Classe a mapper
|
38 |
|
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 |
"""
|
87 |
|
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) |
92 |
|
93 |
mapper(Events,events) |