ldap_crans: valeur "<automatique>" pour champ mac
Et on vire l'ipv6 dans ce cas.
This commit is contained in:
parent
5c9e740f73
commit
ff88440f2e
3 changed files with 22 additions and 3 deletions
|
@ -24,7 +24,11 @@ import netaddr
|
|||
|
||||
def mac_to_ipv6(ipv6_prefix, mac_address):
|
||||
"""Convert a MAC address (EUI48) to an IPv6 (prefix::EUI64)."""
|
||||
if mac_address == '<automatique>':
|
||||
return ''
|
||||
|
||||
if type(mac_address) in [str, unicode]:
|
||||
mac_address = netaddr.EUI(mac_address)
|
||||
addr = int(mac_address.bits(netaddr.mac_bare), 2)
|
||||
ip6addr = (((addr >> 24) ^ (1 << 17)) << 40) | (0xFFFE << 24) | (addr & 0xFFFFFF)
|
||||
n = netaddr.IPNetwork(ipv6_prefix)
|
||||
|
|
|
@ -223,6 +223,9 @@ def format_mac(mac):
|
|||
Le séparateur original peut être :, - ou rien
|
||||
Retourne la mac formatée.
|
||||
"""
|
||||
mac = mac.strip()
|
||||
if mac == '<automatique>':
|
||||
return mac
|
||||
l, mac = preattr(mac)
|
||||
mac = mac.strip().replace(' ','').replace("-", ":")
|
||||
if mac.count(":") == 5:
|
||||
|
@ -2863,6 +2866,10 @@ class Machine(BaseClasseCrans):
|
|||
|
||||
mac = format_mac(mac)
|
||||
|
||||
if mac == '<automatique>':
|
||||
multi_ok = True
|
||||
lock = False
|
||||
|
||||
# La MAC serait-elle une MAC à la con ?
|
||||
if mac == "00:04:4b:80:80:03":
|
||||
raise ValueError(u"Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.", 2)
|
||||
|
@ -2898,7 +2905,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
try:
|
||||
self._set('macAddress', [mac])
|
||||
if net.size > 1:
|
||||
self.ipv6(ip6tools.mac_to_ipv6(net, netaddr.EUI(mac)), lock)
|
||||
self.ipv6(ip6tools.mac_to_ipv6(net, mac), lock)
|
||||
else:
|
||||
self.ipv6(config.ipv6_machines_speciales[int(self.rid())], lock)
|
||||
except Exception as e:
|
||||
|
@ -3390,7 +3397,14 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
"""Retourne l'adresse IPv6 correspondant à la machine"""
|
||||
|
||||
if ipv6 == None:
|
||||
return netaddr.IPAddress(self._data.get('ip6HostNumber', [''])[0])
|
||||
if self._data.get('ip6HostNumber', []) == []:
|
||||
return None
|
||||
else:
|
||||
return netaddr.IPAddress(self._data.get('ip6HostNumber')[0])
|
||||
|
||||
if ipv6 == '':
|
||||
self._set('ip6HostNumber', [])
|
||||
return
|
||||
|
||||
ipv6 = str(ipv6)
|
||||
net = self.netv6()
|
||||
|
|
|
@ -670,6 +670,7 @@ def machine_details(machine) :
|
|||
|
||||
f+= coul(u'IP : ','gras') + "%s\t\t" %machine.ip()
|
||||
f+= coul(u'MAC : ','gras') + "%s\n" %machine.mac()
|
||||
if machine.ipv6() != None:
|
||||
f+= coul(u'IPv6 : ','gras') + "%s\n" %machine.ipv6()
|
||||
|
||||
if len(machine.sshFingerprint()) > 0 and aff_ssh:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue