Utilisation des listes d'ip precalculees

darcs-hash:20070521191029-c992d-736403ea227de4e2bf2862d42bac5fb76cd996a9.gz
This commit is contained in:
bos 2007-05-21 21:10:29 +02:00
parent ddf12f6a1a
commit 826beec2e9

View file

@ -18,6 +18,7 @@ from chgpass import chgpass
from affich_tools import coul, prompt, cprint
from email_tools import send_email
from syslog import *
from numeros_disponibles import lister_ip_dispo
date_format = '%d/%m/%Y %H:%M'
hostname = gethostname().split(".")[0]
@ -2668,37 +2669,21 @@ class Machine(BaseClasseCrans):
# Dans quel réseau la machine doit-elle être placée ?
if isinstance(self, MachineWifi):
net = config.NETs['wifi-adh']
pool_ip = lister_ip_dispo('wifi-adh')
elif isinstance(self, BorneWifi):
net = config.NETs['bornes']
pool_ip = lister_ip_dispo('bornes')
elif isinstance(self.proprietaire(), AssociationCrans):
net = [ '0.0.0.0/0' ]
pool_ip = lister_ip_dispo('all')
else:
try:
net = config.NETs[self.proprietaire().chbre()[0].lower()]
pool_ip = lister_ip_dispo(self.proprietaire().chbre()[0].lower())
except:
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
if ip == '<automatique>':
pool_ip = [] # Pool d'IP à tester
for ne in net:
ip = ne.split('/')[0]
ip = ip.split('.')
n = []
for i in ip:
n.append(int(i))
while 1:
if n[3] < 255:
n[3] += 1
else:
n[2] += 1
n[3] = 0
if n[2] == 255: break
ip = "%d.%d.%d.%d" % tuple(n)
if not iptools.AddrInNet(ip, ne):
# On est allé trop loin
break
pool_ip.append(ip)
# On va prendre choisir une IP au hasard dans le pool des IP dispo
random.shuffle(pool_ip)
while len(pool_ip) > 0: