[gestion/gen_confs/autostatus] Retrait du kvm + quelques améliorations
Améliorations qui permettront un formattage plus aisé du local.status sur le wiki. darcs-hash:20081205122614-bd074-0ea69cbad524fa0b0ba0614386471dc00b41aa32.gz
This commit is contained in:
parent
1d6dfd9ccb
commit
92a6feab59
1 changed files with 38 additions and 43 deletions
|
@ -16,10 +16,10 @@ from gen_confs import gen_config
|
||||||
# définition de la classe
|
# définition de la classe
|
||||||
|
|
||||||
class autostatus(gen_config) :
|
class autostatus(gen_config) :
|
||||||
|
|
||||||
# CONFIGURATION #
|
# CONFIGURATION #
|
||||||
#################
|
#################
|
||||||
|
|
||||||
# fichier de l'autostatus
|
# fichier de l'autostatus
|
||||||
CONFFILE = '/etc/autostatus/hosts'
|
CONFFILE = '/etc/autostatus/hosts'
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ class autostatus(gen_config) :
|
||||||
"radius-test.crans.org",
|
"radius-test.crans.org",
|
||||||
"rhum.crans.org",
|
"rhum.crans.org",
|
||||||
"rhum.adm.crans.org",
|
"rhum.adm.crans.org",
|
||||||
|
"kvm.adm.crans.org",
|
||||||
|
|
||||||
# Switch du G
|
# Switch du G
|
||||||
"batg-0.adm.crans.org",
|
"batg-0.adm.crans.org",
|
||||||
|
@ -52,7 +53,7 @@ class autostatus(gen_config) :
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# matrice du fichier d'autostatus
|
# matrice du fichier d'autostatus
|
||||||
matrice = """# Format : name address depend,list contact description
|
matrice = """# Format : name address depend,list contact description
|
||||||
|
|
||||||
|
@ -66,46 +67,40 @@ class autostatus(gen_config) :
|
||||||
# serveurs du crans #
|
# serveurs du crans #
|
||||||
#####################
|
#####################
|
||||||
|
|
||||||
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR>
|
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>Serveurs :</font></b></TR>
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Serveurs :</font></b></TR>
|
|
||||||
|
|
||||||
%(serveurs)s
|
%(serveurs)s
|
||||||
|
|
||||||
# ferme #
|
# ferme #
|
||||||
#########
|
#########
|
||||||
|
|
||||||
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR>
|
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>La ferme, diffusion de la télé :</font></b></TR>
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>La ferme, diffusion de la télé :</font></b></TR>
|
|
||||||
|
|
||||||
%(ferme)s
|
%(ferme)s
|
||||||
|
|
||||||
# switchs #
|
# switchs #
|
||||||
###########
|
###########
|
||||||
|
|
||||||
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR>
|
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>Switchs :</font></b></TR>
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Switchs :</font></b></TR>
|
|
||||||
|
|
||||||
%(switchs)s
|
%(switchs)s
|
||||||
|
|
||||||
# bornes wifi #
|
# bornes wifi #
|
||||||
###############
|
###############
|
||||||
|
|
||||||
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR>
|
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>Bornes wifi :</font></b></TR>
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Bornes wifi :</font></b></TR>
|
|
||||||
|
|
||||||
%(bornes)s
|
%(bornes)s
|
||||||
|
|
||||||
# Sites web et Services #
|
# Sites web et Services #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR>
|
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>Sites web et Services HORS de l'ENS:</font></b></TR> <TR><td colspan=3 class="table"><font size="2">(21:FTP ; 80:HTTP)</TR>
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Sites web et Services HORS de l'ENS:</font></b></TR>
|
|
||||||
%%HTML: <TR><td colspan=3 class="table"><font size="2">(21:FTP ; 80:HTTP)</TR>
|
|
||||||
|
|
||||||
%(exterieur)s
|
%(exterieur)s
|
||||||
"""
|
"""
|
||||||
# quelque descriptions de routeurs triés par IP (pour la route vers l'extérieur)
|
# quelque descriptions de routeurs triés par IP (pour la route vers l'extérieur)
|
||||||
|
|
||||||
infos_routeurs = {}
|
infos_routeurs = {}
|
||||||
infos_routeurs [ '138.231.136.4' ] = ['Komaz', 'Routeur principal du CRANS']
|
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']
|
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)
|
# services extérieurs (triés par clé de dictionnaire)
|
||||||
# format [ nom, ip, port(0=ping), description ]
|
# format [ nom, ip, port(0=ping), description ]
|
||||||
|
|
||||||
services_exterieurs = {}
|
services_exterieurs = {}
|
||||||
services_exterieurs ['Videolan'] = [ 'Videolan', '88.191.250.2', 21, 'Le serveur FTP de Videolan. (Chatenay-Malabry, France)', 'nobody']
|
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 ['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 ['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 ['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' ]
|
services_exterieurs ['Google'] = [ 'Google', '216.239.59.99', 80, 'Est-ce que Google fonctionne ? (USA)', 'nobody' ]
|
||||||
|
|
||||||
# personnes à informer pour l'indiponibilité de certains serveurs
|
# personnes à informer pour l'indiponibilité de certains serveurs
|
||||||
contact = {}
|
contact = {}
|
||||||
|
|
||||||
# service à redémarer
|
# service à redémarer
|
||||||
restart_cmd = ""
|
restart_cmd = ""
|
||||||
|
|
||||||
|
@ -136,7 +131,7 @@ class autostatus(gen_config) :
|
||||||
|
|
||||||
def __str__ (self) :
|
def __str__ (self) :
|
||||||
return "autostatus"
|
return "autostatus"
|
||||||
|
|
||||||
def make_config (self, dico ) :
|
def make_config (self, dico ) :
|
||||||
"""
|
"""
|
||||||
Transforme le dico en suite lignes de configuration
|
Transforme le dico en suite lignes de configuration
|
||||||
|
@ -154,12 +149,12 @@ class autostatus(gen_config) :
|
||||||
return self.contact[nom]
|
return self.contact[nom]
|
||||||
else :
|
else :
|
||||||
return 'nobody'
|
return 'nobody'
|
||||||
|
|
||||||
def _gen (self) :
|
def _gen (self) :
|
||||||
|
|
||||||
# machines crans
|
# machines crans
|
||||||
################
|
################
|
||||||
|
|
||||||
machines = AssociationCrans().machines()
|
machines = AssociationCrans().machines()
|
||||||
# Quand un serveur est à la fois dans adm et dans autre chose,
|
# Quand un serveur est à la fois dans adm et dans autre chose,
|
||||||
# on garde que le autre chose
|
# on garde que le autre chose
|
||||||
|
@ -171,20 +166,20 @@ class autostatus(gen_config) :
|
||||||
if n.nom() == nom_adm:
|
if n.nom() == nom_adm:
|
||||||
machines2 = filter(lambda x: x.nom() != nom_adm, machines2)
|
machines2 = filter(lambda x: x.nom() != nom_adm, machines2)
|
||||||
machines = machines2
|
machines = machines2
|
||||||
|
|
||||||
# tri des machines par type
|
# tri des machines par type
|
||||||
bornes = {}
|
bornes = {}
|
||||||
switchs = {}
|
switchs = {}
|
||||||
serveurs = {}
|
serveurs = {}
|
||||||
ferme = {}
|
ferme = {}
|
||||||
|
|
||||||
# tri des machines
|
# tri des machines
|
||||||
for m in machines :
|
for m in machines :
|
||||||
|
|
||||||
# machine exclue
|
# machine exclue
|
||||||
if m.nom() in self.pasimportant :
|
if m.nom() in self.pasimportant :
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# les bornes
|
# les bornes
|
||||||
if isinstance(m, BorneWifi):
|
if isinstance(m, BorneWifi):
|
||||||
# C'est une borne
|
# C'est une borne
|
||||||
|
@ -209,7 +204,7 @@ class autostatus(gen_config) :
|
||||||
index = '1-' + m.nom().split(".")[0]
|
index = '1-' + m.nom().split(".")[0]
|
||||||
else :
|
else :
|
||||||
index = '0-' + m.nom().split(".")[0]
|
index = '0-' + m.nom().split(".")[0]
|
||||||
|
|
||||||
# on ajoute au dictionnaire
|
# on ajoute au dictionnaire
|
||||||
switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
|
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] ]
|
ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
|
||||||
else :
|
else :
|
||||||
ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
|
ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
|
||||||
|
|
||||||
# les serveurs
|
# les serveurs
|
||||||
else :
|
else :
|
||||||
if ".wifi.crans.org" in m.nom() :
|
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] ]
|
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
|
||||||
else :
|
else :
|
||||||
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
|
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
|
||||||
|
|
||||||
# route vers l'extérieur
|
# route vers l'extérieur
|
||||||
########################
|
########################
|
||||||
|
|
||||||
# on récupère la 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")
|
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
|
# initialisation des variables
|
||||||
in_renater = 0
|
in_renater = 0
|
||||||
route_to_ext = ''
|
route_to_ext = ''
|
||||||
depends_to_ext = ''
|
depends_to_ext = ''
|
||||||
|
|
||||||
for routeur in traceroute :
|
for routeur in traceroute :
|
||||||
|
|
||||||
# on commence à rentrer dans la chaine des routeurs renater
|
# on commence à rentrer dans la chaine des routeurs renater
|
||||||
if 'renater.fr' in routeur :
|
if 'renater.fr' in routeur :
|
||||||
in_renater = 1
|
in_renater = 1
|
||||||
|
|
||||||
# on est plus dans les routeurs renater donc on arrête
|
# on est plus dans les routeurs renater donc on arrête
|
||||||
if in_renater and not 'renater.fr' in routeur :
|
if in_renater and not 'renater.fr' in routeur :
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# ajout du routeur
|
# ajout du routeur
|
||||||
|
|
||||||
# ip
|
# ip
|
||||||
tmp_ip = routeur.split(' ')[1]
|
tmp_ip = routeur.split(' ')[1]
|
||||||
|
|
||||||
# nom & desciption
|
# nom & desciption
|
||||||
if routeur.split(' ')[1] in self.infos_routeurs.keys() :
|
if routeur.split(' ')[1] in self.infos_routeurs.keys() :
|
||||||
tmp_name = self.infos_routeurs[tmp_ip][0]
|
tmp_name = self.infos_routeurs[tmp_ip][0]
|
||||||
|
@ -265,7 +260,7 @@ class autostatus(gen_config) :
|
||||||
else :
|
else :
|
||||||
tmp_name = routeur.split(' ')[0].split('.')[0]
|
tmp_name = routeur.split(' ')[0].split('.')[0]
|
||||||
tmp_desc = 'Pas de description'
|
tmp_desc = 'Pas de description'
|
||||||
|
|
||||||
# dépendances
|
# dépendances
|
||||||
if not depends_to_ext :
|
if not depends_to_ext :
|
||||||
tmp_depends = 'none'
|
tmp_depends = 'none'
|
||||||
|
@ -273,7 +268,7 @@ class autostatus(gen_config) :
|
||||||
else :
|
else :
|
||||||
tmp_depends = depends_to_ext
|
tmp_depends = depends_to_ext
|
||||||
depends_to_ext += ',' + tmp_name
|
depends_to_ext += ',' + tmp_name
|
||||||
|
|
||||||
# on l'ajoute à la route
|
# on l'ajoute à la route
|
||||||
if route_to_ext :
|
if route_to_ext :
|
||||||
route_to_ext += '\n'
|
route_to_ext += '\n'
|
||||||
|
@ -281,7 +276,7 @@ class autostatus(gen_config) :
|
||||||
|
|
||||||
# services extérieurs
|
# services extérieurs
|
||||||
#####################
|
#####################
|
||||||
|
|
||||||
services_exterieurs = {}
|
services_exterieurs = {}
|
||||||
for key in self.services_exterieurs.keys() :
|
for key in self.services_exterieurs.keys() :
|
||||||
s = self.services_exterieurs[key]
|
s = self.services_exterieurs[key]
|
||||||
|
@ -292,9 +287,9 @@ class autostatus(gen_config) :
|
||||||
|
|
||||||
# génération du fichier
|
# génération du fichier
|
||||||
#######################
|
#######################
|
||||||
|
|
||||||
file = self._open_conf(self.CONFFILE, "#")
|
file = self._open_conf(self.CONFFILE, "#")
|
||||||
|
|
||||||
# génère le dictionnaire pour les modifications
|
# génère le dictionnaire pour les modifications
|
||||||
dico = {}
|
dico = {}
|
||||||
dico['switchs'] = self.make_config(switchs)
|
dico['switchs'] = self.make_config(switchs)
|
||||||
|
@ -303,9 +298,9 @@ class autostatus(gen_config) :
|
||||||
dico['ferme'] = self.make_config(ferme)
|
dico['ferme'] = self.make_config(ferme)
|
||||||
dico['route'] = route_to_ext.encode('iso-8859-15')
|
dico['route'] = route_to_ext.encode('iso-8859-15')
|
||||||
dico['exterieur'] = self.make_config(services_exterieurs)
|
dico['exterieur'] = self.make_config(services_exterieurs)
|
||||||
|
|
||||||
# on écrit dans le fichier de configuration
|
# on écrit dans le fichier de configuration
|
||||||
file.write( self.matrice % dico )
|
file.write( self.matrice % dico )
|
||||||
|
|
||||||
# on ferme le fichier
|
# on ferme le fichier
|
||||||
file.close()
|
file.close()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue