[wiki/macro/MonitStatus.py] s/\s*$//

darcs-hash:20081117104058-bd074-4f1c5947bcf9678906c0083773c764f8ed05dfbe.gz
This commit is contained in:
Antoine Durand-Gasselin 2008-11-17 11:40:58 +01:00
parent 9a4383c723
commit 0cdf65b8bf

View file

@ -5,7 +5,7 @@ import os, sys, sre, commands, time
""" """
Permet d'intégrer au wiki les résultats de Monit. Permet d'intégrer au wiki les résultats de Monit.
La macro wiki est : La macro wiki est :
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]] [[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
Exemple : Exemple :
@ -30,14 +30,14 @@ def HostStatus (host) :
Retourne un dictionnaire représentation de l'état des services de Retourne un dictionnaire représentation de l'état des services de
la machine. la machine.
""" """
status = {} status = {}
f = open('%s/%s' % (statusfolder,host) ) f = open('%s/%s' % (statusfolder,host) )
# c'est un hote sous Debian # c'est un hote sous Debian
########################### ###########################
# s est le service qu'on est en trainde parser # s est le service qu'on est en trainde parser
s = None s = None
for line in f.readlines()[2:] : for line in f.readlines()[2:] :
@ -56,7 +56,7 @@ def HostStatus (host) :
else : else :
# on ajoute les données # on ajoute les données
status[t][s][line[:34].strip()] = line[34:].strip() status[t][s][line[:34].strip()] = line[34:].strip()
# on supprime les données system # on supprime les données system
try : try :
status.pop('System') status.pop('System')
@ -78,20 +78,20 @@ def AllStatusOff () :
""" """
Retourne status avec juste les services off Retourne status avec juste les services off
""" """
status = AllStatus() status = AllStatus()
for h in status.keys() : for h in status.keys() :
# si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime # si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime
if h in NotRunningHosts() : if h in NotRunningHosts() :
continue continue
# on supprime les types # on supprime les types
for t in status[h].keys() : for t in status[h].keys() :
for s in status[h][t].keys() : for s in status[h][t].keys() :
# on supprime un status s'il est Up # on supprime un status s'il est Up
if status[h][t][s]['status'] in ['running','accessible'] : if status[h][t][s]['status'] in ['running','accessible'] :
status[h][t].pop(s) status[h][t].pop(s)
@ -114,7 +114,7 @@ def FormatService(Type, Service, Data, f) :
Data : dictionnaire contenant toutes les données Data[info] Data : dictionnaire contenant toutes les données Data[info]
f : formatter f : formatter
""" """
result = '' result = ''
result += f.table_row(1) result += f.table_row(1)
result += f.table_cell(1,{'style':'background-color:silver'}) result += f.table_cell(1,{'style':'background-color:silver'})
@ -126,7 +126,7 @@ def FormatService(Type, Service, Data, f) :
result += f.text(Service) result += f.text(Service)
result += f.strong(0) result += f.strong(0)
result += f.table_cell(0) result += f.table_cell(0)
if Data['status'] in ['running','accessible'] : if Data['status'] in ['running','accessible'] :
result += f.table_cell(1,{'style':'background-color:lime'}) result += f.table_cell(1,{'style':'background-color:lime'})
else : else :
result += f.table_cell(1,{'style':'background-color:red'}) result += f.table_cell(1,{'style':'background-color:red'})
@ -142,20 +142,20 @@ def FormatType(Type, Data, f) :
Data : dictionnaire contenant toutes les données Data[service][info] Data : dictionnaire contenant toutes les données Data[service][info]
f : formatter f : formatter
""" """
result = '' result = ''
# titre # titre
result += f.heading(1,3) result += f.heading(1,3)
result += f.text(Type) result += f.text(Type)
result += f.heading(0,3) result += f.heading(0,3)
# les services # les services
result += f.table(1) result += f.table(1)
for s in Data.keys() : for s in Data.keys() :
result += FormatService(Type,s,Data[s],f) result += FormatService(Type,s,Data[s],f)
result += f.table(0) result += f.table(0)
return result return result
def FormatHost (Host, Data, f) : def FormatHost (Host, Data, f) :
@ -165,42 +165,42 @@ def FormatHost (Host, Data, f) :
Data : dictionnaire contenant toutes les données Data[type][service][info] Data : dictionnaire contenant toutes les données Data[type][service][info]
f : formatter f : formatter
""" """
result = '' result = ''
# titre # titre
result += f.heading(1,2) result += f.heading(1,2)
result += f.text(Host)[0].upper() + f.text(Host)[1:] result += f.text(Host)[0].upper() + f.text(Host)[1:]
result += f.heading(0,2) result += f.heading(0,2)
# si monit ne tourne pas # si monit ne tourne pas
if Host in NotRunningHosts() : if Host in NotRunningHosts() :
return result + Cellule('Monit ne semble pas tourner sur %s' % Host,'yellow',f) return result + Cellule('Monit ne semble pas tourner sur %s' % Host,'yellow',f)
result += f.table(1) result += f.table(1)
result += f.table_row(1) result += f.table_row(1)
for t in Data.keys() : for t in Data.keys() :
result += f.table_cell(1,{'valign':'top'}) result += f.table_cell(1,{'valign':'top'})
result += FormatType(t,Data[t],f) result += FormatType(t,Data[t],f)
result += f.table_cell(0) result += f.table_cell(0)
result += f.table_row(0) result += f.table_row(0)
result += f.table(0) result += f.table(0)
return result return result
def FormatHosts(Data, f) : def FormatHosts(Data, f) :
""" """
Retourne le code HTML de tous les hotes fournis Retourne le code HTML de tous les hotes fournis
Data : dictionnaire contenant toutes les données Data[hote][type][service][info] Data : dictionnaire contenant toutes les données Data[hote][type][service][info]
f : formatter f : formatter
""" """
result = '' result = ''
for h in Data.keys() : for h in Data.keys() :
result += FormatHost(h,Data[h],f) result += FormatHost(h,Data[h],f)
return result return result
def Cellule(texte, couleur, f) : def Cellule(texte, couleur, f) :
@ -221,13 +221,13 @@ def execute(macro, filtre) :
Corps principal de la macro Corps principal de la macro
""" """
f = macro.formatter f = macro.formatter
# on met en forme le filtre # on met en forme le filtre
if not filtre : if not filtre :
filtre = 'all' filtre = 'all'
else : else :
filtre = filtre.lower() filtre = filtre.lower()
if filtre == 'off' : if filtre == 'off' :
# tous les services off # tous les services off
status = AllStatusOff() status = AllStatusOff()
@ -241,35 +241,35 @@ def execute(macro, filtre) :
# tous les services # tous les services
status = AllStatus() status = AllStatus()
return FormatHosts(status, f) return FormatHosts(status, f)
elif '@' in filtre : elif '@' in filtre :
# affichage d'un service simple # affichage d'un service simple
host = filtre.split('@')[1] host = filtre.split('@')[1]
service = filtre.split('@')[0] service = filtre.split('@')[0]
status = HostStatus(host) status = HostStatus(host)
# recherche du service dans la config # recherche du service dans la config
s = {} s = {}
for t in status.keys() : for t in status.keys() :
if service in status[t].keys() : if service in status[t].keys() :
s = status[t][service] s = status[t][service]
if not s : if not s :
# service non trouvé # service non trouvé
code = f.table_cell(0) code = f.table_cell(0)
code += f.table_cell(1,{'style':'background-color:yellow'}) code += f.table_cell(1,{'style':'background-color:yellow'})
code += f.text(u'Service introuvable') code += f.text(u'Service introuvable')
return code return code
# création de la chaine de retour # création de la chaine de retour
code = f.table_cell(0) code = f.table_cell(0)
if s['status'] in ['running','accessible'] : if s['status'] in ['running','accessible'] :
code += f.table_cell(1,{'style':'background-color:lime'}) code += f.table_cell(1,{'style':'background-color:lime'})
else : else :
code += f.table_cell(1,{'style':'background-color:red'}) code += f.table_cell(1,{'style':'background-color:red'})
code += f.text(s['status']) code += f.text(s['status'])
return code return code
else : else :
return Cellule('Erreur de filtre','yellow',f) return Cellule('Erreur de filtre','yellow',f)