diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index 34502833..ef352cde 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -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: