diff --git a/objets.py b/objets.py index cd7d68b..b2404e8 100644 --- a/objets.py +++ b/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])