Import initial !
darcs-hash:20040831131446-d1718-0734aa73d3b8481b3b4b861e447e85128e488e8a.gz
This commit is contained in:
parent
c9083dfd86
commit
6626a44f15
20 changed files with 6494 additions and 0 deletions
140
gestion/gen_confs/__init__.py
Executable file
140
gestion/gen_confs/__init__.py
Executable file
|
@ -0,0 +1,140 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
|
||||
""" Package pour la génération des fichiers de conf
|
||||
|
||||
Copyright (C) Frédéric Pauget
|
||||
Licence : GPLv2
|
||||
"""
|
||||
|
||||
import sys, os, signal
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
|
||||
import time, commands
|
||||
from affich_tools import *
|
||||
from lock import *
|
||||
|
||||
import config
|
||||
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
# Notes snmp
|
||||
oid = '.1.3.6.1.4.1.2021.255'
|
||||
try :
|
||||
if sys.argv[1] == '-s' and sys.argv[2] == oid :
|
||||
service = sys.argv[4].strip().strip('"')
|
||||
except :
|
||||
None
|
||||
# Fin notes snmp
|
||||
|
||||
class gen_config :
|
||||
""" Base pour toutes les classes de génération de fichiers de conf """
|
||||
base = None
|
||||
ann_scol = config.ann_scol
|
||||
debug = 0
|
||||
_locked = 0
|
||||
__restore={} # pour restorer la config d'origine en cas d'erreur de génération
|
||||
|
||||
def lock(self) :
|
||||
""" Lock le service courant """
|
||||
if not self._locked :
|
||||
make_lock(str(self.__class__),'')
|
||||
self._locked = 1
|
||||
|
||||
def unlock(self) :
|
||||
""" Supression du lock """
|
||||
if self._locked : remove_lock(str(self.__class__))
|
||||
|
||||
def __del__(self) :
|
||||
# Au cas où...
|
||||
self.unlock()
|
||||
|
||||
def _restore(self) :
|
||||
""" Affichage d'une erreur et du traceback si debug
|
||||
Puis restauration des fichers """
|
||||
print ERREUR
|
||||
if self.debug :
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
# Restauration
|
||||
for nom, f in self.__restore.items() :
|
||||
os.system('cp -f %s %s' % ( f.name, nom ) )
|
||||
|
||||
def _open_conf(self,nom,comment=None) :
|
||||
""" Créé un fichier
|
||||
si comment est fourni, insère une entète qui utilisera le caractère
|
||||
de commentaire fourni
|
||||
|
||||
copie l'ancien fichier dans un fichier temporaire pour permettre
|
||||
la restauration en cas d'échec de la configuration
|
||||
|
||||
Retourne le descripteur du fichier """
|
||||
|
||||
f = NamedTemporaryFile()
|
||||
os.system('cp %s %s 2> /dev/null' % ( nom, f.name ) )
|
||||
self.__restore[nom] = f
|
||||
|
||||
fd = open(nom, 'w')
|
||||
|
||||
if comment :
|
||||
e = """***********************************************************
|
||||
Ce fichier est généré par les scripts de %s
|
||||
Les données proviennent de la base LDAP et de la conf
|
||||
présente au début du script.
|
||||
|
||||
Génération : %s
|
||||
Fichier : %s
|
||||
|
||||
NE PAS EDITER
|
||||
|
||||
***********************************************************""" % \
|
||||
(__name__, nom, time.strftime('%A %d %B %Y %H:%M') )
|
||||
|
||||
e = comment + e.replace('\n', '\n%s' % comment) + '\n'
|
||||
fd.write(e)
|
||||
|
||||
return fd
|
||||
|
||||
def gen_conf(self) :
|
||||
""" Génération des fichiers de conf, retourne 1 si erreur """
|
||||
self.lock()
|
||||
self.anim = anim('\tgénération fichiers')
|
||||
try :
|
||||
warn = self._gen()
|
||||
if warn :
|
||||
self.anim.reinit()
|
||||
print WARNING
|
||||
if self.debug : sys.stderr.write(warn.encode("ISO-8859-15"))
|
||||
else :
|
||||
self.anim.reinit()
|
||||
print OK
|
||||
self.unlock()
|
||||
except :
|
||||
self.anim.reinit()
|
||||
self._restore()
|
||||
self.unlock()
|
||||
return 1
|
||||
|
||||
def restart(self) :
|
||||
""" Redémarrage du service concerné """
|
||||
self.lock()
|
||||
self.anim = anim('\trestart')
|
||||
status, output = commands.getstatusoutput(self.restart_cmd)
|
||||
if status :
|
||||
self.anim.reinit()
|
||||
print ERREUR
|
||||
if self.debug :
|
||||
sys.stderr.write(output+'\n')
|
||||
self.unlock()
|
||||
return 1
|
||||
else :
|
||||
print OK
|
||||
self.unlock()
|
||||
|
||||
def reconfigure(self) :
|
||||
""" Génère les fichiers puis redémarre le service
|
||||
si la génération c'est bien passée """
|
||||
cprint('Reconfiguration %s :' % self.__str__() , 'gras')
|
||||
if not self.gen_conf() :
|
||||
return self.restart()
|
||||
else : return 1
|
Loading…
Add table
Add a link
Reference in a new issue