On tire les IP au hasard : beaucoup plus rapide
darcs-hash:20040909065416-d1718-897656530fac43b6a46432b1114881dfd0a1e9ce.gz
This commit is contained in:
parent
91d18f5d33
commit
4b82930d86
1 changed files with 19 additions and 10 deletions
|
@ -31,6 +31,8 @@ from time import sleep,localtime
|
|||
|
||||
import ldap_secret
|
||||
|
||||
random.seed() # On initialise le générateur aléatoire
|
||||
|
||||
##################################################################################
|
||||
### Différent services redémarrables
|
||||
#dns, dhcp, firewall, bornes_wifi(nom_borne), conf_wifi, bl_carte_etudiant, switch(chbre)
|
||||
|
@ -1716,6 +1718,7 @@ class machine(base_classes_crans) :
|
|||
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('.')
|
||||
|
@ -1728,19 +1731,25 @@ class machine(base_classes_crans) :
|
|||
else :
|
||||
n[2] += 1
|
||||
n[3] = 0
|
||||
if n[2]==255 : raise RuntimeError(u'Impossible de trouver une IP libre.')
|
||||
ip = "%d.%d.%d.%d" % tuple(n)
|
||||
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:
|
||||
ip = pool_ip.pop() # On choisit une IP
|
||||
if not self.exist('ipHostNumber=%s' % ip) :
|
||||
# On a trouvé la première ip libre
|
||||
break
|
||||
|
||||
# Test final
|
||||
if not iptools.AddrInNet(ip,ne) :
|
||||
# Rien dans ce sous réseau
|
||||
ip = ''
|
||||
else :
|
||||
break
|
||||
|
||||
|
||||
if ip:
|
||||
# On a trouvé une IP
|
||||
break
|
||||
|
||||
if ip =='' :
|
||||
raise RuntimeError(u'Plus d\'IP libres dans %s.' % string.join(net,' et ') )
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue