[midtools, config] Gestion des mid spéciaux

darcs-hash:20100303173536-ffbb2-4b30bd34e5a8b6e9fd188ac1d0769f4bb256ff0b.gz
This commit is contained in:
Nicolas Dandrimont 2010-03-03 18:35:36 +01:00
parent 7249adbced
commit 4be294f884
2 changed files with 24 additions and 5 deletions

View file

@ -411,6 +411,14 @@ mid = {
'special' : (4096, 6143), 'special' : (4096, 6143),
} }
# mid pour les machines spéciales (classe 'special' ci-dessus)
mid_machines_speciales = {
# freebox.crans.org
4096: '82.225.39.54',
# ovh.crans.org
4097: '91.121.84.138',
}
# Les préfixes ipv6 # Les préfixes ipv6
prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ], prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ],
'serveurs' : [ '2a01:240:fe3d:0::/64'], 'serveurs' : [ '2a01:240:fe3d:0::/64'],

View file

@ -60,10 +60,11 @@ class Mid(object):
for tp, (start, end) in config.mid.iteritems(): for tp, (start, end) in config.mid.iteritems():
if start <= mid <= end: if start <= mid <= end:
self.type = tp self.type = tp
break
else: else:
raise ValueError("mid inconnu : %d" % mid) raise ValueError("mid inconnu : %d" % mid)
self.ipv4_dispo = (mid & (1 << 15)) == 0 and self.type != 'special' self.ipv4_dispo = (mid & (1 << 15)) == 0 and self.type != 'special' or self.mid in config.mid_machines_speciales
self.priv = (mid & (1 << 14)) != 0 self.priv = (mid & (1 << 14)) != 0
@ -91,9 +92,16 @@ class Mid(object):
break break
if self.type: if self.type:
break break
else:
for mid, ip_speciale in config.mid_machines_speciales.items():
if ip == netaddr.IPAddress(ip_speciale):
self.mid = mid
self.type = "special"
break
else: else:
raise ValueError("%s dans aucun des réseaux gérés par le Cr@ns..." % ip) raise ValueError("%s dans aucun des réseaux gérés par le Cr@ns..." % ip)
if not self.mid:
self.mid = config.mid[self.type][0] + ip.value - netaddr.IPNetwork(config.NETs[self.type][0]).value self.mid = config.mid[self.type][0] + ip.value - netaddr.IPNetwork(config.NETs[self.type][0]).value
if self.mid > config.mid[self.type][1]: if self.mid > config.mid[self.type][1]:
@ -113,8 +121,11 @@ class Mid(object):
raise ValueError("Pas d'adresse IPv4 disponible pour la machine %r" % self) raise ValueError("Pas d'adresse IPv4 disponible pour la machine %r" % self)
if not hasattr(self, '__ipv4'): if not hasattr(self, '__ipv4'):
if self.type != "special":
net = netaddr.IPNetwork(config.NETs[self.type][0]) net = netaddr.IPNetwork(config.NETs[self.type][0])
self.__ipv4 = netaddr.IPAddress(net.first + self.reste) self.__ipv4 = netaddr.IPAddress(net.first + self.reste)
else:
self.__ipv4 = netaddr.IPAddress(config.mid_machines_speciales[self.mid])
return self.__ipv4 return self.__ipv4