Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / config / app_cfg.py @ cf3c2494

History | View | Annotate | Download (3.98 KB)

1
# -*- coding: utf-8 -*-
2
# vim: set fileencoding=utf-8 sw=4 ts=4 et :
3
################################################################################
4
#
5
# Copyright (C) 2007-2011 CS-SI
6
#
7
# This program is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License version 2 as
9
# published by the Free Software Foundation.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
################################################################################
20

    
21
"""
22
Global configuration file for TG2-specific settings in vigiboard.
23

24
This file complements development/deployment.ini.
25

26
Please note that **all the argument values are strings**. If you want to
27
convert them into boolean, for example, you should use the
28
:func:`paste.deploy.converters.asbool` function, as in::
29

30
    from paste.deploy.converters import asbool
31
    setting = asbool(global_conf.get('the_setting'))
32

33
"""
34

    
35
from vigilo.turbogears import VigiloAppConfig
36

    
37
import vigiboard
38
from vigiboard.lib import app_globals, helpers
39

    
40
import logging
41
LOGGER = logging.getLogger(__name__)
42

    
43
class VigiboardConfig(VigiloAppConfig):
44
    def setup_sqlalchemy(self):
45
        super(VigiboardConfig, self).setup_sqlalchemy()
46

    
47
        # On est obligés d'attendre que la base de données
48
        # soit configurée pour charger les plugins.
49
        from pkg_resources import working_set
50
        from vigiboard.controllers.plugins import VigiboardRequestPlugin
51
        from tg import config
52

    
53
        plugins = []
54
        for plugin_name in config['vigiboard_plugins']:
55
            try:
56
                ep = working_set.iter_entry_points(
57
                        "vigiboard.columns", plugin_name).next()
58
            except StopIteration:
59
                pass
60

    
61
            if ep.name in dict(plugins):
62
                continue
63

    
64
            try:
65
                plugin_class = ep.load(require=True)
66
                if issubclass(plugin_class, VigiboardRequestPlugin):
67
                    plugins.append((unicode(ep.name), plugin_class()))
68
            except Exception, e:
69
                LOGGER.error('Unable to import plugin %s : %s' % (plugin_name, e))
70

    
71
        config['columns_plugins'] = plugins
72

    
73
base_config = VigiboardConfig('vigiboard')
74
base_config.package = vigiboard
75

    
76
##################################
77
# Settings specific to Vigiboard #
78
##################################
79

    
80
# Configuration des liens
81
# Les elements suivants peuvent etre utilises dans la chaine de formatage :
82
# - %(idcorrevent)d : identifiant de l'aggregat (alerte correlee)
83
# - %(host)s : le nom de l'hote concerne par l'alerte
84
# - %(service)s : le nom du service concerne par l'alerte
85
# - %(message) : le message transmis par Nagios dans l'alerte
86
#
87
# Permet de satisfaire l'exigence VIGILO_EXIG_VIGILO_BAC_0130.
88
base_config['vigiboard_links.eventdetails'] = (
89
    (
90
        u'Détail de l\'hôte dans Nagios',
91
        '/nagios/%(host)s/cgi-bin/status.cgi?host=%(host)s'
92
    ), (
93
        u'Détail de la métrologie',
94
        'http://vigilo.example.com/vigigraph/rpc/fullHostPage?host=%(host)s'
95
    ), (
96
        u'Détail de la sécurité',
97
        'http://security.example.com/?host=%(host)s'
98
    ), (
99
        'Inventaire',
100
        'http://cmdb.example.com/?host=%(host)s'
101
    ), (
102
        'Documentation',
103
        'http://doc.example.com/?q=%(message)s'
104
    ),
105
)
106

    
107
# URL des tickets, possibilités:
108
# - %(idcorrevent)d
109
# - %(host)s
110
# - %(service)s
111
# - %(tt)s
112
base_config['vigiboard_links.tt'] = 'http://bugs.example.com/?ticket=%(tt)s'
113

    
114
# Plugins to use
115
base_config['vigiboard_plugins'] = (
116
    'details',
117
    'date',
118
    'priority',
119
    'occurrences',
120
    'hostname',
121
    'servicename',
122
    'output',
123
    'hls',
124
    'status',
125
)