[objets.py] OK, I WILL EXPLAIN, DUDE !
* Quelques commentaires sur mon workaround pour les attributs liés.
This commit is contained in:
parent
4fbd45b66c
commit
aeb1a8086f
1 changed files with 18 additions and 4 deletions
22
objets.py
22
objets.py
|
@ -653,13 +653,18 @@ class machine(CransLdapObject):
|
|||
self._proprio._machines.remove(self)
|
||||
|
||||
def check_changes(self):
|
||||
""" EXPLAIN WAT U DO !!!"""
|
||||
"""Certaines propriétés sont liées les unes aux autres de façon non-
|
||||
intrinsèque à LDAP, parce qu'on veut qu'il en soit ainsi. Cette
|
||||
fonction crée un dictionnaire des choses qui devraient être modifiées,
|
||||
sbm, et le renvoie. Par exemple, si le rid devrait passer de 42 à 1337,
|
||||
alors la clef 'rid' de sbm contiendra le tuple (42, 1337)."""
|
||||
old = {}
|
||||
new = {}
|
||||
sbm = {'rid' : (), 'ipHostNumber' : (), 'ip6HostNumber' : ()}
|
||||
default = {'rid': -1, 'ipHostNumber': u'', 'macAddress': u''}
|
||||
for i in ['rid', 'ipHostNumber', 'macAddress']:
|
||||
# Try and may fail, then try again
|
||||
# On stocke dans old et new l'ancienne et la nouvelle
|
||||
# valeur de chaque attribut concerné.
|
||||
try:
|
||||
old[i] = self.attrs[i][0].value
|
||||
except:
|
||||
|
@ -668,6 +673,8 @@ class machine(CransLdapObject):
|
|||
new[i] = self._modifs[i][0].value
|
||||
except:
|
||||
new[i] = default[i]
|
||||
# Si le rid est changé, on met à jour ip4 et 6, en tenant compte
|
||||
# des éventuels changements de mac.
|
||||
if old['rid'] != new['rid']:
|
||||
nip4 = unicode(crans_utils.ip4_of_rid(new['rid']))
|
||||
oip4 = unicode(new['ipHostNumber'])
|
||||
|
@ -680,13 +687,17 @@ class machine(CransLdapObject):
|
|||
oip6 = u""
|
||||
if oip6 != nip6:
|
||||
sbm['ip6HostNumber'] = (oip6, nip6)
|
||||
# safer to cast everything to unicode
|
||||
# Les ipHostNumber sont des objets netaddr, on les cast en unicode
|
||||
# si l'ip4 a changé, il suffit de changer le rid, en effet, l'ip6 peut
|
||||
# subsister malgré tout. On retourne alors -1 pour le rid, et on fera
|
||||
# le changement adapté ensuite.
|
||||
elif unicode(old['ipHostNumber']) != unicode(new['ipHostNumber']):
|
||||
nrid = crans_utils.rid_of_ip4(new['ipHostNumber'])
|
||||
orid = new['rid']
|
||||
if nrid != orid:
|
||||
sbm['rid'] = (orid, nrid)
|
||||
# safer not to cast (…)
|
||||
# Les macAddress sont déjà des unicodes.
|
||||
# On change l'ip6
|
||||
elif old['macAddress'] != new['macAddress']:
|
||||
nip6 = unicode(crans_utils.ip6_of_mac(new['macAddress'], new['rid']))
|
||||
try:
|
||||
|
@ -700,6 +711,9 @@ class machine(CransLdapObject):
|
|||
def validate_changes(self):
|
||||
sbm = self.check_changes()
|
||||
if sbm['rid']:
|
||||
# Si le rid est à -1, on agit en conséquence si on a une ipv6.
|
||||
# Je me demande simplement pourquoi je l'ai pas fait au dessus, dans
|
||||
# check_changes.
|
||||
if sbm['rid'][1] == -1:
|
||||
try:
|
||||
ip6 = unicode(self._modifs['ip6HostNumber'][0])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue