Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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)