Fait en sorte que all_switchs ne forge pas les noms des switches

This commit is contained in:
Pierre-Elliott Bécue 2015-10-11 14:42:25 +02:00
parent d7c15ab14b
commit 53bddc87b2

View file

@ -2,8 +2,11 @@
import os import os
import psycopg2 import psycopg2
from functools import wraps from functools import wraps
import time import time
import socket
conn = None conn = None
# : échec définitif, on raise une exception direct # : échec définitif, on raise une exception direct
@ -279,6 +282,26 @@ _HIDDEN_SWITCHES = [
'batv-0.adm.crans.org', '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): def all_switchs(bat=None, hide=_SPECIAL_SWITCHES + _HIDDEN_SWITCHES):
"""Retourne la liste des switchs pour un batiment. """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: for b in bat:
indexes = set(n/100 for n in uplink_prises[b]) indexes = set(n/100 for n in uplink_prises[b])
for i in indexes: 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: if hostname not in hide:
switchs.append(hostname) switchs.append(hostname)
# on ajoute quand-même le backbone et/ou multiprise-v6 si demandé # on ajoute quand-même le backbone et/ou multiprise-v6 si demandé