Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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)