Première version de la refonte du plugin bcfg2
This commit is contained in:
parent
7e5cd649eb
commit
f67d38baee
8 changed files with 1441 additions and 0 deletions
73
bcfg2new/Plugins/Python/PythonTools.py
Normal file
73
bcfg2new/Plugins/Python/PythonTools.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Fournit quelques outils pour le plugin Python"""
|
||||
|
||||
import os
|
||||
import logging
|
||||
import cStringIO
|
||||
import traceback
|
||||
|
||||
LOGGER = logging.getLogger('Bcfg2.Plugins.Python')
|
||||
|
||||
COLOR_CODE = {
|
||||
'grey': 30,
|
||||
'red': 31,
|
||||
'green': 32,
|
||||
'yellow': 33,
|
||||
'blue': 34,
|
||||
'purple': 35,
|
||||
'cyan': 36,
|
||||
}
|
||||
|
||||
BCFG2_DEBUG = os.getenv("BCFG2_DEBUG")
|
||||
BCFG2_DEBUG_COLOR = os.getenv("BCFG2_DEBUG_COLOR")
|
||||
|
||||
def debug(message, logger, color=None):
|
||||
"""Stocke dans un logger les messages de debug"""
|
||||
if not BCFG2_DEBUG:
|
||||
return
|
||||
|
||||
if BCFG2_DEBUG_COLOR and color:
|
||||
logger.info("\033[1;%dm%s\033[0m" % (COLOR_CODE[color], message))
|
||||
else:
|
||||
logger.info(message)
|
||||
|
||||
def log_traceback(fname, section, exn, logger):
|
||||
"""En cas de traceback, on le loggue sans faire planter
|
||||
le serveur bcfg2"""
|
||||
logger.error('Python %s error: %s: %s: %s' % (section, fname, str(exn.__class__).split('.', 2)[1], str(exn)))
|
||||
|
||||
stream = cStringIO.StringIO()
|
||||
traceback.print_exc(file=stream)
|
||||
|
||||
for line in stream.getvalue().splitlines():
|
||||
logger.error('Python %s error: -> %s' % (section, line))
|
||||
|
||||
class PythonIncludePaths(object):
|
||||
"""C'est un objet qui stocke les dossier d'inclusion python"""
|
||||
includes = []
|
||||
|
||||
@classmethod
|
||||
def get(cls, index, default):
|
||||
"""Retourne includes[index] ou default"""
|
||||
if len(cls.includes) > index:
|
||||
return cls.includes[index]
|
||||
return default
|
||||
|
||||
@classmethod
|
||||
def append(cls, value):
|
||||
"""Ajoute une valeur à la liste"""
|
||||
cls.includes.append(value)
|
||||
|
||||
@classmethod
|
||||
def remove(cls, value):
|
||||
"""Retire une valeur à la liste"""
|
||||
if value in cls.includes:
|
||||
cls.includes.remove(value)
|
||||
|
||||
@classmethod
|
||||
def pop(cls, index):
|
||||
"""Vire un index si existant"""
|
||||
if len(cls.includes) > index:
|
||||
return cls.includes.pop(index)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue