Project

General

Profile

Revision 0f56fff9

ID0f56fff9b58e9d405450d8f3e8411b4179737243
Parent 0e24cd14
Child 6c664a14

Added by Francois POIROTTE over 14 years ago

Migration des settings de deploiement depuis vigi*_cfg.py vers le fichier INI correspondant.
Ajout d'un patch pour PasteDeploy qui permet de gérer les échapements dans l'interpolation.
Ticket associé: http://trac.pythonpaste.org/pythonpaste/ticket/379

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@654 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

development.ini
22 22
[app:main]
23 23
use = egg:vigiboard
24 24

  
25
# Requis par Vigiboard
26
appname = vigiboard
25
; Nombre d'évènements par page.
26
vigiboard_item_per_page = 15
27

  
28
; URL vers laquelle le logo de Vigilo redirige.
29
vigiboard_links.logo = /
30

  
31
; XXX PasteDeploy uses ConfigParser which doesn't play well with interpolation.
32
; See http://trac.pythonpaste.org/pythonpaste/ticket/379
33
;
34
; vigicore/patches/paste_deploy_SafeConfigParser.diff contains a patch to
35
; use SafeConfigParser which supports string interpolation escapes.
36
;
37
; URL des tickets, possibilités:
38
; - %(idevent)d
39
; - %(host)s
40
; - %(service)s
41
; - %(tt)s
42
vigiboard_links.tt = http://example4.com/%%(idevent)d/%%(tt)s
43

  
44
; Default font size, must be a valid size as per the CSS 2.1 specification.
45
; See http://www.w3.org/TR/CSS21/fonts.html#font-size-props
46
vigiboard_font.size = 10px
47

  
27 48

  
28 49
full_stack = true
29 50
#lang = fr
vigiboard/config/app_cfg.py
77 77
# on logout:
78 78
base_config.sa_auth.post_logout_url = '/post_logout'
79 79

  
80

  
81
##################################
82
# Settings specific to Vigiboard #
83
##################################
84

  
85
# Vigiboard version
86
base_config['vigiboard_version'] = u'0.1'
87

  
88
# Links configuration
89
# XXX Should be part of ini settings.
90
base_config['vigiboard_links.eventdetails'] = {
91
        'nagios': ['Nagios host details', 'http://example1.com/%(idevent)d'],
92
        'metrology': ['Metrology details', 'http://example2.com/%(idevent)d'],
93
        'security': ['Security details', 'http://example3.com/%(idevent)d'],
94
        'servicetype': ['Service Type', 'http://example4.com/%(idevent)d'],
95
}
96

  
97
# Plugins to use
98
# XXX Should be part of ini settings.
99
base_config['vigiboard_plugins'] = [
100
    ['shn', 'PluginSHN'],
101
]
102

  
vigiboard/config/middleware.py
4 4

  
5 5
from vigiboard.config.app_cfg import base_config
6 6
from vigiboard.config.environment import load_environment
7
from vigiboard.config.vigiboard_cfg import vigiboard_config
8
from paste.cascade import Cascade
9
from paste.urlparser import StaticURLParser
10 7

  
11 8
__all__ = ['make_app']
12 9

  
......
20 17
    Set vigiboard up with the settings found in the PasteDeploy configuration
21 18
    file used.
22 19
    
23
    :param global_conf: The global settings for vigiboard (those
24
        defined under the ``[DEFAULT]`` section).
25
    :type global_conf: dict
26
    :param full_stack: Should the whole TG2 stack be set up?
27
    :type full_stack: str or bool
28
    :return: The vigiboard application with all the relevant middleware
29
        loaded.
30
    
31 20
    This is the PasteDeploy factory for the vigiboard application.
32 21
    
33
    ``app_conf`` contains all the application-specific settings (those defined
34
    under ``[app:main]``.
22
    C{app_conf} contains all the application-specific settings (those defined
23
    under ``[app:main]``).
35 24
    
36
   
25
    @param global_conf: The global settings for vigiboard (those
26
        defined under the ``[DEFAULT]`` section).
27
    @type global_conf: C{dict}
28
    @param full_stack: Should the whole TG2 stack be set up?
29
    @type full_stack: C{str} or C{bool}
30
    @return: The vigiboard application with all the relevant middleware
31
        loaded.
37 32
    """
38
    # chargement de la config
39
    for i in vigiboard_config:
40
        app_conf[i] = vigiboard_config[i]
41

  
42
    # on cré l'application de base
43 33
    app = make_base_app(global_conf, full_stack=True, **app_conf)
44 34

  
45
    # on rajoute le path public de l'application
46
    import vigiboard
47
    app = Cascade([
48
        StaticURLParser(global_conf['here'] + '/' + app_conf['appname']  + '/public'),
49
        StaticURLParser(vigiboard.__file__.rsplit('/',1)[0] + '/public'),app]
50
        )
51
    
35
    # Wrap your base TurboGears 2 application with custom middleware here
36

  
52 37
    return app
53 38

  
vigiboard/config/vigiboard_cfg.py
1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
"""Configuration de Vigiboard."""
4

  
5
vigiboard_config = {
6
    'vigiboard_bdd.basename': '',
7
    
8
    # Affichage, lien disponibles dans la fenêtre de détail d'un évènement
9
    'vigiboard_links.eventdetails': {
10
        'nagios': ['Nagios host details', 'http://example1.com/%(idevent)d'],
11
        'metrology': ['Metrology details', 'http://example2.com/%(idevent)d'],
12
        'security': ['Security details', 'http://example3.com/%(idevent)d'],
13
        'servicetype': ['Service Type', 'http://example4.com/%(idevent)d'],
14
        },
15
    
16
    # Nombre d'évènments par pages
17
    'vigiboard_item_per_page': 15,
18
    
19
    # plugin a activer
20
    # nom du fichier sans l'extension suivit du nom de la classe
21
    'vigiboard_plugins': [
22
            ['shn', 'PluginSHN'],
23
        ],
24

  
25
    # Version de Vigiboard
26
    'vigiboard_version': u'0.1',
27

  
28
    # URL du lien présent sur le logo Vigilo.
29
    # Si absent ou vide, on redirige vers la racine de Vigiboard.
30
    'vigiboard_links.logo': '',
31

  
32
    # URL des tickets, possibilités:
33
    # - %(idevent)d
34
    # - %(host)s
35
    # - %(service)s
36
    # - %(tt)s
37
    'vigiboard_links.tt': 'http://example4.com/%(idevent)d/%(tt)s',
38

  
39
    # Taille de police par défaut
40
    'vigiboard_font.size': '10px',
41
}
42

  
vigiboard/controllers/root.py
39 39
    @expose('vigiboard.templates.vigiboard')
40 40
    @require(Any(not_anonymous(), msg="You need to be authenticated"))
41 41
    def default(self, page = None, host = None, service = None, output = None,
42
            trouble_ticket=None,*argv,**krgv):
42
            trouble_ticket=None, *argv, **krgv):
43 43
            
44 44
        """
45 45
        Page d'accueil de Vigiboard. Elle affiche, suivant la page demandée (page 1 par
......
133 133
        events = DBSession.query(Events.severity, Events.idevent,
134 134
                        Events.hostname, Events.servicename
135 135
                 ).join(( HostGroups , Events.hostname == HostGroups.hostname )
136
                 ).filter(HostGroups.groupname.in_(user.groups())
136
                 ).filter(HostGroups.groupname.in_(user.groups)
137 137
                 ).filter(Events.idevent == idevent)[0]
138 138
        initial_state = DBSession.query(EventHistory
139 139
                 ).filter(EventHistory.idevent == idevent
......
146 146
                    break
147 147
        else :
148 148
            initial_state = 0
149
        
149

  
150 150
        severity = { 0: _('None'), 1: _('OK'), 2: _('Suppressed'),
151 151
                3: _('Initial'), 4: _('Maintenance'), 5: _('Minor'),
152 152
                6: _('Major'), 7: _('Critical') }
......
315 315

  
316 316

  
317 317
    @validate(validators={"plugin_name":validators.OneOf(
318
        [i for [i,j] in config['vigiboard_plugins']])},
318
        [i for [i,j] in config.get('vigiboard_plugins', [])])},
319 319
                error_handler = process_form_errors)
320 320
    @expose('json')
321 321
    def get_plugin_value(self, plugin_name, *arg, **krgv):
322 322
        """
323 323
        Permet aux plugins de pouvoir récupérer des valeurs Json
324 324
        """
325
        plugin = [i for i in config['vigiboard_plugins'] \
326
                            if i[0] == plugin_name][0]
325
        plugins = config['vigiboard_plugins']
326
        if plugins is None:
327
            return
328

  
329
        plugin = [i for i in plugins if i[0] == plugin_name][0]
327 330
        try:
328 331
            mypac = __import__(
329 332
                'vigiboard.controllers.vigiboard_plugin.' + plugin[0],
vigiboard/controllers/vigiboardrequest.py
95 95
        Génération de la requête avec l'ensemble des données stockées
96 96
        et la place dans la variable rq de la classe
97 97
        """
98
        for plug in config['vigiboard_plugins']:
98
        for plug in config.get('vigiboard_plugins', []):
99 99
            try:
100 100
                mypac = __import__(
101 101
                    'vigiboard.controllers.vigiboard_plugin.' +\
vigiboard/websetup.py
4 4
import logging
5 5

  
6 6
import transaction
7
from tg import config
7 8

  
8 9
from vigiboard.config.environment import load_environment
9
from vigiboard.config.vigiboard_cfg import vigiboard_config
10 10

  
11 11
__all__ = ['setup_app']
12 12

  
......
67 67

  
68 68
    version = model.Version()
69 69
    version.name = u'vigiboard'
70
    version.version = vigiboard_config['vigiboard_version']
70
    version.version = config['vigiboard_version']
71 71
    model.DBSession.add(version)
72 72

  
73 73
    model.DBSession.flush()

Also available in: Unified diff