Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / model / vigiboard_bdd / events.py @ 9c0dbb6a

History | View | Annotate | Download (4.5 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.vigiboard_config import vigiboard_config
14

    
15
# Generation par SQLAutoCode
16

    
17
events = Table(vigiboard_config['vigiboard_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(vigiboard_config['vigiboard_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(vigiboard_config['vigiboard_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)