From 92a6feab5910b79967c90782476fa89d04fb3aca Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Fri, 5 Dec 2008 13:26:14 +0100 Subject: [PATCH] =?UTF-8?q?[gestion/gen=5Fconfs/autostatus]=20Retrait=20du?= =?UTF-8?q?=20kvm=20+=20quelques=20am=C3=A9liorations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Améliorations qui permettront un formattage plus aisé du local.status sur le wiki. darcs-hash:20081205122614-bd074-0ea69cbad524fa0b0ba0614386471dc00b41aa32.gz --- gestion/gen_confs/autostatus.py | 81 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/gestion/gen_confs/autostatus.py b/gestion/gen_confs/autostatus.py index 17bcb1b2..92e65ed0 100755 --- a/gestion/gen_confs/autostatus.py +++ b/gestion/gen_confs/autostatus.py @@ -16,10 +16,10 @@ from gen_confs import gen_config # définition de la classe class autostatus(gen_config) : - + # CONFIGURATION # ################# - + # fichier de l'autostatus CONFFILE = '/etc/autostatus/hosts' @@ -35,6 +35,7 @@ class autostatus(gen_config) : "radius-test.crans.org", "rhum.crans.org", "rhum.adm.crans.org", + "kvm.adm.crans.org", # Switch du G "batg-0.adm.crans.org", @@ -52,7 +53,7 @@ class autostatus(gen_config) : ] - + # matrice du fichier d'autostatus matrice = """# Format : name address depend,list contact description @@ -66,46 +67,40 @@ class autostatus(gen_config) : # serveurs du crans # ##################### -%%HTML:

-%%HTML: Serveurs : +%%HTML:

Serveurs : %(serveurs)s # ferme # ######### -%%HTML:

-%%HTML: La ferme, diffusion de la télé : +%%HTML:

La ferme, diffusion de la télé : %(ferme)s # switchs # ########### -%%HTML:

-%%HTML: Switchs : +%%HTML:

Switchs : %(switchs)s # bornes wifi # ############### -%%HTML:

-%%HTML: Bornes wifi : +%%HTML:

Bornes wifi : %(bornes)s # Sites web et Services # ######################### -%%HTML:

-%%HTML: Sites web et Services HORS de l'ENS: -%%HTML: (21:FTP ; 80:HTTP) - +%%HTML:

Sites web et Services HORS de l'ENS: (21:FTP ; 80:HTTP) + %(exterieur)s """ # quelque descriptions de routeurs triés par IP (pour la route vers l'extérieur) - + infos_routeurs = {} infos_routeurs [ '138.231.136.4' ] = ['Komaz', 'Routeur principal du CRANS'] infos_routeurs [ '138.231.135.5' ] = ['IRTS', 'Routeur de l\'ENS assurant la liaison CRANS<->ENS'] @@ -118,17 +113,17 @@ class autostatus(gen_config) : # services extérieurs (triés par clé de dictionnaire) # format [ nom, ip, port(0=ping), description ] - + services_exterieurs = {} services_exterieurs ['Videolan'] = [ 'Videolan', '88.191.250.2', 21, 'Le serveur FTP de Videolan. (Chatenay-Malabry, France)', 'nobody'] services_exterieurs ['Free'] = [ 'Free', '212.27.60.27', 21, 'Le serveur FTP de free. (France)', 'nobody' ] services_exterieurs ['Monde'] = [ 'Monde', '193.51.224.7', 80, 'Est-ce que LeMonde.fr fonctionne ? (France)', 'nobody' ] services_exterieurs ['Yahoo!'] = [ 'Yahoo!', '68.142.226.50', 80, 'Est-ce que Yahoo! fonctionne ? (USA)', 'nobody' ] services_exterieurs ['Google'] = [ 'Google', '216.239.59.99', 80, 'Est-ce que Google fonctionne ? (USA)', 'nobody' ] - + # personnes à informer pour l'indiponibilité de certains serveurs contact = {} - + # service à redémarer restart_cmd = "" @@ -136,7 +131,7 @@ class autostatus(gen_config) : def __str__ (self) : return "autostatus" - + def make_config (self, dico ) : """ Transforme le dico en suite lignes de configuration @@ -154,12 +149,12 @@ class autostatus(gen_config) : return self.contact[nom] else : return 'nobody' - + def _gen (self) : # machines crans ################ - + machines = AssociationCrans().machines() # Quand un serveur est à la fois dans adm et dans autre chose, # on garde que le autre chose @@ -171,20 +166,20 @@ class autostatus(gen_config) : if n.nom() == nom_adm: machines2 = filter(lambda x: x.nom() != nom_adm, machines2) machines = machines2 - + # tri des machines par type bornes = {} switchs = {} serveurs = {} ferme = {} - + # tri des machines for m in machines : # machine exclue if m.nom() in self.pasimportant : continue - + # les bornes if isinstance(m, BorneWifi): # C'est une borne @@ -209,7 +204,7 @@ class autostatus(gen_config) : index = '1-' + m.nom().split(".")[0] else : index = '0-' + m.nom().split(".")[0] - + # on ajoute au dictionnaire switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] @@ -220,7 +215,7 @@ class autostatus(gen_config) : ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] else : ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] - + # les serveurs else : if ".wifi.crans.org" in m.nom() : @@ -231,33 +226,33 @@ class autostatus(gen_config) : serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] else : serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] - + # route vers l'extérieur ######################## - + # on récupère la route vers l'extérieur traceroute = commands.getoutput("/usr/bin/traceroute www.free.fr 2> /dev/null | sed 's/\*//g' | sed 's/ */ /g' | sed 's/^ //g' | sed 's/[(,)]//g' | cut -d ' ' -f 2,3").split("\n") - + # initialisation des variables in_renater = 0 route_to_ext = '' depends_to_ext = '' - + for routeur in traceroute : - + # on commence à rentrer dans la chaine des routeurs renater if 'renater.fr' in routeur : in_renater = 1 - + # on est plus dans les routeurs renater donc on arrête if in_renater and not 'renater.fr' in routeur : continue - + # ajout du routeur - + # ip tmp_ip = routeur.split(' ')[1] - + # nom & desciption if routeur.split(' ')[1] in self.infos_routeurs.keys() : tmp_name = self.infos_routeurs[tmp_ip][0] @@ -265,7 +260,7 @@ class autostatus(gen_config) : else : tmp_name = routeur.split(' ')[0].split('.')[0] tmp_desc = 'Pas de description' - + # dépendances if not depends_to_ext : tmp_depends = 'none' @@ -273,7 +268,7 @@ class autostatus(gen_config) : else : tmp_depends = depends_to_ext depends_to_ext += ',' + tmp_name - + # on l'ajoute à la route if route_to_ext : route_to_ext += '\n' @@ -281,7 +276,7 @@ class autostatus(gen_config) : # services extérieurs ##################### - + services_exterieurs = {} for key in self.services_exterieurs.keys() : s = self.services_exterieurs[key] @@ -292,9 +287,9 @@ class autostatus(gen_config) : # génération du fichier ####################### - + file = self._open_conf(self.CONFFILE, "#") - + # génère le dictionnaire pour les modifications dico = {} dico['switchs'] = self.make_config(switchs) @@ -303,9 +298,9 @@ class autostatus(gen_config) : dico['ferme'] = self.make_config(ferme) dico['route'] = route_to_ext.encode('iso-8859-15') dico['exterieur'] = self.make_config(services_exterieurs) - + # on écrit dans le fichier de configuration file.write( self.matrice % dico ) - + # on ferme le fichier file.close()