[global/rid] J'ai essayé de mettre en place une bijection realm <-> NETs <-> rid
* Les rid sont maintenant des listes de tuples. * Il faut utiliser crans_utils.find_rid_plage, et crans_utils.find_ipv4_plage qui renvoient le realm d'un rid/d'une ipv4, et la plage associée (un tuple ou un slash ipv4). * Pour les anciens scripts, j'ai mis find_rid_plage dans ridtools, il faut l'utiliser également à la place des boucles for tp, (begin, end) in config.rid.iteritems()... * J'ai essayé de faire attention à tout ce que ça aurait pu casser, mais ce n'est pas garanti
This commit is contained in:
parent
e2a4cfe72a
commit
a442fd6b22
7 changed files with 108 additions and 71 deletions
|
@ -58,11 +58,8 @@ class Rid(object):
|
|||
"""Peuple les champs de l'instance par rapport au rid"""
|
||||
self.rid = rid
|
||||
|
||||
for tp, (start, end) in config.rid.iteritems():
|
||||
if start <= rid <= end:
|
||||
self.type = tp
|
||||
break
|
||||
else:
|
||||
self.type = find_rid_plage(int(rid))
|
||||
if self.type == 'Inconnu':
|
||||
raise ValueError("rid inconnu : %d" % rid)
|
||||
|
||||
self.ipv4_dispo = (rid & (1 << 15)) == 0 and self.type != 'special' or self.rid in config.rid_machines_speciales
|
||||
|
@ -149,3 +146,17 @@ class Rid(object):
|
|||
|
||||
def __int__(self):
|
||||
return self.rid
|
||||
|
||||
def find_rid_plage(rid):
|
||||
"""Trouve la plage du rid fourni"""
|
||||
for (tp, plages) in config.rid_primaires.iteritems():
|
||||
if isinstance(plages, list):
|
||||
for begin, end in plages:
|
||||
if begin <= rid <= end:
|
||||
return tp, (begin, end)
|
||||
else:
|
||||
(begin, end) = plages
|
||||
if begin <= rid <= end:
|
||||
return tp, (begin, end)
|
||||
else:
|
||||
return "Inconnu", (0, 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue