Projet

Général

Profil

Scénario #29088

Mis à jour par Joël Cuissinat il y a plus de 4 ans

h3. Extrait de la demande originale d'Arnaud Grossir

Bonjour,

Nous avons un serveur thot 2.6.2 mis à jour avec le dernier paquet python-eoleaaf (2.6.2-23)
un "aaf-complet" s'est bien passé (en tout cas je n'ai pas remarqué d'erreurs)
le lendemain, un "aaf-complet-maj" (nous utilisons des extraction AAF complètes) m'a remonté de nouvelles erreurs:

[ ... ]

3) erreur non bloquante mais génératrice d'incohérences (une partie du point 5 de ma dernière demande) (nb : #28733)

Certains enseignants ont des cours sur deux établissements (leur établissement de rattachement + un autre), mais lors
de l'aaf-complet-maj, les fichiers finaux ldif contiennent bien les deux lignes attendues mais elles ne sont pas cohérentes.
(j'ai repéré pour les professeurs les attributs
"ENTAuxEnsMatiereEnseignEtab" et "ENTAuxEnsClasses", mais il y en a peut-être d'autres...)

J'ai donc vérifié pour une enseignante de musique qui a ce problème (j'ai anonymisé la personne):

-le fichier AAF est correct elle a un etablissement de rattachement:1535 et un autre établissement ou elle dispense des cours également:1441
<pre>
<addRequest>
<operationalAttributes><attr name="categoriePersonne"><value>PersEducNat</value></attr></operationalAttributes>
<identifier><id>15381</id></identifier>
<attributes>
<attr name="ENTPersonJointure"><value>15381</value></attr>
<attr name="ENTPersonDateNaissance"><value>XXXXXXXXXX</value></attr>
<attr name="ENTPersonNomPatro"><value>XXXXXXXX</value></attr>
<attr name="sn"><value>XXXXXXXX</value></attr>
<attr name="givenName"><value>XXXXXXX</value></attr>
<attr name="personalTitle"><value>Mme</value></attr>
<attr name="mail"><value>XXXXXXXXXXXX</value></attr>
<attr name="ENTPersonStructRattach"><value>1535</value></attr>
<attr name="ENTAuxEnsCategoDiscipline"><value>17$EDUCATION MUSICALE</value></attr>
<attr name="ENTAuxEnsDisciplinesPoste"><value>EDUCATION MUSICALE$17</value></attr>
<attr name="ENTAuxEnsMEF"><value>1535$10310019110$3EME</value><value>1535$1031001911U$3EME ULIS</value><value>1535$1021000111U$4EME ULIS</value><value>1535$10210001110$4EME</value><value>1535$10110001110$5EME</value><value>1535$1011000111U$5EME ULIS</value><value>1535$10010012110$6EME</value><value>1535$1001001211U$6EME ULIS</value><value>1441$10210001110$4EME</value><value>1441$1021000111U$4EME ULIS</value><value>1441$10210001117$4EME SPORTIVE</value><value>1441$10010012110$6EME</value><value>1441$10010012117$6EME SPORTIVE</value></attr>
<attr name="ENTAuxEnsMatiereEnseignEtab"><value>1535$EDUCATION MUSICALE</value><value>1441$EDUCATION MUSICALE</value></attr>
<attr name="ENTAuxEnsClasses"><value>1535$3A</value><value>1535$3B</value><value>1535$3C</value><value>1535$4A</value><value>1535$4B</value><value>1535$4C</value><value>1535$5A</value><value>1535$5B</value><value>1535$5C</value><value>1535$6A</value><value>1535$6B</value><value>1535$6C</value><value>1441$42</value><value>1441$46</value><value>1441$67</value><value>1441$68</value></attr>
<attr name="ENTAuxEnsGroupes"><value/></attr>
<attr name="ENTAuxEnsClassesMatieres"><value>1535$3A$081300</value><value>1535$3B$081300</value><value>1535$3C$081300</value><value>1535$4A$081300</value><value>1535$4B$081300</value><value>1535$4C$081300</value><value>1535$5A$081300</value><value>1535$5B$081300</value><value>1535$5C$081300</value><value>1535$6A$081300</value><value>1535$6B$081300</value><value>1535$6C$081300</value><value>1441$42$081300</value><value>1441$46$081300</value><value>1441$67$081300</value><value>1441$68$081300</value></attr>
<attr name="ENTAuxEnsGroupesMatieres"><value/></attr>
<attr name="ENTAuxEnsClassesPrincipal"><value/></attr>
<attr name="ENTPersonFonctions"><value>1535$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE</value><value>1441$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE</value></attr>
<attr name="ENTPersonCategorieEnseignant"><value>O</value></attr>
<attr name="PersEducNatPresenceDevantEleves"><value>O</value></attr>
</attributes>
</addRequest>
</pre>

La base eoleaaf est correcte, et contient de bons renseignements. Vous remarquerez que j'ai également récupéré l'ENTPersonFonctions... vous verrez pourquoi ensuite.
<pre>
mysql> select ENTPersonFonctions from enseignant where uid='DKS99535';
+-----------------------------------------------------------------------------------------------+
| ENTPersonFonctions |
+-----------------------------------------------------------------------------------------------+
| 1535$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE
1441$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE |
+-----------------------------------------------------------------------------------------------+
1 row in set (0,01 sec)

mysql> select ENTAuxEnsMatiereEnseignEtab from enseignant where uid='DKS99535';
+-------------------------------------------------+
| ENTAuxEnsMatiereEnseignEtab |
+-------------------------------------------------+
| 1535$EDUCATION MUSICALE
1441$EDUCATION MUSICALE |
+-------------------------------------------------+
1 row in set (0,00 sec)
</pre>

Ensuite c'est là que ça se complique, le traitement mysql->fichiers ldif ne prend que l'autre établissement (1441) alors que l'attribut
ENTPersonFonctions est correct (comme s'il passait par un autre traitement dans les scripts python):
<pre>
dn: uid=DKS99535,ou=personnes,dc=enoe,dc=net
changetype: modify
etc etc...
-
replace: ENTPersonStructRattach
ENTPersonStructRattach: cn=s1535,ou=structures,dc=enoe,dc=net
-
replace: ENTPersonFonctions
ENTPersonFonctions: 1535$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE
ENTPersonFonctions: 1441$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE
-
replace: ENTPersonDateNaissance
ENTPersonDateNaissance: 14/04/1978
-
replace: ENTAuxEnsCategoDiscipline
ENTAuxEnsCategoDiscipline: 17$EDUCATION MUSICALE
-
replace: ENTAuxEnsMatiereEnseignEtab
ENTAuxEnsMatiereEnseignEtab: cn=s1441,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE
ENTAuxEnsMatiereEnseignEtab: cn=s1441,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE
-
replace: ENTAuxEnsClasses
ENTAuxEnsClasses: cn=s1441,ou=structures,dc=enoe,dc=net$3A$3B$3C$4A$4B$4C$5A$5B$5C$6A$6B$6C
ENTAuxEnsClasses: cn=s1441,ou=structures,dc=enoe,dc=net$42$46$67$68
</pre>

et dans le ldap (l'annuaire en cours sur Thot) j'ai ceci, (c'est l'établissement principal qui 1535 qui est présent à des places où l'on devrait trouver 1441):

<pre>
ENTPersonStructRattach: cn=s1535,ou=structures,dc=enoe,dc=net
ENTPersonFonctions: 1535$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE
ENTPersonFonctions: 1441$ENS$ENSEIGNEMENT$L1700$EDUCATION MUSICALE
etc etc
ENTAuxEnsCategoDiscipline: 17$EDUCATION MUSICALE
ENTAuxEnsMatiereEnseignEtab: cn=s1535,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE
ENTAuxEnsMatiereEnseignEtab: cn=s1535,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE
ENTAuxEnsClasses: cn=s1535,ou=structures,dc=enoe,dc=net$3A$3B$3C$4A$4B$4C$5A$5
B$5C$6A$6B$6C
ENTAuxEnsClasses: cn=s1535,ou=structures,dc=enoe,dc=net$42$46$67$68
</pre>
</pre>

C'est assez déroutant, on dirait (ce n'est qu'une supposition)
- que aaf-complet met l'établissement de rattachement (1535) à la place du second etablissement (1441)
- que aaf-complet-maj fait exactement l'inverse

D'autre part, je ne comprend pas comment on peut avoir ces deux valeurs identiques dans l'annuaire actif, ça devrait soulever une erreur ?!:
ENTAuxEnsMatiereEnseignEtab: cn=s1535,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE
ENTAuxEnsMatiereEnseignEtab: cn=s1535,ou=structures,dc=enoe,dc=net$EDUCATION MUSICALE

Voilà, merci encore pour le travail déjà effectué.. et pour celui arrive en cet instant !

Cordialement

h3. Solutions à mettre en œuvre

* implémenter les évolutions sur EOLE >= 2.6.2
* reproduire étudier et corriger le problème
* tester la non régression dans le test Jenkins -"test-thot-aaf-complet-1901":https://dev-eole.ac-dijon.fr/jenkins/job/2.6.2/job/test-thot-aaf-complet-1901-2.6.2-amd64/- "test-thot-aaf-complet-1901":https://dev-eole.ac-dijon.fr/jenkins/job/2.6.2/job/test-thot-aaf-complet-1901-2.6.2-amd64/

h3. Critères d'acceptation

-le le test Jenkins "test-thot-aaf-complet-1901":https://dev-eole.ac-dijon.fr/jenkins/job/2.6.2/job/test-thot-aaf-complet-1901-2.6.2-amd64/ est passant-
le test Jenkins "test-thot-aaf-delta-1511":https://dev-eole.ac-dijon.fr/jenkins/job/2.6.2/job/test-thot-aaf-delta-1511-2.6.2-amd64/
est passant

Retour