From 53bddc87b2a201d47b90e9472a089eeed47b3c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Sun, 11 Oct 2015 14:42:25 +0200 Subject: [PATCH] Fait en sorte que all_switchs ne forge pas les noms des switches --- gestion/annuaires_pg.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/gestion/annuaires_pg.py b/gestion/annuaires_pg.py index c9774cda..263d92e5 100644 --- a/gestion/annuaires_pg.py +++ b/gestion/annuaires_pg.py @@ -2,8 +2,11 @@ import os import psycopg2 + from functools import wraps + import time +import socket conn = None # : échec définitif, on raise une exception direct @@ -279,6 +282,26 @@ _HIDDEN_SWITCHES = [ 'batv-0.adm.crans.org', ] +def guess_switch_fqdn(switch_name): + """Retourne le FQDN d'un switch à partir de son nom""" + + try: + return socket.gethostbyname_ex(switch_name)[0] + except socket.gaierror: + pass + + try: + return socket.gethostbyname_ex(switch_name + ".adm.crans.org")[0] + except socket.gaierror: + pass + + try: + return socket.gethostbyname_ex(switch_name + ".crans.org")[0] + except socket.gaierror: + pass + + raise socket.gaierror + def all_switchs(bat=None, hide=_SPECIAL_SWITCHES + _HIDDEN_SWITCHES): """Retourne la liste des switchs pour un batiment. @@ -295,7 +318,12 @@ def all_switchs(bat=None, hide=_SPECIAL_SWITCHES + _HIDDEN_SWITCHES): for b in bat: indexes = set(n/100 for n in uplink_prises[b]) for i in indexes: - hostname = "bat%s-%s.adm.crans.org" % (b, i) + switch_name = "bat%s-%s" % (b, i) + try: + hostname = guess_switch_fqdn(switch_name) + except socket.gaierror: + print "Le switch %s ne semble pas exister." % (switch_name,) + continue if hostname not in hide: switchs.append(hostname) # on ajoute quand-même le backbone et/ou multiprise-v6 si demandé