Selection aleatoire de l'UID (plus rapide, evite de trop reutiliser

les UID qui ont exist). L'UID est pris entre 1001 et 9999 alors qu'il
peut tre pris entre 500 et 32000 et quelques.

Correction d'un bug sur le choix de l'IP (boucle sans fin).

darcs-hash:20051201182839-d1718-136ed32dc7cdcd4388783f4cb1fbb7389c9e3b69.gz
This commit is contained in:
bernat 2005-12-01 19:28:39 +01:00
parent 133d5bc92d
commit e7ee4a3e5e

View file

@ -1737,10 +1737,18 @@ class adherent(base_proprietaire):
if uidNumber:
if self.exist('(uidNumber=%s)' % uidNumber):
raise ValueError(u'uidNumber pris')
else:
uidNumber = 1000
while self.exist('(uidNumber=%s)' % uidNumber):
uidNumber += 1
else:
pool_uid = range(1001,9999)
random.shuffle(pool_uid)
while len(pool_uid) > 0:
uidNumber = pool_uid.pop() # On choisit une IP
if not self.exist('(uidNumber=%s)'):
# On a trouvé un uid libre
pool_uid.append(uidNumber)
break
if not len(pool_uid):
raise ValueError(u'Plus d\'uid disponibles !')
try:
self.lock('uidNumber',str(uidNumber))
except:
@ -2224,15 +2232,15 @@ class machine(base_classes_crans):
pool_ip.append(ip)
# On va prendre choisir une IP au hasard dans le pool des IP dispo
ip = ''
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
pool_ip.append(ip)
break
if ip =='':
if not len(pool_ip):
raise RuntimeError(u'Plus d\'IP libres dans %s.' % string.join(net,' et ') )
else: