detabification

darcs-hash:20051008142154-4ec08-7996c0fc50b2714b57f4cd4b1ecee5336b690b8e.gz
This commit is contained in:
chove 2005-10-08 16:21:54 +02:00
parent 1ea8baa225
commit 9bfdf242c0

View file

@ -24,8 +24,8 @@ def NotRunningHosts() :
""" """
hosts = [] hosts = []
for host in os.listdir(statusfolder) : for host in os.listdir(statusfolder) :
if os.path.getmtime('/usr/scripts/monit/status/%s' % host) < time.time() - 180 : if os.path.getmtime('/usr/scripts/monit/status/%s' % host) < time.time() - 180 :
hosts.append(host) hosts.append(host)
return hosts return hosts
def HostStatus (host) : def HostStatus (host) :
@ -40,27 +40,27 @@ def HostStatus (host) :
s = None s = None
for line in f.readlines()[2:] : for line in f.readlines()[2:] :
line = line.strip() line = line.strip()
if not line : if not line :
# ligne vide, on passe au service suivant # ligne vide, on passe au service suivant
s = None s = None
elif not s : elif not s :
# création d'un nouveau service # création d'un nouveau service
s = line.split(' ')[1][1:-1] s = line.split(' ')[1][1:-1]
t = line.split(' ')[0] t = line.split(' ')[0]
# ajout du type s'il n'est pas dedans # ajout du type s'il n'est pas dedans
if not status.has_key(t) : if not status.has_key(t) :
status[t] = {} status[t] = {}
status[t][s] = {} status[t][s] = {}
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')
except : except :
pass pass
return status return status
@ -70,7 +70,7 @@ def AllStatus () :
""" """
status = {} status = {}
for host in os.listdir(statusfolder) : for host in os.listdir(statusfolder) :
status[host] = HostStatus(host) status[host] = HostStatus(host)
return status return status
def AllStatusOff () : def AllStatusOff () :
@ -81,27 +81,27 @@ def AllStatusOff () :
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)
# reste-t-il des services dans le groupe # reste-t-il des services dans le groupe
if not status[h][t] : if not status[h][t] :
status[h].pop(t) status[h].pop(t)
# reste-t-il des groupes dans l'hote # reste-t-il des groupes dans l'hote
if not status[h] : if not status[h] :
status.pop(h) status.pop(h)
return status return status
@ -118,17 +118,17 @@ def FormatService(Type, Service, Data, f) :
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'})
if Type == 'Device' : if Type == 'Device' :
Service = Service[2:] Service = Service[2:]
elif Type == 'File' : elif Type == 'File' :
Service = Service[4:] Service = Service[4:]
result += f.strong(1) result += f.strong(1)
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'})
result += f.text(Data['status']) result += f.text(Data['status'])
result += f.table_cell(0) result += f.table_cell(0)
result += f.table_row(0) result += f.table_row(0)
@ -148,11 +148,11 @@ def FormatType(Type, Data, f) :
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
@ -174,16 +174,16 @@ def FormatHost (Host, Data, f) :
# 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
@ -198,8 +198,8 @@ def FormatHosts(Data, f) :
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) :
@ -223,52 +223,52 @@ def execute(macro, filtre) :
# 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()
if status : if status :
return FormatHosts(status, f) return FormatHosts(status, f)
else : else :
# aucun service off, on affiche OK # aucun service off, on affiche OK
return Cellule(u'Tous les services semblent opérationels.','lime',f) return Cellule(u'Tous les services semblent opérationels.','lime',f)
elif filtre == 'all' : elif filtre == 'all' :
# 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)